OSDN Git Service

Import UnkoTim213 unkotim213
authorStarg <starg@users.osdn.me>
Thu, 11 Jan 2018 01:05:11 +0000 (10:05 +0900)
committerStarg <starg@users.osdn.me>
Thu, 11 Jan 2018 01:05:11 +0000 (10:05 +0900)
37 files changed:
config.h
interface/interface.vcxproj
interface/rtsyn_winmm.c
interface/w32g_ini.c
interface/w32g_pref.c
interface/w32g_res.h
interface/w32g_res.rc
interface/w32g_syn.c
interface/w32g_utl.c
interface/w32g_utl.h
libarc/libarc.vcxproj
libunimod/libunimod.vcxproj
pdcurses/pdcurses.vcproj
pdcurses/pdcurses.vcxproj
portmidi/portmidi.vcxproj
speex/libspeex.vcxproj
tim_cui/tim_cui.vcxproj
timdrvsetup/timdrvsetup.vcxproj
timidity/timidity.vcxproj
timidity_vs2008.sln
timidity_vs2010.sln
timw32g/timw32g.vcxproj
twsyn_bridge/bridge-16.ico [new file with mode: 0644]
twsyn_bridge/bridge-32.ico [new file with mode: 0644]
twsyn_bridge/twsyn_bridge.vcproj [new file with mode: 0644]
twsyn_bridge/twsyn_bridge.vcxproj [new file with mode: 0644]
twsyn_bridge/twsyn_bridge_common.h [new file with mode: 0644]
twsyn_bridge/twsyn_bridge_exe.c [new file with mode: 0644]
twsyn_bridge/twsyn_bridge_exe.rc [new file with mode: 0644]
twsyn_bridge/twsyn_bridge_exe_res.h [new file with mode: 0644]
twsyn_bridge/twsyn_bridge_host.c [new file with mode: 0644]
twsyn_bridge/twsyn_bridge_host.h [new file with mode: 0644]
twsyng/twsyng.vcproj
twsyng/twsyng.vcxproj
twsynsrv/twsynsrv.vcxproj
utils/utils.vcxproj
windrv/windrv.vcxproj

index bca3f97..0b3ae56 100644 (file)
--- a/config.h
+++ b/config.h
 #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
index 2ce10a7..12d21ed 100644 (file)
   <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>
index 0b13f9c..8776510 100644 (file)
 #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];
@@ -108,17 +112,29 @@ CRITICAL_SECTION mim_section;
 
 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(){
@@ -132,42 +148,49 @@ 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();
@@ -181,15 +204,19 @@ winmmerror:
 
 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");
@@ -246,19 +273,28 @@ int rtsyn_play_some_data(void){
                                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());      
@@ -302,3 +338,4 @@ void CALLBACK MidiInProc(HMIDIIN hMidiInL, UINT wMsg, DWORD_PTR dwInstance,
                break;
        }
 }
+
index 5907d51..0deefda 100644 (file)
@@ -529,7 +529,8 @@ void LoadIniFile(SETTING_PLAYER *sp,  SETTING_TIMIDITY *st)
     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
@@ -765,6 +766,7 @@ SaveIniFile(SETTING_PLAYER *sp,  SETTING_TIMIDITY *st)
     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
index 135c87f..cb87e47 100644 (file)
@@ -1386,37 +1386,67 @@ PrefPlayerDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
        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;
 }
 
@@ -1477,7 +1507,13 @@ PrefSyn1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
                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 ++ ) {
@@ -1500,18 +1536,20 @@ PrefSyn1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
                        }
                        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)
@@ -1560,6 +1598,44 @@ PrefSyn1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
                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];
@@ -1613,7 +1689,10 @@ PrefSyn1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
                        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;
index 4c372c2..39d1e2f 100644 (file)
@@ -18,6 +18,7 @@
 #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
index 59fdab5..1b9413d 100644 (file)
@@ -187,7 +187,15 @@ FONT 8, "Tahoma"
     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
@@ -769,7 +777,7 @@ FONT 9, "MS UI Gothic", 0, 0, 1
     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
@@ -3092,6 +3100,7 @@ FONT 9, "MS UI Gothic", 0, 0, 1
     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
@@ -3140,6 +3149,7 @@ FONT 8, "Tahoma", 400, 0, 0
     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
index 3bcdc36..536244c 100755 (executable)
@@ -96,6 +96,11 @@ WINAPI void InitCommonControls(void);
 
 #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
@@ -169,7 +174,7 @@ char *w32g_output_dir = NULL;
 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);
@@ -471,7 +476,7 @@ static int w32g_syn_main(void)
        while (w32g_syn.quit_state < 2) {
                Sleep(300);
        }
-
+       
        return 0;
 }
 
@@ -664,6 +669,9 @@ SynWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
                        PostQuitMessage(0);
                        return -1;
                }
+#ifdef USE_TWSYN_BRIDGE
+               init_bridge();
+#endif
 #ifdef VST_LOADER_ENABLE
                if (!hVSTHost) {
 #ifdef _WIN64
@@ -699,6 +707,9 @@ SynWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
                        hVSTHost = NULL;
                }
 #endif
+#ifdef USE_TWSYN_BRIDGE
+               close_bridge();
+#endif
                DeleteTasktrayIcon(hwnd);
                PostQuitMessage(0);
                break;
index f343f5b..5b1f91e 100644 (file)
@@ -568,6 +568,7 @@ extern int w32g_syn_port_num;
 #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;
@@ -795,6 +796,7 @@ ApplySettingTiMidity(SETTING_TIMIDITY *st)
        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;
@@ -1050,6 +1052,7 @@ SaveSettingTiMidity(SETTING_TIMIDITY *st)
        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;
index 6d02387..4831f01 100644 (file)
@@ -250,6 +250,7 @@ typedef struct SETTING_TIMIDITY_ {
                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;
index 7871d07..035aa37 100644 (file)
   <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>
index 3a70330..3536664 100644 (file)
   <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>
index 00d77f2..7046639 100644 (file)
@@ -93,7 +93,7 @@
                        />
                        <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>
index 0244d08..a2ca564 100644 (file)
@@ -47,6 +47,7 @@
     <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>
index c4e79a2..fd3322e 100644 (file)
@@ -47,6 +47,7 @@
     <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>
index c75feb5..855bc63 100644 (file)
@@ -39,6 +39,7 @@
   <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>
index 1f9e762..693623d 100644 (file)
@@ -47,6 +47,7 @@
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>Windows7.1SDK</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -86,7 +87,8 @@
     <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>
index eb6441d..e8ad1a3 100644 (file)
@@ -33,6 +33,7 @@
     <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>
@@ -86,6 +87,7 @@
   <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>
index c92f661..1a5f6ea 100644 (file)
@@ -46,6 +46,7 @@
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>Windows7.1SDK</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -70,9 +71,9 @@
   <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>
@@ -84,7 +85,7 @@
     <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>
index 8a6cd62..15cc3d1 100644 (file)
@@ -84,6 +84,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timdrvsetup", "timdrvsetup\
                {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
@@ -166,6 +168,10 @@ Global
                {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
index c3c58a8..1ca3745 100644 (file)
@@ -48,6 +48,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tim_cui", "tim_cui\tim_cui.
 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
@@ -224,6 +226,14 @@ Global
                {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
index 85d57d5..82434cc 100644 (file)
@@ -90,8 +90,8 @@
     <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'">
diff --git a/twsyn_bridge/bridge-16.ico b/twsyn_bridge/bridge-16.ico
new file mode 100644 (file)
index 0000000..820ae83
Binary files /dev/null and b/twsyn_bridge/bridge-16.ico differ
diff --git a/twsyn_bridge/bridge-32.ico b/twsyn_bridge/bridge-32.ico
new file mode 100644 (file)
index 0000000..1aec09c
Binary files /dev/null and b/twsyn_bridge/bridge-32.ico differ
diff --git a/twsyn_bridge/twsyn_bridge.vcproj b/twsyn_bridge/twsyn_bridge.vcproj
new file mode 100644 (file)
index 0000000..fedd8d4
--- /dev/null
@@ -0,0 +1,198 @@
+<?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>
diff --git a/twsyn_bridge/twsyn_bridge.vcxproj b/twsyn_bridge/twsyn_bridge.vcxproj
new file mode 100644 (file)
index 0000000..587b670
--- /dev/null
@@ -0,0 +1,188 @@
+<?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
diff --git a/twsyn_bridge/twsyn_bridge_common.h b/twsyn_bridge/twsyn_bridge_common.h
new file mode 100644 (file)
index 0000000..a7e3a0c
--- /dev/null
@@ -0,0 +1,51 @@
+
+#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,
+};
diff --git a/twsyn_bridge/twsyn_bridge_exe.c b/twsyn_bridge/twsyn_bridge_exe.c
new file mode 100644 (file)
index 0000000..08f3952
--- /dev/null
@@ -0,0 +1,371 @@
+
+
+
+#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;
+}
+
+
diff --git a/twsyn_bridge/twsyn_bridge_exe.rc b/twsyn_bridge/twsyn_bridge_exe.rc
new file mode 100644 (file)
index 0000000..bf518f8
--- /dev/null
@@ -0,0 +1,72 @@
+// 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
+    }
+}
diff --git a/twsyn_bridge/twsyn_bridge_exe_res.h b/twsyn_bridge/twsyn_bridge_exe_res.h
new file mode 100644 (file)
index 0000000..bd42312
--- /dev/null
@@ -0,0 +1,6 @@
+
+
+
+#define IDD_DIALOG_DUMMY   101
+#define IDI_ICON_BRIDGE16    900
+#define IDI_ICON_BRIDGE32    901
diff --git a/twsyn_bridge/twsyn_bridge_host.c b/twsyn_bridge/twsyn_bridge_host.c
new file mode 100644 (file)
index 0000000..cb094cf
--- /dev/null
@@ -0,0 +1,306 @@
+
+
+#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
diff --git a/twsyn_bridge/twsyn_bridge_host.h b/twsyn_bridge/twsyn_bridge_host.h
new file mode 100644 (file)
index 0000000..445f3e9
--- /dev/null
@@ -0,0 +1,43 @@
+
+#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
+
+
+
+
+
index 16381d1..373fd5d 100644 (file)
@@ -51,7 +51,7 @@
                                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>
index 5287ebb..bcb9cd2 100644 (file)
@@ -31,6 +31,7 @@
     <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">
index ef5f734..7305b3b 100644 (file)
@@ -43,6 +43,7 @@
   <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">
@@ -81,6 +82,7 @@
     <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>
index dd38019..bcfe1c8 100644 (file)
@@ -46,6 +46,7 @@
     <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>
index 46fe26b..2cd10c9 100644 (file)
@@ -44,6 +44,7 @@
   <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">
@@ -84,6 +85,7 @@
     <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>