I.- Compilación de las bibliotecas (.lib y .dll).
1.- Bajar el snapshot de: https://sourceforge.net/p/midishare/code/ci/dev/tree/
("midishare-code-7f6d6d99e18258c5fa65c7617661e7578c78111a.zip")
2.- Descomprimir en una carpeta temporal, por ejemplo, "C:\Temporal”.
A la carpeta descomprimida dar el nombre de "midishare-1.93" (por comodidad, en vez del nombre por defecto: “midishare-code-7f6d6d99e18258c5fa65c7617661e7578c78111a”).
3.- Crear una carpeta en "C:\Temporal\midishare-1.93\src" con el nombre "vs2005" y otra con el nombre "vs2005-64". (Aunque puede compilarse en cualquier versión de VS, este nombre es necesario para compilar posteriormente las aplicaciones necesarias).
4.- Abrir el archivo "Msctrl.c" de “C:\Temporal\midishare-1.93\src\win-mono\Applications\msControl”
Ir a la línea 61 y sustituir
void MSALARMAPI ReceiveEvents(register short);
con
void __cdecl ReceiveEvents(register short);
Ir a la línea 115 y agregar
INT_PTR ret;
Ir a la línea 137 y sustituir
INT_PTR ret = DialogBox(hInstance, "UCTRL", NULL, MakeProcInstance(UniversalCtrlDlgProc, hInstance));
con
ret = DialogBox(hInstance, "UCTRL", NULL, MakeProcInstance(UniversalCtrlDlgProc, hInstance));
Ir a la línea 380 y sustituir
void MSALARMAPI ReceiveEvents(register short r) {
con
void __cdecl ReceiveEvents(register short r) {
y guardar.
5.- Abrir el archivo "msMMDriver.h" de "C:\Temporal\midishare-code-1.93\src\win-mono\Drivers\msMMSystem"
Ir a la línea 58 y sustituir
void MSALARMAPI RcvAlarm(short refNum);
con
void __cdecl RcvAlarm(short refNum);
y guardar.
6.- Abrir el archivo "msMMDriver.c" de "C:\Temporal\midishare-code-1.93\src\win-mono\Drivers\msMMSystem"
Ir a la línea 142 y sustituir
void MSALARMAPI RcvAlarm (short refNum )
con
void __cdecl RcvAlarm (short refNum )
Ir a la línea 199 y sustituir
MMRESULT ret = midiInOpen (&h, slot->mmIndex, (DWORD)MidiInProc, (DWORD)slot, CALLBACK_FUNCTION);
con
MMRESULT ret = midiInOpen (&h, slot->mmIndex, (DWORD_PTR)MidiInProc, (DWORD_PTR)slot, CALLBACK_FUNCTION);
y guardar.
7.- Abrir el archivo “MidiShare.h” de "C:\Temporal\midishare-code\src\include"
Ir a la línea 445 y cambiar de
typedef ALARMTYPE void (MSALARMAPI * RcvAlarmPtr) ( short refNum );
a
typedef ALARMTYPE void (__cdecl * RcvAlarmPtr) ( short refNum );
y guardar.
8.- Abrir el archivo “TFonctions.c” de "C:\Temporal\midishare-code-1.93\src\tools"
Ir a línea 93 y sustituir
void MSALARMAPI RcvAlarm( short unused1)
con
void __cdecl RcvAlarm( short unused1)
y guardar.
9.- Abrir el archivo “TDrivers.c” de "C:\Temporal\midishare-code-1.93\src\tools"
Ir a línea 76 y sustituir
void MSALARMAPI RcvAlarm( short refnum)
con
void __cdecl RcvAlarm( short refnum)
y guardar.
10.- Abrir CMake-gui. En "Where is the source code:" escribir o buscar la carpeta "C:/Temporal/midishare-1.93/src/cmake". En "Where to build the binaries:" escribir o buscar "C:/Temporal/midishare-1.93/src/vs2005" para la compilación en 32 bits o "C:/Temporal/midishare-1.93/src/vs2005-64" para la compilación en 64 bits. Hacer clic en el botón [Configure]. Elegir el generador (dependiendo de la versión de Visual Studio y de la plataforma: "Visual Studio 8 2005", "Visual Studio 8 2005 Win64", "Visual Studio 9 2008", "Visual Studio 9 2008 Win64", "Visual Studio 10 2010", "Visual Studio 10 2010 Win64", "Visual Studio 11 2012", "Visual Studio 11 2012 Win64", "Visual Studio 12 2013", "Visual Studio 12 2013 Win64", "Visual Studio 14 2015", "Visual Studio 14 2015 Win64", "Visual Studio 15 2017" o "Visual Studio 15 2017 Win64", que son los permitidos en Cmake 3.10.2),. Cuando termine la configuración, dar clic en el botón [Configure] una segunda vez. Dar click en el botón [Generate]. Cerrar CMake-gui.
11.- Dar doble click en "midishare.sln" que se encuentra en "C:\Temporal\midishare-1.93\src\vs2005" o en "C:\Temporal\midishare-1.93\src\vs2005" dependiendo de la plataforma elegida.
12.- En el menú, dar clic en "Generar -> Administrador de la configuración...". En la ventana "Administración de la configuración", en el combo "Configuración de soluciones activas:" elegir "Release". Dar clic en el botón [Cerrar].
13.- Solamente para las versiones de VS2015 y VS2017 hacer lo siguiente:
32 bit
En el "Explorador de soluciones" dar clic derecho "mshare32" y seleccionar "Propiedades". En "Propiedades de configuración -> Vinculador -> Entrada", en "Dependencias adicionales" editar la línea y adicionar al final la línea "ucrt.lib" y luego otra lína nueva con "vcruntime.lib".
64 bit
En el "Explorador de soluciones" dar clic derecho "mshare64" y seleccionar "Propiedades". En "Propiedades de configuración -> Vinculador -> Entrada", en "Dependencias adicionales" editar la línea y adicionar al final la línea "ucrt.lib" y luego otra lína nueva con "vcruntime.lib".
14.- En el menú, dar clic en "Generar -> Generar solución".
Los archivos compilados se encuentran en la carpeta "C:\Temporal\midishare-1.93\src\vs2005\Release".
II.- Compilación del deriver “msMMSystem.dll” (32 bits), “msMMSystem64.dll” (64 bits) y las aplicaciones “msControl.exe”, “msDrivers.exe” (32 bits) y “msControl64.exe”, “msDrivers64.exe” (64 bits).
1.- En el Explorador de Windows, ir a la carpeta "C:\Temporal\midishare-1.93\src\win-mono\VCProject" y abrir el archivo "midishare.sln". Si se eligió VS 2005 no hay que convertir la solución a una nueva versión. Con las otras versiones de Visual Studio hay que seguir las instrucciones de conversión de la solución. Con VS 2008 o VS 2010 se puede hacer la conversión directa desde el archivo "midishare.sln" original. (NOTA: Para las versiones superiores a VS 2010, se hace primero la conversión con VS 2010 y luego de hacer los cambios del siguiente párrafo, hacer la conversión a la versión de Visual Studio utilizada en Cmake-gui). Seguir los pasos de conversión de la solución. Se producen varios errores al convertir, pero se pueden pasar por alto.
2.- En el "Explorador de soluciones", seleccionar simultaneamente "msEcho (no disponible)", "msLANDriver (no disponible)", "msWANDriver (no disponible)", "RadioHardDisk (no disponible)" y "testms (no disponible)". Dar clic derecho en cualquiera de los ítems seleccionados y elegir "Quitar". Dar clic en el botón [Aceptar] en la ventana de advertencia.
3.- En el menú, dar clic en "Generar -> Administrador de la configuración...". En la ventana "Administración de la configuración", en el combo "Configuración de soluciones activas:" elegir "Release". Dar clic en el botón [Cerrar].
4.- Para las versiones de 32 y 64 bits hacer los siguientes cambios. Tener en cuenta las versiones de Visual Studio a la que están dirigidas:
**** VS2005 ****
En el "Explorador de soluciones" dar clic derecho " msMMSystem " y seleccionar "Propiedades". En "Propiedades de configuración -> C/C++ -> Preprocesador", en "Definiciones del preprocesador" editar la línea y adicionar al final la línea "_WIN32_DCOM" y luego otra lína nueva con "_WIN32_WINNT 0x0400".
**** VS2010 Express ****
En el "Explorador de soluciones" seleccionar simultáneamente "msControl32", "msDrivers" y "msMMSystem". Dar clic derecho en cualquiera de los ítems seleccionados. Seleccionar "Propiedades". En "Propiedades de configuración -> General", en "Plataform toolset" cambiar de “v100” a “Windows7.1SDK”.
**** VS2015 y VS2017 ****
En el "Explorador de soluciones" dar clic derecho "msMMSystem" y seleccionar "Propiedades". En "Propiedades de configuración -> Vinculador -> Entrada", en "Dependencias adicionales" editar la línea y adicionar al final la línea "ucrt.lib".
5.- Para la versión de 64 bits exclusivamente y en todas las versiones de Visual Studio, hacer lo siguiente:
En el "Explorador de soluciones" seleccionar simultáneamente "msControl32", "msDrivers" y "msMMSystem". Dar clic derecho en cualquiera de los ítems seleccionados. En “C/C++ -> Preprocesador”, en “Definiciones de preprocesador”, Editar y borrar "__x86_64__"
6.- En el menú, dar clic en "Generar -> Generar solución".
7.- Los archivos compilados son "msControl.exe" y "msDrivers.exe" que se encuentran en "C:\Temporal\midishare-1.93\src\win-mono\Applications"; el archivo "msMMSystem.dll" que se encuentra en "C:\Temporal\midishare-1.93\src\win-mono\Drivers".
III.- Distribución.
1.- Crear una carpeta con el nombre "MidiShare-1.93-dev-vsXX-xYY" en una carpeta temporal, donde:
A.- Para la compilación en 32 bits:
A.2.- En la carpeta "MidiShare-1.93-dev-vsXX-x86" crear las carpetas "bin", "include" y "lib". En la carpeta "bin" copiar los archivos que se encuentran en la carpeta "C:\Temporal\midishare-1.93\src\vs2005\Release":
MidiConnect.exe
MidiCountAppls.exe
MidiGetIndAppl.exe
MidiGetName.exe
MidiGetNamedAppl.exe
MidiGetTime.exe
MidiGetVersion.exe
MidiIsConnected.exe
mshare32.dll
TDrivers.exe
TEvents.exe
TFilters.exe
TFonctions.exe
TLin.exe
TOutEvents.exe
A.3.- En la misma carpeta "bin", copiar los archivos "msControl.exe" y "msDrivers.exe" que se encuentran en "C:\Temporal\midishare-1.93\src\win-mono\Applications" y el archivo "msMMSystem.dll" que se encuentra en "C:\Temporal\midishare-1.93\src\win-mono\Drivers".
A.4.- Abrir "notepad++" y crear un nuevo documento. En él escribir:
[Events memory]
default=60000
[Drivers]
active=msMMSystem.dll
disable=
y guardar como "midishare.ini" en la misma carpeta "bin".
A.5.- Con "notepad++" nuevamente, crear un nuevo documento. En él escribir:
[Output Slots]
Microsoft GS Wavetable Synth=0
y guardar como "msMMSystem.ini" en la misma carpeta "bin".
A.6.- En la carpeta "lib" creada en el punto III-4, copiar los archivos "mshare32.lib" y "mshare32.exp", que se encuentran en la carpeta "C:\Temporal\midishare-1.93\src\vs2005\Release".
B.- Para la compilación en 64 bits:
B.2.- En la carpeta "MidiShare-1.93-dev-vsXX-x64" crear las carpetas "bin", "include" y "lib". En la carpeta "bin" copiar los archivos que se encuentran en la carpeta "C:\Temporal\midishare-1.93\src\vs2005\Release":
MidiConnect.exe
MidiCountAppls.exe
MidiGetIndAppl.exe
MidiGetName.exe
MidiGetNamedAppl.exe
MidiGetTime.exe
MidiGetVersion.exe
MidiIsConnected.exe
Mshare64.dll
TDrivers.exe
TEvents.exe
TFilters.exe
TFonctions.exe
TLin.exe
TOutEvents.exe
B.3.- En la misma carpeta "bin", copiar los archivos "msControl64.exe" y "msDrivers64.exe" que se encuentran en "C:\Temporal\midishare-1.93\src\win-mono\Applications" y el archivo "msMMSystem64.dll" que se encuentra en "C:\Temporal\midishare-1.93\src\win-mono\Drivers".
B.4.- Abrir "notepad++" y crear un nuevo documento. En él escribir:
[Events memory]
default=60000
[Drivers]
active=msMMSystem64.dll
disable=
y guardar como "midishare.ini" en la misma carpeta "bin".
B.5.- Con "notepad++" nuevamente, crear un nuevo documento. En él escribir:
[Output Slots]
Microsoft GS Wavetable Synth=0
y guardar como "msMMSystem.ini" en la misma carpeta "bin".
B.6.- En la carpeta "lib" creada en el punto III-4, copiar los archivos "mshare64.lib" y "mshare64.exp", que se encuentran en la carpeta "C:\Temporal\midishare-1.93\src \vs2005\Release".
C.- Para ambas compilaciones, 32 y 64 bits:
7.- Copiar el archivo "MidiShare.h" desde la carpeta "C:\Temporal\midishare-1.93\src\include" en la carpeta "include" creada anteriormente.
8.- Comprimir las carpetas "MidiShare-1.93-dev-vsXX-xYY" con 7zip (https://www.7-zip.org/) desde dentro de las mismas, para que al abrirlas con 7zip directamente nos muestre las carpetas "bin", "include" y "lib", pero el nombre de los archivos comprimidos sean "MidiShare-1.93-dev-vsXX-xYY.7z".