#define DEFAULT_AUDIO_BUFFER_NUM 32 /* 370ms over */
#define DEFAULT_COMPUTE_BUFFER_BITS 6 /* ratio 1.45ms (44.1kHz) */
#define TWSYNG32INI 1 // use twsyng32.ini or timpp32g.ini ??
+#define USE_TWSYN_BRIDGE 1
#undef ANOTHER_MAIN
//#undef __W32G__ /* for Win32 GUI */
#undef IA_W32GUI /* for Win32 GUI */
#define DEFAULT_AUDIO_BUFFER_BITS 9 /* 512sample 11ms (44.1kHz) */
#define DEFAULT_AUDIO_BUFFER_NUM 32 /* 370ms over */
#define DEFAULT_COMPUTE_BUFFER_BITS 6 /* ratio 1.45ms (44.1kHz) */
+#undef USE_TWSYN_BRIDGE
/* #undef AU_NPIPE */
#undef AU_VORBIS
#undef AU_VORBIS_DLL
#define DEFAULT_COMPUTE_BUFFER_BITS 6 /* ratio 1.45ms (44.1kHz) */
#define TIMDRVINI 1 // use timdrv.ini or twsyng32.ini or timpp32g.ini ??
#define IA_WINSYN
+#undef USE_TWSYN_BRIDGE
//#undef AU_WASAPI
#undef AU_VORBIS
#undef AU_VORBIS_DLL
#define DEFAULT_COMPUTE_BUFFER_BITS 6 /* ratio 1.45ms (44.1kHz) */
#define TIMDRVINI 1 // use timdrv.ini or twsyng32.ini or timpp32g.ini ??
#define IA_WINSYN
+#undef USE_TWSYN_BRIDGE
#define WINDRV 1
#define AU_W32 1
#define AU_WASAPI 1
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
#include "timer.h"
#include "rtsyn.h"
+#ifdef USE_TWSYN_BRIDGE
+#include "twsyn_bridge_common.h"
+#include "twsyn_bridge_host.h"
+#endif
int rtsyn_portnumber=1;
unsigned int portID[MAX_PORT];
double mim_start_time;
-void CALLBACK MidiInProc(HMIDIIN,UINT,DWORD,DWORD,DWORD);
+void CALLBACK MidiInProc(HMIDIIN hMidiInL, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
void rtsyn_get_port_list(){
int i;
MIDIINCAPS InCaps;
- InNum = midiInGetNumDevs();
- for (i=1;i <=InNum && i<=32;i++){
- midiInGetDevCaps(i-1,(LPMIDIINCAPSA) &InCaps,sizeof(InCaps));
- sprintf(rtsyn_portlist[i-1],"%d:%s",i,(LPSTR)InCaps.szPname);
+
+#ifdef USE_TWSYN_BRIDGE
+ if(opt_use_twsyn_bridge){
+ InNum = get_bridge_midi_devs();
+ for (i=1;i <=InNum && i<=32;i++){
+ sprintf(rtsyn_portlist[i-1],"%d:%s",i,(LPSTR)get_bridge_midi_dev_name(i));
+ }
+ rtsyn_nportlist=i-1;
+ }else
+#endif
+ {
+ InNum = midiInGetNumDevs();
+ for (i=1;i <=InNum && i<=32;i++){
+ midiInGetDevCaps(i-1,(LPMIDIINCAPSA) &InCaps,sizeof(InCaps));
+ sprintf(rtsyn_portlist[i-1],"%d:%s",i,(LPSTR)InCaps.szPname);
+ }
+ rtsyn_nportlist=i-1;
}
- rtsyn_nportlist=i-1;
}
int rtsyn_synth_start(){
port=0;
- sleep(2);
- for(port=0;port<rtsyn_portnumber;port++){
- for (i=0;i<MAX_EXBUF;i++){
- IMidiHdr[port][i] = (MIDIHDR *)sIMidiHdr[port][i];
- memset(IMidiHdr[port][i],0,sizeof(MIDIHDR));
- IMidiHdr[port][i]->lpData = sImidiHdr_data[port][i];
- memset((IMidiHdr[port][i]->lpData),0,BUFF_SIZE);
- IMidiHdr[port][i]->dwBufferLength = BUFF_SIZE;
- }
- }
evbwpoint=0;
evbrpoint=0;
mvbuse=0;
+ sleep(1);
+#ifdef USE_TWSYN_BRIDGE
+ if(opt_use_twsyn_bridge){
+ open_bridge_midi_dev(rtsyn_portnumber, portID);
+ }else
+#endif
+ {
+ for(port=0;port<rtsyn_portnumber;port++){
+ for (i=0;i<MAX_EXBUF;i++){
+ IMidiHdr[port][i] = (MIDIHDR *)sIMidiHdr[port][i];
+ memset(IMidiHdr[port][i],0,sizeof(MIDIHDR));
+ IMidiHdr[port][i]->lpData = sImidiHdr_data[port][i];
+ memset((IMidiHdr[port][i]->lpData),0,BUFF_SIZE);
+ IMidiHdr[port][i]->dwBufferLength = BUFF_SIZE;
+ }
+ }
- for(port=0;port<rtsyn_portnumber;port++){
- midiInOpen(&hMidiIn[port],portID[port],(DWORD_PTR)MidiInProc,(DWORD_PTR)port,CALLBACK_FUNCTION);
- for (i=0;i<MAX_EXBUF;i++){
- midiInUnprepareHeader(hMidiIn[port],IMidiHdr[port][i],sizeof(MIDIHDR));
- midiInPrepareHeader(hMidiIn[port],IMidiHdr[port][i],sizeof(MIDIHDR));
- midiInAddBuffer(hMidiIn[port],IMidiHdr[port][i],sizeof(MIDIHDR));
+ for(port=0;port<rtsyn_portnumber;port++){
+ midiInOpen(&hMidiIn[port],portID[port],(DWORD_PTR)MidiInProc,(DWORD_PTR)port,CALLBACK_FUNCTION);
+ for (i=0;i<MAX_EXBUF;i++){
+ midiInUnprepareHeader(hMidiIn[port],IMidiHdr[port][i],sizeof(MIDIHDR));
+ midiInPrepareHeader(hMidiIn[port],IMidiHdr[port][i],sizeof(MIDIHDR));
+ midiInAddBuffer(hMidiIn[port],IMidiHdr[port][i],sizeof(MIDIHDR));
+ }
}
- }
#ifdef __W32__
- // HACK:midiInOpen()\82Å\83\8a\83Z\83b\83g\82³\82ê\82Ä\82µ\82Ü\82¤\82½\82ß\81A\8dÄ\90Ý\92è
- SetPriorityClass(GetCurrentProcess(), processPriority);
+ // HACK:midiInOpen()\82Å\83\8a\83Z\83b\83g\82³\82ê\82Ä\82µ\82Ü\82¤\82½\82ß\81A\8dÄ\90Ý\92è
+ SetPriorityClass(GetCurrentProcess(), processPriority);
#endif
- for(port=0;port<rtsyn_portnumber;port++){
- if(MMSYSERR_NOERROR !=midiInStart(hMidiIn[port])){
- int i;
- for(i=0;i<port;i++){
- midiInStop(hMidiIn[i]);
- midiInReset(hMidiIn[i]);
- midiInClose(hMidiIn[i]);
+ for(port=0;port<rtsyn_portnumber;port++){
+ if(MMSYSERR_NOERROR !=midiInStart(hMidiIn[port])){
+ int i;
+ for(i=0;i<port;i++){
+ midiInStop(hMidiIn[i]);
+ midiInReset(hMidiIn[i]);
+ midiInClose(hMidiIn[i]);
+ }
+ goto winmmerror;
}
- goto winmmerror;
}
}
mim_start_time = get_current_calender_time();
void rtsyn_synth_stop(){
rtsyn_stop_playing();
- // play_mode->close_output();
+ // play_mode->close_output();
rtsyn_midiports_close();
DeleteCriticalSection(&mim_section);
-
return;
}
void rtsyn_midiports_close(void){
UINT port;
-
+
+#ifdef USE_TWSYN_BRIDGE
+ if(opt_use_twsyn_bridge)
+ close_bridge_midi_dev();
+ else
+#endif
for(port=0;port<rtsyn_portnumber;port++){
if( MMSYSERR_NOERROR!=midiInStop(hMidiIn[port]) )
ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"MIDI Stop Error\n");
rtsyn_play_one_data (port, dwParam1, mim_start_time+(double)dwParam2 * DIV_1000);
break;
case MIM_LONGDATA:
- IIMidiHdr = (MIDIHDR *) dwParam1;
- exlen=(int)IIMidiHdr->dwBytesRecorded;
- sysexbuffer=IIMidiHdr->lpData;
- rtsyn_play_one_sysex (sysexbuffer,exlen, mim_start_time+(double)dwParam2 * DIV_1000);
- if (MMSYSERR_NOERROR != midiInUnprepareHeader(
- hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR)))
- ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"error1\n");
- if (MMSYSERR_NOERROR != midiInPrepareHeader(
- hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR)))
- ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"error5\n");
- if (MMSYSERR_NOERROR != midiInAddBuffer(
- hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR)))
- ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"error6\n");
+#ifdef USE_TWSYN_BRIDGE
+ if(opt_use_twsyn_bridge){
+ exlen = get_bridge_mim_databytes((int)dwParam1);
+ sysexbuffer = get_bridge_mim_longdata((int)dwParam1);
+ rtsyn_play_one_sysex(sysexbuffer, exlen, mim_start_time + (double)dwParam2 * DIV_1000);
+ }else
+#endif
+ {
+ IIMidiHdr = (MIDIHDR *) dwParam1;
+ exlen=(int)IIMidiHdr->dwBytesRecorded;
+ sysexbuffer=IIMidiHdr->lpData;
+ rtsyn_play_one_sysex (sysexbuffer,exlen, mim_start_time+(double)dwParam2 * DIV_1000);
+ if (MMSYSERR_NOERROR != midiInUnprepareHeader(
+ hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR)))
+ ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"error1\n");
+ if (MMSYSERR_NOERROR != midiInPrepareHeader(
+ hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR)))
+ ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"error5\n");
+ if (MMSYSERR_NOERROR != midiInAddBuffer(
+ hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR)))
+ ctl->cmsg( CMSG_ERROR, VERB_NORMAL,"error6\n");
+ }
break;
}
}while(rtsyn_buf_check());
break;
}
}
+
IniGetKeyInt(INI_SEC_TIMIDITY,"opt_rtsyn_latency",&(st->opt_rtsyn_latency));
if ( st->opt_rtsyn_latency < 1 ) st->opt_rtsyn_latency = 1;
if ( st->opt_rtsyn_latency > 1000 ) st->opt_rtsyn_latency = 1000;
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_rtsyn_skip_aq",&(st->opt_rtsyn_skip_aq));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_rtsyn_skip_aq",&(st->opt_rtsyn_skip_aq));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_use_twsyn_bridge",&(st->opt_use_twsyn_bridge));
#else
IniGetKeyInt(INI_SEC_TIMIDITY,"processPriority",&(st->processPriority));
#endif
IniPutKeyInt(INI_SEC_TIMIDITY,"SynShTime",&(st->SynShTime));
IniPutKeyInt(INI_SEC_TIMIDITY,"opt_rtsyn_latency",&(st->opt_rtsyn_latency));
IniPutKeyInt(INI_SEC_TIMIDITY,"opt_rtsyn_skip_aq",&(st->opt_rtsyn_skip_aq));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_use_twsyn_bridge",&(st->opt_use_twsyn_bridge));
#else
IniPutKeyInt(INI_SEC_TIMIDITY,"processPriority",&(st->processPriority));
#endif
return FALSE;
}
#else
+
+#if defined(TWSYNG32) && !defined(TWSYNSRV) && defined(USE_TWSYN_BRIDGE)
+#include "twsyn_bridge_common.h"
+#include "twsyn_bridge_host.h"
+#endif
+
extern int syn_ThreadPriority;
static TCHAR **MidiINDrivers = NULL;
+static int midi_in_max = 0;
// 0 MIDI Mapper -1
// 1 MIDI IN Driver 0
// 2 MIDI IN Driver 1
static TCHAR **GetMidiINDrivers( void )
{
int i;
- int max = midiInGetNumDevs ();
- if ( MidiINDrivers != NULL ) {
- for ( i = 0; MidiINDrivers[i] != NULL; i ++ ) {
- safe_free ( MidiINDrivers[i] );
+
+#if defined(TWSYNG32) && !defined(TWSYNSRV) && defined(USE_TWSYN_BRIDGE)
+ if(st_temp->opt_use_twsyn_bridge){
+ midi_in_max = get_bridge_midi_devs();
+ if ( MidiINDrivers != NULL ) {
+ for ( i = 0; MidiINDrivers[i] != NULL; i ++ ) {
+ safe_free ( MidiINDrivers[i] );
+ }
+ safe_free ( MidiINDrivers );
+ MidiINDrivers = NULL;
}
- safe_free ( MidiINDrivers );
- MidiINDrivers = NULL;
- }
- MidiINDrivers = ( TCHAR ** ) malloc ( sizeof ( TCHAR * ) * ( max + 2 ) );
- if ( MidiINDrivers == NULL ) return MidiINDrivers;
- MidiINDrivers[0] = safe_strdup ( "MIDI Mapper" );
- for ( i = 1; i <= max; i ++ ) {
- MIDIINCAPS mic;
- if ( midiInGetDevCaps ( i - 1, &mic, sizeof ( MIDIINCAPS ) ) == 0 ) {
- MidiINDrivers[i] = strdup ( mic.szPname );
+ MidiINDrivers = ( TCHAR ** ) malloc ( sizeof ( TCHAR * ) * ( midi_in_max + 2 ) );
+ if ( MidiINDrivers == NULL ) return MidiINDrivers;
+ for (i = 0; i <= midi_in_max; i ++ ) {
+ MidiINDrivers[i] = strdup (get_bridge_midi_dev_name(i));
if ( MidiINDrivers[i] == NULL )
break;
- } else {
- MidiINDrivers[i] = NULL;
- break;
}
+ MidiINDrivers[midi_in_max+1] = NULL;
+ }else
+#endif
+ {
+ midi_in_max = midiInGetNumDevs ();
+ if ( MidiINDrivers != NULL ) {
+ for ( i = 0; MidiINDrivers[i] != NULL; i ++ ) {
+ safe_free ( MidiINDrivers[i] );
+ }
+ safe_free ( MidiINDrivers );
+ MidiINDrivers = NULL;
+ }
+ MidiINDrivers = ( TCHAR ** ) malloc ( sizeof ( TCHAR * ) * ( midi_in_max + 2 ) );
+ if ( MidiINDrivers == NULL ) return MidiINDrivers;
+ MidiINDrivers[0] = safe_strdup ( "MIDI Mapper" );
+ for ( i = 1; i <= midi_in_max; i ++ ) {
+ MIDIINCAPS mic;
+ if ( midiInGetDevCaps ( i - 1, &mic, sizeof ( MIDIINCAPS ) ) == 0 ) {
+ MidiINDrivers[i] = strdup ( mic.szPname );
+ if ( MidiINDrivers[i] == NULL )
+ break;
+ } else {
+ MidiINDrivers[i] = NULL;
+ break;
+ }
+ }
+ MidiINDrivers[midi_in_max+1] = NULL;
}
- MidiINDrivers[max+1] = NULL;
return MidiINDrivers;
}
DI_DISABLE(IDC_COMBO_IDPORT1);
DI_DISABLE(IDC_COMBO_IDPORT2);
DI_DISABLE(IDC_COMBO_IDPORT3);
+ DI_DISABLE(IDC_CHECK_USE_TWSYN_BRIDGE);
#else
+#if defined(TWSYNG32) && !defined(TWSYNSRV) && defined(USE_TWSYN_BRIDGE)
+ DLG_FLAG_TO_CHECKBUTTON(hwnd, IDC_CHECK_USE_TWSYN_BRIDGE, st_temp->opt_use_twsyn_bridge);
+#else
+ DI_DISABLE(IDC_CHECK_USE_TWSYN_BRIDGE);
+#endif
GetMidiINDrivers();
for ( i = 0; i <= MAX_PORT; i ++ ) {
}
safe_free ( MidiINDrivers );
MidiINDrivers = NULL;
- }
-
- SendDlgItemMessage(hwnd, IDC_COMBO_PORT_NUM,
- CB_SETCURSEL, (WPARAM) st_temp->SynPortNum, (LPARAM) 0 );
- SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0,
- CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[0], (LPARAM) 0 );
- SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1,
- CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[1], (LPARAM) 0 );
- SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2,
- CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[2], (LPARAM) 0 );
- SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3,
- CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[3], (LPARAM) 0 );
+ }
+ if(st_temp->SynIDPort[0] > midi_in_max)
+ st_temp->SynIDPort[0] = 0; // reset
+ if(st_temp->SynIDPort[1] > midi_in_max)
+ st_temp->SynIDPort[1] = 0; // reset
+ if(st_temp->SynIDPort[2] > midi_in_max)
+ st_temp->SynIDPort[2] = 0; // reset
+ if(st_temp->SynIDPort[3] > midi_in_max)
+ st_temp->SynIDPort[3] = 0; // reset
+ SendDlgItemMessage(hwnd, IDC_COMBO_PORT_NUM, CB_SETCURSEL, (WPARAM) st_temp->SynPortNum, (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[0], (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[1], (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[2], (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[3], (LPARAM) 0 );
#endif
#if defined(WINDRV_SETUP)
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
+
+#if defined(TWSYNG32) && !defined(TWSYNSRV) && defined(USE_TWSYN_BRIDGE)
+ case IDC_CHECK_USE_TWSYN_BRIDGE:
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0, CB_RESETCONTENT, 0,0);
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1, CB_RESETCONTENT, 0,0);
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2, CB_RESETCONTENT, 0,0);
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3, CB_RESETCONTENT, 0,0);
+
+ DLG_CHECKBUTTON_TO_FLAG(hwnd, IDC_CHECK_USE_TWSYN_BRIDGE, st_temp->opt_use_twsyn_bridge);
+ tmp = SendDlgItemMessage ( hwnd, IDC_COMBO_PORT_NUM, CB_GETCURSEL, 0, 0 );
+ if ( tmp != CB_ERR ) st_temp->SynPortNum = tmp;
+ GetMidiINDrivers();
+
+ if ( MidiINDrivers != NULL ) {
+ for ( i = 0; MidiINDrivers[i] != NULL; i ++ ) {
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0,
+ CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1,
+ CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2,
+ CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3,
+ CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
+ safe_free ( MidiINDrivers[i] );
+ }
+ safe_free ( MidiINDrivers );
+ MidiINDrivers = NULL;
+ }
+ st_temp->SynIDPort[0] = 0; // reset
+ st_temp->SynIDPort[1] = 0; // reset
+ st_temp->SynIDPort[2] = 0; // reset
+ st_temp->SynIDPort[3] = 0; // reset
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[0], (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[1], (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[2], (LPARAM) 0 );
+ SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3, CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[3], (LPARAM) 0 );
+ break;
+#endif
case IDC_BUTTON_CONFIG_FILE:
{
TCHAR filename[FILEPATH_MAX];
sp_temp->PlayerLanguage = LANGUAGE_JAPANESE;
}
-#if !defined(WINDRV_SETUP)
+#if !defined(WINDRV_SETUP)
+#if defined(TWSYNG32) && !defined(TWSYNSRV) && defined(USE_TWSYN_BRIDGE)
+ DLG_CHECKBUTTON_TO_FLAG(hwnd, IDC_CHECK_USE_TWSYN_BRIDGE, st_temp->opt_use_twsyn_bridge);
+#endif
DLG_CHECKBUTTON_TO_FLAG(hwnd, IDC_CHECK_SYN_AUTOSTART, st_temp->syn_AutoStart);
tmp = SendDlgItemMessage ( hwnd, IDC_COMBO_PORT_NUM, CB_GETCURSEL, 0, 0 );
if ( tmp != CB_ERR ) st_temp->SynPortNum = tmp;
#define IDD_DIALOG_PREF_EN 114
#define IDD_DIALOG_PLAYLIST_EN 115
#define IDD_DIALOG_PLAYLIST 116
+#define IDD_DIALOG_TWSYN_BRIDGE 117
#define IDD_PREF_PLAYER_EN 121
#define IDD_PREF_TIMIDITY1_EN 122
#define IDC_COMBO_IDPORT1 3952
#define IDC_COMBO_IDPORT2 3953
#define IDC_COMBO_IDPORT3 3954
+#define IDC_CHECK_USE_TWSYN_BRIDGE 3955
// syn
-#define IDC_CHECK_SYN_AUTOSTART 3955
-#define IDC_EDIT_SYN_SH_TIME 3956
-#define IDC_EDIT_RTSYN_LATENCY 3957
-#define IDC_CHECK_RTSYN_SKIP_AQ 3958
+#define IDC_CHECK_SYN_AUTOSTART 3965
+#define IDC_EDIT_SYN_SH_TIME 3966
+#define IDC_EDIT_RTSYN_LATENCY 3967
+#define IDC_CHECK_RTSYN_SKIP_AQ 3968
// priority
-#define IDC_COMBO_SYN_THREAD_PRIORITY 3970
+#define IDC_COMBO_SYN_THREAD_PRIORITY 3980
//// effect
// midi
EDITTEXT IDC_EDIT, 0, 0, 240, 160, WS_HSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN\r
}\r
\r
-\r
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r
+IDD_DIALOG_TWSYN_BRIDGE DIALOGEX 0, 0, 115, 25\r
+STYLE DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_POPUP | WS_SYSMENU\r
+CAPTION "TWSYN Bridge (host)"\r
+FONT 8, "Tahoma"\r
+{\r
+ DEFPUSHBUTTON "OK", IDOK, 5, 5, 50, 15\r
+ PUSHBUTTON "Cancel", IDCANCEL, 60, 5, 50, 15\r
+}\r
\r
LANGUAGE LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN\r
IDD_DIALOG_DOC DIALOGEX 0, 0, 300, 251\r
GROUPBOX "Flags", IDC_STATIC, 5, 85, 50, 45, WS_GROUP\r
AUTORADIOBUTTON "Event", IDC_RADIOBUTTON_WASAPI_EVENT, 10, 100, 33, 8, WS_GROUP | WS_TABSTOP\r
AUTORADIOBUTTON "Polling", IDC_RADIOBUTTON_WASAPI_POLLING, 10, 115, 40, 8, WS_TABSTOP\r
- LTEXT "-", IDC_STATIC, 133, 115, 4, 8, SS_LEFT\r
+ LTEXT "-", IDC_STATIC, 133, 115, 8, 8, SS_LEFT\r
}\r
\r
\r
GROUPBOX "\83R\83\93\83\\81[\83\8b", IDC_STATIC, 235, 110, 110, 35, WS_GROUP\r
COMBOBOX IDC_COMBO_CTL_VEBOSITY, 268, 123, 70, 146, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT\r
AUTOCHECKBOX "\83I\81[\83f\83B\83I\83L\83\85\81[\82ð\83X\83L\83b\83v", IDC_CHECK_RTSYN_SKIP_AQ, 10, 190, 83, 8\r
+ AUTOCHECKBOX "Use TWSYN Bridge", IDC_CHECK_USE_TWSYN_BRIDGE, 130, 40, 80, 8\r
}\r
\r
\r
LTEXT "Level", IDC_STATIC, 240, 125, 18, 8, SS_LEFT\r
COMBOBOX IDC_COMBO_CTL_VEBOSITY, 270, 123, 70, 146, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT\r
AUTOCHECKBOX "Skip Audio Queue", IDC_CHECK_RTSYN_SKIP_AQ, 10, 190, 72, 8\r
+ AUTOCHECKBOX "Use TWSYNG Bridge", IDC_CHECK_USE_TWSYN_BRIDGE, 130, 40, 80, 8\r
}\r
\r
\r
#ifdef IA_W32G_SYN
+#ifdef USE_TWSYN_BRIDGE
+#include "twsyn_bridge_common.h"
+#include "twsyn_bridge_host.h"
+#endif
+
typedef struct w32g_syn_t_ {
UINT nid_uID;
#ifndef TWSYNSRV
int playlist_max = 1;
int playlist_max_ini = 1;
int ConsoleClearFlag = 0;
-
+int opt_use_twsyn_bridge = 0;
extern void CmdLineToArgv(LPSTR lpCmdLine, int *argc, CHAR ***argv);
static int start_syn_thread(void);
while (w32g_syn.quit_state < 2) {
Sleep(300);
}
-
+
return 0;
}
PostQuitMessage(0);
return -1;
}
+#ifdef USE_TWSYN_BRIDGE
+ init_bridge();
+#endif
#ifdef VST_LOADER_ENABLE
if (!hVSTHost) {
#ifdef _WIN64
hVSTHost = NULL;
}
#endif
+#ifdef USE_TWSYN_BRIDGE
+ close_bridge();
+#endif
DeleteTasktrayIcon(hwnd);
PostQuitMessage(0);
break;
#elif defined(IA_W32G_SYN)
extern int w32g_syn_id_port[];
extern int syn_AutoStart;
+extern int opt_use_twsyn_bridge;
//extern DWORD processPriority;
extern DWORD syn_ThreadPriority;
extern int w32g_syn_port_num;
rtsyn_set_latency((double)opt_rtsyn_latency * 0.001);
opt_rtsyn_skip_aq = st->opt_rtsyn_skip_aq;
rtsyn_set_skip_aq(opt_rtsyn_skip_aq);
+ opt_use_twsyn_bridge = st->opt_use_twsyn_bridge;
#endif
///r
processPriority = st->processPriority;
st->SynShTime = stream_max_compute;
st->opt_rtsyn_latency = opt_rtsyn_latency;
st->opt_rtsyn_skip_aq = opt_rtsyn_skip_aq;
+ st->opt_use_twsyn_bridge = opt_use_twsyn_bridge;
#endif
///r
st->processPriority = processPriority;
int SynShTime;
uint32 opt_rtsyn_latency; // --rtsyn-latency
int opt_rtsyn_skip_aq; // --rtsyn-skip-aq
+ int opt_use_twsyn_bridge;
#endif
int processPriority; // --process-priority
int compute_thread_num;
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="cp ../Debug\pdcurses.lib ../Debug\panel.lib"
+ CommandLine=""
/>
</Configuration>
<Configuration
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="cp ../Release\pdcurses.lib ../Release\panel.lib"
+ CommandLine=""
/>
</Configuration>
</Configurations>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</PostBuildEventUseInBuild>
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</PostBuildEventUseInBuild>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<DisableSpecificWarnings>4244;4305;4311;4100;4127;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<FloatingPointModel>Fast</FloatingPointModel>
- <MultiProcessorCompilation>false</MultiProcessorCompilation>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>../Release\libspeex.lib</OutputFile>
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">timidity</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">timidity_x64</TargetName>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_x64</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">timidity_x64</TargetName>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<AdditionalIncludeDirectories>..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>comctl32.lib;winmm.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>./Debug/tim_cui.exe</OutputFile>
+ <OutputFile>$(TargetPath)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>libcd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<TargetName>$(ProjectName)_x64</TargetName>
+ <LibraryPath>$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <OutputFile>../Debug/timdrvsetup.exe</OutputFile>
+ <OutputFile>$(TargetPath)</OutputFile>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;$(DXSDK_DIR)Lib\x86;C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86;</LibraryPath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(VCInstallDir)atlmfc\lib\amd64;$(VCInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;$(FrameworkSDKDir)\lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;$(DXSDK_DIR)\Lib\x86;</LibraryPath>
- <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;$(DXSDK_DIR)\ILib\x86;</LibraryPath>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib\x64;$(FrameworkSDKDir)\lib;$(DXSDK_DIR)\ILib\x86;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
{8DC8ADE3-145A-4C63-80DD-0C93B6587B80} = {8DC8ADE3-145A-4C63-80DD-0C93B6587B80}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "twsyn_bridge", "twsyn_bridge\twsyn_bridge.vcproj", "{4D6B6788-F7B8-4FFB-B15F-DC5C665ABB5C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
{DB5B22F9-4721-460B-9770-2855CA33E232}.Debug|Win32.Build.0 = Debug|Win32
{DB5B22F9-4721-460B-9770-2855CA33E232}.Release|Win32.ActiveCfg = Release|Win32
{DB5B22F9-4721-460B-9770-2855CA33E232}.Release|Win32.Build.0 = Release|Win32
+ {4D6B6788-F7B8-4FFB-B15F-DC5C665ABB5C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4D6B6788-F7B8-4FFB-B15F-DC5C665ABB5C}.Debug|Win32.Build.0 = Debug|Win32
+ {4D6B6788-F7B8-4FFB-B15F-DC5C665ABB5C}.Release|Win32.ActiveCfg = Release|Win32
+ {4D6B6788-F7B8-4FFB-B15F-DC5C665ABB5C}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timdrvsetup", "timdrvsetup\timdrvsetup.vcxproj", "{1A91001F-E3EF-4FC1-925B-C00013BB6C98}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "twsyn_bridge", "twsyn_bridge\twsyn_bridge.vcxproj", "{D6D9295A-4A29-4753-88E9-A9D8B589A3D0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
{1A91001F-E3EF-4FC1-925B-C00013BB6C98}.Release|Win32.Build.0 = Release|Win32
{1A91001F-E3EF-4FC1-925B-C00013BB6C98}.Release|x64.ActiveCfg = Release|x64
{1A91001F-E3EF-4FC1-925B-C00013BB6C98}.Release|x64.Build.0 = Release|x64
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Debug|Win32.Build.0 = Debug|Win32
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Debug|x64.ActiveCfg = Debug|x64
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Debug|x64.Build.0 = Debug|x64
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Release|Win32.ActiveCfg = Release|Win32
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Release|Win32.Build.0 = Release|Win32
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Release|x64.ActiveCfg = Release|x64
+ {D6D9295A-4A29-4753-88E9-A9D8B589A3D0}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(VCInstallDir)atlmfc\lib\amd64;$(VCInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;$(FrameworkSDKDir)\lib\x64;$(WindowsSdkDir)\lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;$(DXSDK_DIR)\ILib\x86;</LibraryPath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(VCInstallDir)atlmfc\lib\amd64;$(VCInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;$(FrameworkSDKDir)\lib\x64;$(WindowsSdkDir)\lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">timw32g_c212</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">timw32g_x64_c212</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">timw32g_c213</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">timw32g_x64_c213</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_x64</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
--- /dev/null
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="twsyng_bridge"
+ ProjectGUID="{4D6B6788-F7B8-4FFB-B15F-DC5C665ABB5C}"
+ RootNamespace="twsyng_bridge"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="$(OutDir)\$(ProjectName)_x86.exe"
+ GenerateDebugInformation="true"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ EnableIntrinsicFunctions="true"
+ FavorSizeOrSpeed="1"
+ OmitFramePointers="true"
+ EnableFiberSafeOptimizations="true"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOW"
+ RuntimeLibrary="2"
+ StructMemberAlignment="5"
+ EnableFunctionLevelLinking="true"
+ EnableEnhancedInstructionSet="2"
+ FloatingPointModel="2"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="$(OutDir)\$(ProjectName)_x86.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="false"
+ SubSystem="2"
+ LargeAddressAware="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\twsyng_bridge_common.h"
+ >
+ </File>
+ <File
+ RelativePath=".\twsyng_bridge_exe.c"
+ >
+ </File>
+ <File
+ RelativePath=".\twsyng_bridge_exe.h"
+ >
+ </File>
+ <File
+ RelativePath=".\twsyng_bridge_exe.rc"
+ >
+ </File>
+ <File
+ RelativePath=".\twsyng_bridge_exe_res.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D6D9295A-4A29-4753-88E9-A9D8B589A3D0}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>twsyng_run</RootNamespace>
+ <ProjectName>twsyn_bridge</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ <TargetName>$(ProjectName)_x86</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <TargetName>$(ProjectName)_x64</TargetName>
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Platform)$(Configuration)\</IntDir>
+ <LibraryPath>$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <TargetName>$(ProjectName)_x86</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <TargetName>$(ProjectName)_x64</TargetName>
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <LibraryPath>$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;USE_BRIDGE;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OutputFile>$(TargetPath)</OutputFile>
+ <LargeAddressAware>true</LargeAddressAware>
+ <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_WIN64;WIN32;USE_BRIDGE;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OutputFile>$(TargetPath)</OutputFile>
+ <LargeAddressAware>true</LargeAddressAware>
+ <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;USE_BRIDGE;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <FloatingPointModel>Fast</FloatingPointModel>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <OutputFile>$(TargetPath)</OutputFile>
+ <LargeAddressAware>true</LargeAddressAware>
+ <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>_WIN64;WIN32;USE_BRIDGE;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <FloatingPointModel>Fast</FloatingPointModel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <OutputFile>$(TargetPath)</OutputFile>
+ <LargeAddressAware>true</LargeAddressAware>
+ <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="twsyn_bridge_common.h" />
+ <ClInclude Include="twsyn_bridge_exe_res.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="twsyn_bridge_exe.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="twsyn_bridge_exe.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+
+#pragma once
+
+
+
+
+
+#define COMMON_FM_NAME "twsyn_bridge_file_mapping"
+#define COMMON_MUTEX_NAME "twsyn_bridge_mutex"
+
+#define BRIDGE_MAX_PORT 4 // see rtsyn.h MAX_PORT
+#define BRIDGE_MAX_EXBUF 32
+#define BRIDGE_TOTAL_EXBUF (BRIDGE_MAX_PORT * BRIDGE_MAX_EXBUF)
+#define BRIDGE_BUFF_SIZE 512
+
+typedef struct _fm_bridge_t {
+ // exit flag
+ long exit;
+ // host
+ long PrcsIdHost; // processID
+ long PrcsVerHost; // processVersion
+ unsigned long long hControlWndHost; // window handle
+ unsigned long uControlMessHost; // window message number
+ // bridge
+ long PrcsId; // processID
+ long PrcsVer; // processVersion
+ unsigned long long hControlWnd; // window handle
+ unsigned long uControlMess; // window message number
+ // midi in
+ unsigned long long hMidiWnd[BRIDGE_MAX_PORT]; // window handle
+ long midi_dev_num;
+ char midi_devs[33][256];
+ long portnumber;
+ unsigned int portID[BRIDGE_MAX_PORT];
+ long open_midi_dev;
+ unsigned long wMsg;
+ unsigned long long dwInstance;
+ unsigned long long dwParam1;
+ unsigned long long dwParam2;
+ unsigned long dwBytes[BRIDGE_TOTAL_EXBUF];
+ char lpData[BRIDGE_TOTAL_EXBUF][BRIDGE_BUFF_SIZE];
+} fm_bridge_t;
+
+enum {
+ WMC_CLOSE_BRIDGE = 4096, // 0\82Å\82à\82¢\82¢\82¯\82Ç
+ WMC_GET_MIDI_DEVS,
+ WMC_OPEN_MIDI_DEVS,
+ WMC_CLOSE_MIDI_DEVS,
+ WMC_MIM_DATA,
+ WMC_MIM_LONGDATA,
+};
--- /dev/null
+
+
+
+#include <stdlib.h>
+#include <io.h>
+#include <windows.h>
+#include <process.h>
+#include <windows.h>
+#include <windowsx.h>
+#include <winuser.h>
+#include <windef.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <tchar.h>
+#include <mmsystem.h>
+
+#include "twsyn_bridge_common.h"
+#include "twsyn_bridge_exe_res.h"
+
+#define FILEPATH_MAX 32000
+
+#ifdef _WIN64
+const char WinTitle[] = "twsyn bridge x64";
+#else
+const char WinTitle[] = "twsyn bridge x86";
+#endif
+
+// host
+static DWORD PrcsIdHost = 0;
+static DWORD PrcsVerHost = 0;
+static HWND hControlWndHost = NULL;
+static UINT uControlMessHost = 0;
+// bridge
+static HWND hControlWnd = NULL;
+static UINT uControlMess = 0;
+static HANDLE hMutex = NULL;
+static HANDLE hFileMap = NULL;
+static fm_bridge_t *shared_data = NULL;
+static int thread_exit = 0;
+static HANDLE hThread = NULL;
+// midi in
+HMIDIIN hMidiIn[BRIDGE_MAX_PORT];
+MIDIHDR *IMidiHdr[BRIDGE_MAX_PORT][BRIDGE_MAX_EXBUF];
+char sIMidiHdr[BRIDGE_MAX_PORT][BRIDGE_MAX_EXBUF][sizeof(MIDIHDR)];
+char sImidiHdr_data[BRIDGE_MAX_PORT][BRIDGE_MAX_EXBUF][BRIDGE_BUFF_SIZE];
+static int exbuf_count = 0;
+
+static void ErrorMessageBox(const char *text)
+{
+ const char title[] = "twsyn_bridge(exe)";
+ char buf[0x800];
+
+ wsprintfA(buf,"%s", text);
+ MessageBox(NULL, buf, title, MB_OK | MB_ICONEXCLAMATION);
+}
+
+static void uninit_bridge(void)
+{
+ thread_exit = 1;
+ if(hThread){
+ switch(WaitForSingleObject(hThread, 500)) {
+ case WAIT_OBJECT_0:
+ break;
+ default:
+ TerminateThread(hThread, 0);
+ break;
+ }
+ CloseHandle(hThread);
+ hThread = NULL;
+ }
+ if(shared_data) {
+ UnmapViewOfFile(shared_data);
+ shared_data = NULL;
+ }
+ if(hFileMap) {
+ CloseHandle(hFileMap);
+ hFileMap = NULL;
+ }
+ if(hMutex){
+ CloseHandle(hMutex);
+ hMutex = NULL;
+ }
+}
+
+static void get_midi_devs(void)
+{
+ int i, max;
+
+ if(shared_data == NULL)
+ return;
+ memset(shared_data->midi_devs, 0, sizeof(shared_data->midi_devs));
+ max = midiInGetNumDevs();
+ if(max > 32)
+ max = 32;
+ shared_data->midi_dev_num = max;
+#ifdef _WIN64
+ _snprintf(shared_data->midi_devs[0], 255, "MIDI Mapper (x64)");
+#else
+ _snprintf(shared_data->midi_devs[0], 255, "MIDI Mapper (x86)");
+#endif
+ for(i = 1; i <= max; i++){
+ MIDIINCAPS mic;
+ if(midiInGetDevCaps(i - 1, &mic, sizeof(MIDIINCAPS)) == 0){
+#ifdef _WIN64
+ _snprintf(shared_data->midi_devs[i], 255, "%s (x64)", mic.szPname);
+#else
+ _snprintf(shared_data->midi_devs[i], 255, "%s (x86)", mic.szPname);
+#endif
+ } else {
+#ifdef _WIN64
+ _snprintf(shared_data->midi_devs[i], 255, "MIDI IN dev:%d (x64)", i - 1);
+#else
+ _snprintf(shared_data->midi_devs[i], 255, "MIDI IN dev:%d (x86)", i - 1);
+#endif
+ }
+ }
+}
+
+void CALLBACK MidiInProc(HMIDIIN hMidiIn_, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
+{
+ MIDIHDR *IIMidiHdr;
+ unsigned int port, bytes;
+ const int total_exbuf = BRIDGE_TOTAL_EXBUF;
+
+ if(shared_data == NULL)
+ return;
+ switch(wMsg){
+ case MIM_DATA:
+ shared_data->wMsg = wMsg;
+ shared_data->dwInstance = dwInstance;
+ shared_data->dwParam1 = dwParam1;
+ shared_data->dwParam2 = dwParam2;
+ SendMessage(hControlWndHost, uControlMessHost, WMC_MIM_DATA, (LPARAM)NULL);
+ break;
+ case MIM_LONGDATA:
+ IIMidiHdr = (MIDIHDR *) dwParam1;
+ shared_data->wMsg = wMsg;
+ shared_data->dwInstance = dwInstance;
+ shared_data->dwParam1 = exbuf_count;
+ shared_data->dwParam2 = dwParam2;
+ bytes = (UINT)IIMidiHdr->dwBytesRecorded;
+ shared_data->dwBytes[exbuf_count] = bytes;
+ memcpy(shared_data->lpData[exbuf_count], IIMidiHdr->lpData, bytes);
+ if(++exbuf_count >= total_exbuf)
+ exbuf_count -= total_exbuf;
+ port = (UINT)dwInstance;
+ midiInUnprepareHeader(hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR));
+ midiInPrepareHeader(hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR));
+ midiInAddBuffer(hMidiIn[port], IIMidiHdr, sizeof(MIDIHDR));
+ SendMessage(hControlWndHost, uControlMessHost, WMC_MIM_LONGDATA, (LPARAM)NULL);
+ break;
+ case MIM_OPEN:
+ case MIM_CLOSE:
+ case MIM_LONGERROR:
+ case MIM_ERROR:
+ case MIM_MOREDATA:
+ break;
+ }
+}
+
+static void close_midi_devs(void)
+{
+ int i;
+
+ for(i = 0; i < shared_data->portnumber; i++){
+ midiInStop(hMidiIn[i]);
+ midiInReset(hMidiIn[i]);
+ midiInClose(hMidiIn[i]);
+ }
+ shared_data->open_midi_dev = 0;
+}
+
+static void open_midi_devs(void)
+{
+ int i, port;
+
+ if(shared_data == NULL)
+ return;
+ exbuf_count = 0;
+ shared_data->wMsg;
+ shared_data->dwInstance;
+ shared_data->dwParam1;
+ shared_data->dwParam2;
+ memset(shared_data->dwBytes, 0, sizeof(shared_data->dwBytes));
+ memset(shared_data->lpData, 0, sizeof(shared_data->lpData));
+ for(port = 0; port < shared_data->portnumber; port++){
+ for(i = 0; i < BRIDGE_MAX_EXBUF; i++){
+ IMidiHdr[port][i] = (MIDIHDR *)sIMidiHdr[port][i];
+ memset(IMidiHdr[port][i], 0, sizeof(MIDIHDR));
+ IMidiHdr[port][i]->lpData = sImidiHdr_data[port][i];
+ memset(IMidiHdr[port][i]->lpData, 0, BRIDGE_BUFF_SIZE);
+ IMidiHdr[port][i]->dwBufferLength = BRIDGE_BUFF_SIZE;
+ }
+ }
+ for(port = 0; port < shared_data->portnumber; port++){
+ midiInOpen(&hMidiIn[port], shared_data->portID[port], (DWORD_PTR)MidiInProc, (DWORD_PTR)port, CALLBACK_FUNCTION);
+ for (i = 0; i < BRIDGE_MAX_EXBUF; i++){
+ midiInUnprepareHeader(hMidiIn[port], IMidiHdr[port][i], sizeof(MIDIHDR));
+ midiInPrepareHeader(hMidiIn[port], IMidiHdr[port][i], sizeof(MIDIHDR));
+ midiInAddBuffer(hMidiIn[port], IMidiHdr[port][i], sizeof(MIDIHDR));
+ }
+ }
+ for(port = 0; port < shared_data->portnumber; port++){
+ if(midiInStart(hMidiIn[port]) != MMSYSERR_NOERROR)
+ goto winmmerror;
+ }
+ shared_data->open_midi_dev = 1;
+ return;
+winmmerror:
+ close_midi_devs();
+ return;
+}
+
+LRESULT APIENTRY CALLBACK CtrlWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
+{
+ if(uMess == uControlMess){
+ switch(wParam){
+ case WMC_CLOSE_BRIDGE:
+ uninit_bridge();
+ EndDialog(hwnd, FALSE);
+ PostQuitMessage(0);
+ return TRUE;
+ case WMC_GET_MIDI_DEVS:
+ get_midi_devs();
+ return TRUE;
+ case WMC_OPEN_MIDI_DEVS:
+ open_midi_devs();
+ return TRUE;
+ case WMC_CLOSE_MIDI_DEVS:
+ close_midi_devs();
+ return TRUE;
+ }
+ }else switch (uMess){
+ case WM_COMMAND:
+ switch(LOWORD(wParam)){
+ case IDOK:
+ return TRUE;
+ case IDCANCEL:
+ return TRUE;
+ }
+ break;
+ case WM_INITDIALOG:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+static unsigned int WINAPI CheckProcessThread(void *args)
+{
+ for(;;){
+ DWORD ver = 0;
+ Sleep(500);
+ if(thread_exit) break;
+ if(shared_data->exit){
+ // ErrorMessageBox("recieve exit process.");
+ PostMessage(hControlWnd, uControlMess, WMC_CLOSE_BRIDGE, (LPARAM)NULL);
+ break;
+ }
+ else if(GetProcessVersion(PrcsIdHost) != PrcsVerHost){
+ // ErrorMessageBox("lost host process.");
+ PostMessage(hControlWnd, uControlMess, WMC_CLOSE_BRIDGE, (LPARAM)NULL);
+ break;
+ }
+ }
+ _endthread();
+ return 0;
+}
+
+// Create Window & init bridge
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+{
+ char buffer[FILEPATH_MAX] = {0};
+ char *errortext;
+ HICON hIcon;
+ unsigned int dwThreadID = 0;
+
+ // resister ctrl message
+ uControlMess = RegisterWindowMessage("twsyn_bridge_exe");
+ if(!uControlMess){
+ errortext = "bridge.exe error : RegisterWindowMessage.";
+ goto error;
+ }
+ // create window
+ hControlWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_DUMMY), NULL, (DLGPROC)CtrlWndProc);
+ if(!hControlWnd){
+ errortext = "bridge.exe error : CreateDialog.";
+ goto error;
+ }
+ // create mutex
+ hMutex = CreateMutex(NULL, TRUE, COMMON_MUTEX_NAME);
+ if(!hMutex){
+ errortext = "bridge.exe error : CreateMutex.";
+ goto error;
+ }
+ if(GetLastError() == ERROR_ALREADY_EXISTS){ // \93ñ\8fd\8bN\93®\96h\8e~ \82±\82Ì\8e\9e\93_\82Å\8cÃ\82¢\83u\83\8a\83b\83W\82Í\8fI\97¹\82µ\82Ä\82¢\82é\82©\82à\81H
+ errortext = "bridge.exe error : CreateMutex ALREADY_EXISTS.";
+ goto error;
+ }
+ // set icon
+ hIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_ICON_BRIDGE16), IMAGE_ICON, 16, 16, 0);
+ if(hIcon != NULL)
+ SendMessage(hControlWnd, WM_SETICON, FALSE, (LPARAM)hIcon);
+ ShowWindow(hControlWnd, SW_HIDE);
+// ShowWindow(hControlWnd, SW_SHOW);
+ // open file mapping
+ hFileMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, TRUE, COMMON_FM_NAME);
+ if(!hFileMap){
+ errortext = "bridge.exe error : OpenFileMapping.";
+ goto error;
+ }
+ // open shared_data
+ shared_data = (fm_bridge_t *)MapViewOfFile(hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
+ if(!shared_data){
+ errortext = "bridge.exe error : MapViewOfFile.";
+ goto error;
+ }
+ // open shared_data
+ if(shared_data->PrcsIdHost == 0){
+ errortext = "bridge.exe error : recieve processID.";
+ goto error;
+ }
+ //
+ PrcsIdHost = shared_data->PrcsIdHost;
+ PrcsVerHost = shared_data->PrcsVerHost;
+ hControlWndHost = (HWND)shared_data->hControlWndHost;
+ uControlMessHost = shared_data->uControlMessHost;
+ // create thread
+ shared_data->exit = 0; // \89ð\8f\9c (\83\8d\81[\83h\82Å\8e\9e\8aÔ\82©\82©\82é\82Ì\82ÅSleep\82Í\95s\97v
+ thread_exit = 0;
+ hThread = (HANDLE)_beginthreadex(NULL, 0, CheckProcessThread, (void *)0, 0, &dwThreadID);
+ if(!hThread){
+ errortext = "bridge.exe error : CreateThread.";
+ goto error;
+ }
+ // send processID
+ shared_data->PrcsId = GetCurrentProcessId();
+ // send process Version
+ shared_data->PrcsVer = GetProcessVersion(shared_data->PrcsId);
+ // send ctrl message
+ shared_data->uControlMess = uControlMess;
+ // send win handle
+ shared_data->hControlWnd = (unsigned long long)hControlWnd; // winhandle\82ðhost\91¤\82Ö\93n\82· \8f\89\8aú\89»\8a®\97¹\83t\83\89\83O
+ return TRUE;
+error:
+ uninit_bridge();
+ ErrorMessageBox(errortext);
+ return FALSE;
+}
+
+int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
+{
+ static int init = 0;
+ MSG msg;
+
+ if(init++) return FALSE;
+ if (!InitInstance(hInstance, nCmdShow)){
+ return FALSE;
+ }
+ // PeekMessage(&msg, NULL, WM_COMMAND, WM_COMMAND, PM_NOREMOVE);
+ while( GetMessage(&msg,NULL,0,0) ){ // message loop
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ uninit_bridge();
+ return (int) msg.wParam;
+}
+
+
--- /dev/null
+// Generated by ResEdit 1.5.11
+// Copyright (C) 2006-2012
+// http://www.resedit.net
+
+#include <windows.h>
+#include <commctrl.h>
+#include <richedit.h>
+#include "twsyn_bridge_exe_res.h"
+
+
+
+
+
+//
+// Dialog resources
+//
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+IDD_DIALOG_DUMMY DIALOG 0, 0, 115, 25
+STYLE DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_POPUP | WS_SYSMENU
+CAPTION "TWSYN Bridge"
+FONT 8, "Tahoma"
+{
+ DEFPUSHBUTTON "OK", IDOK, 5, 5, 50, 15
+ PUSHBUTTON "Cancel", IDCANCEL, 60, 5, 50, 15
+}
+
+
+
+//
+// Icon resources
+//
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+IDI_ICON_BRIDGE16 ICON "bridge-16.ico"
+
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+IDI_ICON_BRIDGE32 ICON "bridge-32.ico"
+
+
+
+//
+// Version Information resources
+//
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+1 VERSIONINFO
+ FILEVERSION 1,1,0,1
+ PRODUCTVERSION 1,1,0,1
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE VFT2_UNKNOWN
+ FILEFLAGSMASK 0x00000000
+ FILEFLAGS 0x00000000
+{
+ BLOCK "StringFileInfo"
+ {
+ BLOCK "041104B0"
+ {
+ VALUE "CompanyName", "nullpo"
+ VALUE "FileDescription", "TWSYN Bridge"
+ VALUE "FileVersion", "1, 1, 0, 1"
+ VALUE "InternalName", "twsyn_bridge"
+ VALUE "LegalCopyright", "Copyright (C) 2018"
+ VALUE "OriginalFilename", "twsyn_bridge_x86.exe twsyn_bridge_x64.exe"
+ VALUE "ProductName", "TWSYN Bridge"
+ VALUE "ProductVersion", "1, 1, 0, 1"
+ }
+ }
+ BLOCK "VarFileInfo"
+ {
+ VALUE "Translation", 0x0411, 0x04B0
+ }
+}
--- /dev/null
+
+
+
+#define IDD_DIALOG_DUMMY 101
+#define IDI_ICON_BRIDGE16 900
+#define IDI_ICON_BRIDGE32 901
--- /dev/null
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#ifdef USE_TWSYN_BRIDGE
+
+#define _DLLC
+#define STRICT
+#include <stdlib.h>
+#include <io.h>
+#include <windows.h>
+#include <process.h>
+#include <windows.h>
+#include <winuser.h>
+#include <windef.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <tchar.h>
+#pragma comment(lib, "shlwapi.lib")
+#include <shlwapi.h>
+#include <mmsystem.h>
+#include "w32g_res.h"
+#include "twsyn_bridge_common.h"
+#include "twsyn_bridge_host.h"
+#pragma hdrstop
+
+// bridge
+static DWORD PrcsId = 0;
+static DWORD PrcsVer = 0;
+static HWND hControlWnd = NULL;
+static UINT uControlMess = 0;
+// host
+static HWND hControlWndHost = NULL;
+static UINT uControlMessHost = 0;
+static char ExePath[FILEPATH_MAX + 4] = "";
+static HANDLE hFileMap = NULL;
+static fm_bridge_t *shared_data = NULL;
+static PROCESS_INFORMATION pi;
+static int run_bridge = 0;
+static int error_bridge = 0;
+
+static void ErrorMessageBox(const char *text,DWORD errorcode)
+{
+ const char title[] = "twsyn_bridge(host)";
+ char buf[0x800];
+
+ wsprintfA(buf,"%s (code:%d)", text, errorcode);
+ MessageBox(NULL, buf, title, MB_OK | MB_ICONEXCLAMATION);
+}
+
+static void uninit_bridge(void)
+{
+ if(hControlWndHost){
+ EndDialog(hControlWndHost, FALSE);
+ hControlWndHost = NULL;
+ }
+ if(shared_data != NULL) {
+ UnmapViewOfFile(shared_data);
+ shared_data = NULL;
+ }
+ if(hFileMap != NULL) {
+ CloseHandle(hFileMap);
+ hFileMap = NULL;
+ }
+ if(pi.hProcess){
+ WaitForInputIdle(pi.hProcess, 100);
+ TerminateProcess(pi.hProcess, 0);
+ CloseHandle(pi.hProcess);
+ }
+ run_bridge = 0;
+ error_bridge = 0;
+}
+
+static int check_bridge(void)
+{
+ if(!run_bridge)
+ return 1;
+ if(GetProcessVersion(PrcsId) == PrcsVer)
+ return 0;
+ ErrorMessageBox("bridge host error : lost twsyn bridge process.", 0);
+ uninit_bridge();
+ return 1;
+}
+
+LRESULT APIENTRY CALLBACK CtrlWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
+{
+ if(!run_bridge)
+ return FALSE;
+ if(uMess == uControlMessHost){
+ switch(wParam){
+ case WMC_MIM_DATA:
+ case WMC_MIM_LONGDATA:
+ MidiInProc(NULL, shared_data->wMsg, shared_data->dwInstance, shared_data->dwParam1, shared_data->dwParam2);
+ return TRUE;
+ }
+ }else switch (uMess){
+ case WM_COMMAND:
+ switch(LOWORD(wParam)){
+ case IDOK:
+ return TRUE;
+ case IDCANCEL:
+ return TRUE;
+ }
+ break;
+ case WM_INITDIALOG:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+int get_bridge_midi_devs(void)
+{
+ if(check_bridge())
+ return 0;
+ SendMessage(hControlWnd, uControlMess, WMC_GET_MIDI_DEVS, (LPARAM)NULL);
+ return shared_data->midi_dev_num;
+}
+
+char *get_bridge_midi_dev_name(int num)
+{
+ if(!run_bridge)
+ return NULL;
+ if(num < 0)
+ num = 0;
+ if(num > shared_data->midi_dev_num)
+ num = shared_data->midi_dev_num;
+ return shared_data->midi_devs[num];
+}
+
+int get_bridge_mim_databytes(int num)
+{
+ if(!run_bridge)
+ return 0;
+ return shared_data->dwBytes[num];
+}
+
+char *get_bridge_mim_longdata(int num)
+{
+ if(!run_bridge)
+ return NULL;
+ return shared_data->lpData[num];
+}
+
+void open_bridge_midi_dev(int portnumber, unsigned int *portID)
+{
+ int i;
+ if(check_bridge())
+ return;
+ shared_data->portnumber = portnumber;
+ for(i = 0; i < BRIDGE_MAX_PORT; i++)
+ shared_data->portID[i] = portID[i];
+ SendMessage(hControlWnd, uControlMess, WMC_OPEN_MIDI_DEVS, (LPARAM)NULL);
+}
+
+void close_bridge_midi_dev(void)
+{
+ int i;
+ if(!run_bridge)
+ return;
+ SendMessage(hControlWnd, uControlMess, WMC_CLOSE_MIDI_DEVS, (LPARAM)NULL);
+}
+
+void close_bridge(void)
+{
+ if(!run_bridge)
+ return;
+ SendMessage(hControlWnd, uControlMess, WMC_CLOSE_BRIDGE, (LPARAM)NULL); // close_bridge
+ uninit_bridge();
+}
+
+void init_bridge(void)
+{
+ STARTUPINFO si;
+ WNDCLASSEX wc;
+ HINSTANCE hInstance = NULL;
+ HANDLE hfile = NULL;
+ char *errortext;
+ int result, count, error = 0;
+
+ if(run_bridge)
+ return;
+ if(error_bridge)
+ return;
+ // get instance
+ hInstance = GetModuleHandle(0);
+ // bridge exe path
+ if(GetModuleFileName(hInstance, ExePath, FILEPATH_MAX - 1)){
+ PathRemoveFileSpec(ExePath);
+ strcat(ExePath,"\\");
+ }else{
+ ExePath[0] = '.';
+ ExePath[1] = '\\';
+ ExePath[2] = '\0';
+ }
+ strcat(ExePath, EXE_NAME);
+ // check bridge exe
+ hfile = CreateFile(ExePath, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+ if(hfile == INVALID_HANDLE_VALUE){
+ // errortext = "host error : bridge.exe not exist.";
+ // goto error;
+ error_bridge = 1;
+ return;
+ }
+ CloseHandle(hfile);
+ hfile = NULL;
+ // CreateFileMapping
+ hFileMap = CreateFileMapping(FILE_HANDLE, NULL, PAGE_READWRITE, 0, sizeof(fm_bridge_t), COMMON_FM_NAME);
+ if(hFileMap == NULL){
+ errortext = "bridge host error : CreateFileMapping.";
+ goto error;
+ }
+ if(GetLastError() == ERROR_ALREADY_EXISTS){ // \93ñ\8fd\8bN\93®\96h\8e~
+ errortext = "bridge host error : CreateFileMapping ALREADY_EXISTS.";
+ goto error;
+ }
+ // open FileMap
+ shared_data = (fm_bridge_t *)MapViewOfFile(hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
+ if(shared_data == NULL){
+ errortext = "bridge host error : MapViewOfFile.";
+ goto error;
+ }
+ memset(shared_data, 0, sizeof(shared_data));
+ // send exsit flag
+ shared_data->exit = 1; // \93ñ\8fd\8bN\93®\96h\8e~ (\8cÃ\82¢\83u\83\8a\83b\83W\82ð\8fI\97¹ \83u\83\8a\83b\83W\91¤\82Å\83X\83\8c\83b\83h\8bN\93®\91O\82É\89ð\8f\9c
+ // send processID
+ shared_data->PrcsIdHost = GetCurrentProcessId();
+ // send process Version
+ shared_data->PrcsVerHost = GetProcessVersion(shared_data->PrcsIdHost);
+ // resister ctrl message
+ uControlMessHost = RegisterWindowMessage("twsyn_bridge_host");
+ if(!uControlMessHost){
+ errortext = "bridge host error : RegisterWindowMessage.";
+ goto error;
+ }
+ // send ctrl message
+ shared_data->uControlMessHost = uControlMessHost;
+ // create window
+ hControlWndHost = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_TWSYN_BRIDGE), NULL, (DLGPROC)CtrlWndProc);
+ if(!hControlWndHost){
+ errortext = "bridge host error : CreateDialog.";
+ goto error;
+ }
+ ShowWindow(hControlWndHost, SW_HIDE);
+// ShowWindow(hControlWndHost, SW_SHOW);
+ // send win handle
+ shared_data->hControlWndHost = hControlWndHost;
+ // run bridge
+ si.cb = sizeof(si);
+ si.lpReserved = NULL;
+ si.lpDesktop = NULL;
+ si.lpTitle = NULL;
+ si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
+ si.cbReserved2 = 0;
+ si.lpReserved2 = NULL;
+ si.wShowWindow = SW_HIDE;
+ si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
+ if(CreateProcess(ExePath,NULL,NULL,NULL,TRUE,
+ CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&si,&pi) == FALSE ){
+ errortext = "host error : run bridge.exe.";
+ goto error;
+ }
+ // recieve bridge hControlWnd
+ count = 0;
+ while(!shared_data->hControlWnd){
+ Sleep(100);
+ if((count++) > 50){ // wait max 5sec
+ errortext = "host error : hControlWnd timeout.";
+ goto error;
+ }
+ }
+ uControlMess = (UINT)shared_data->uControlMess;
+ hControlWnd = (HWND)shared_data->hControlWnd;
+ // recieve processID
+ PrcsId = shared_data->PrcsId;
+ // recieve process Version
+ PrcsVer = shared_data->PrcsVer;
+ run_bridge = 1;
+ return;
+error:
+ result = GetLastError();
+ CloseWindow(hControlWndHost);
+ if(shared_data != NULL) {
+ UnmapViewOfFile(shared_data);
+ shared_data = NULL;
+ }
+ if(hFileMap != NULL) {
+ CloseHandle(hFileMap);
+ hFileMap = NULL;
+ }
+ if(pi.hProcess){
+ WaitForInputIdle(pi.hProcess, 100);
+ TerminateProcess(pi.hProcess, 0);
+ CloseHandle(pi.hProcess);
+ }
+ ErrorMessageBox(errortext,result);
+ run_bridge = 0;
+ error_bridge = 1;
+ return;
+}
+
+#endif // USE_BRIDGE
\ No newline at end of file
--- /dev/null
+
+#pragma once
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#ifdef USE_TWSYN_BRIDGE
+
+#define EXE_NAME32 "twsyn_bridge_x86.exe"
+#define EXE_NAME64 "twsyn_bridge_x64.exe"
+
+#ifdef _WIN64
+#define EXE_NAME EXE_NAME32
+#define BRD_EXE_NAME EXE_NAME64
+#define FILE_HANDLE ((HANDLE)0xffffffffffffffff)
+#else
+#define EXE_NAME EXE_NAME64
+#define BRD_EXE_NAME EXE_NAME32
+#define FILE_HANDLE ((HANDLE)0xffffffff)
+#endif
+
+#define FILEPATH_MAX 32000
+
+
+extern int opt_use_twsyn_bridge;
+extern void close_bridge(void);
+extern void init_bridge(void);
+extern int get_bridge_midi_devs(void);
+extern char *get_bridge_midi_dev_name(int num);
+extern void open_bridge_midi_dev(int portnumber, unsigned int *portID);
+extern void close_bridge_midi_dev(void);
+extern int get_bridge_mim_databytes(int num);
+extern char *get_bridge_mim_longdata(int num);
+
+extern void CALLBACK MidiInProc(HMIDIIN hMidiInL, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
+
+#endif // USE_BRIDGE
+
+
+
+
+
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
- AdditionalIncludeDirectories="..\interface,..\libarc,..\libunimod,..\timidity,..\utils,..,..\..\include,..\portaudio\pa_common"
+ AdditionalIncludeDirectories="..\twsyn_bridge,..\interface,..\libarc,..\libunimod,..\timidity,..\utils,..,..\..\include,..\portaudio\pa_common"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32"
StringPooling="true"
ExceptionHandling="0"
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\interface,..\libarc,..\libunimod,..\timidity,..\utils,..,..\..\include,..\portaudio\pa_common"
+ AdditionalIncludeDirectories="..\twsyn_bridge,..\interface,..\libarc,..\libunimod,..\timidity,..\utils,..,..\..\include,..\portaudio\pa_common"
PreprocessorDefinitions="WIN32;__DEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32"
StringPooling="true"
MinimalRebuild="true"
>
</File>
<File
+ RelativePath="..\twsyn_bridge\twsyn_bridge_host.c"
+ >
+ </File>
+ <File
RelativePath="..\timidity\version.c"
>
</File>
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">twsyng_c212</TargetName>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">twsyng_x64_c212</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">twsyng_c213</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">twsyng_x64_c213</TargetName>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_x64</TargetName>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
- <AdditionalIncludeDirectories>..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\twsyn_bridge;..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
- <AdditionalIncludeDirectories>..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\twsyn_bridge;..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WIN64;WIN32;NDEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>
<AssemblerListingLocation>.\Release/</AssemblerListingLocation>
<ObjectFileName>.\Release/</ObjectFileName>
<ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
- <WarningLevel>TurnOffAllWarnings</WarningLevel>
+ <WarningLevel>Level1</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<CompileAs>CompileAsC</CompileAs>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\twsyn_bridge;..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;__DEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<MinimalRebuild>true</MinimalRebuild>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
+ <LargeAddressAware>true</LargeAddressAware>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_WIN64;WIN32;__DEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\twsyn_bridge;..\interface;..\libarc;..\libunimod;..\timidity;..\utils;..;..\..\include;..\portaudio\pa_common;..\libspeex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_WIN64;WIN32;_DEBUG;_WINDOWS;HAVE_CONFIG_H;_MT;TWSYNG32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>
</ExceptionHandling>
<Culture>0x0411</Culture>
</ResourceCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>./Debug/twsyng.exe</OutputFile>
+ <OutputFile>$(TargetPath)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>.\Debug/twsyng.pdb</ProgramDatabaseFile>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
+ <LargeAddressAware>true</LargeAddressAware>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\interface\winsyn_c.c" />
<ClCompile Include="..\timidity\wrd_read.c" />
<ClCompile Include="..\timidity\wrdt.c" />
+ <ClCompile Include="..\twsyn_bridge\twsyn_bridge_host.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\interface\w32g_res.rc">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">twsynsrv_x64</TargetName>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_x64</TargetName>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
</ClCompile>
<Link>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>../Debug/twsynsrv.exe</OutputFile>
+ <OutputFile>$(TargetPath)</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)twsynsrv.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\Debug\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">timiditydrv</TargetName>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;</LibraryPath>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">timiditydrv</TargetName>
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib\amd64;$(WindowsSdkDir)lib\x64;</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
</ClCompile>
<Link>
<AdditionalDependencies>winmm.lib;wsock32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>..\Debug\timiditydrv.dll</OutputFile>
+ <OutputFile>$(TargetPath)</OutputFile>
<ModuleDefinitionFile>.\timiditydrv.def</ModuleDefinitionFile>
<MergedIDLBaseFileName>timiditydrv.idl</MergedIDLBaseFileName>
<GenerateDebugInformation>true</GenerateDebugInformation>