A.- Preparación (Asumimos que la compilación se lleva a cabo en una máquina con Windows 7 de 64 bits).
Bajar los siguientes archivos y seguir las instrucciones de instalación:
1.- El archivo con el código fuente de FluidSynth (http://sourceforge.net/apps/trac/fluidsynth/)
fluidsynth-1.1.6.zip (http://sourceforge.net/projects/fluidsynth/files/fluidsynth-1.1.6/fluidsynth-1.1.6.zip/download)
Crear una carpeta nueva en “C:\”. Por ejemplo “C:\FS32”.
En esta carpeta descomprimir el archivo fluidsynth-1.1.6.zip. (“C:\FS32\fluidsynth-1.1.6”)
En esta última carpeta crear la carpeta “build” (“C:\FS32\fluidsynth-1.1.6\build”)
2.- Las bibliotecas glib y gthread x86.
glib_2.28.8-1_win32 (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip)
glib-dev_2.28.8-1_win32 (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.8-1_win32.zip)
3.- La biblioteca gettext-runtime-0.17-1 x86 (intl.dll) y proxy-libintl-dev x86.
gettext-runtime-0.17-1.zip (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip).
proxy-libintl-dev_20090911_win32.zip (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/proxy-libintl-dev_20090911_win32.zip)
4.- La Herramienta pkg-config x86.
pkg-config_0.26-1_win32 (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip)
5.- La biblioteca Readline 5.2 x86
readline-5.2-x86 (https://sites.google.com/site/qsynthwindows/readline-5.2-x86.7z)
6.- La biblioteca Portaudio v19 x86
portaudio_v19_20140130_x86 (https://sites.google.com/site/qsynthwindows/portaudio_v19_20140130_x86.7z)
Descomprimir todos los archivos requeridos en los puntos 1, 2 3, 4, 5 y 6 en el mismo directorio, con un nombre sin espacios, por ejemplo “C:\libfs32”. Añadir “C:\libfs32\bin;C:\libfs32\include;C:\libfs32\lib” a la variable PATH del sistema.
7.- El programa CMake 3.5.2-win32-x86
cmake-3.5.2-win32-x86.msi (https://cmake.org/files/v3.5/cmake-3.5.2-win32-x86.msi)
Instalar normalmente el programa. (Nota: Desinstalar versiones anteriores de CMake antes de instalar ésta.)
8.- Microsoft Visual Studio 2010 Express en español (http://download.microsoft.com/download/b/3/4/b34eb2a2-c426-4c36-92bc-8567856830b2/VS2010ExpressESN.iso), Microsoft Visual Studio 2010 SP1 (Update) (http://download.microsoft.com/download/E/B/A/EBA0A152-F426-47E6-9E3F-EFB686E3CA20/VS2010SP1dvd1.iso), Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 x64 (http://download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso) y Visual C++ 2010 Service Pack 1 Compiler Update (https://download.microsoft.com/download/7/9/0/790080A1-60C4-465E-9284-2EF7B5B8AEDE/VC-Compiler-KB2519277.exe)
Se pueden crear los DVDs utilizando el programa adecuado o usar alguna aplicación que permita la creación de CD-DVD drive virtuales (por ejemplo Gizmo [http://loganmueller.info/gizmo/download.html]) y cargar en un drive virtual cada una de las imágenes ISO.
Montar VS2010ExpressESN.iso y en el explorador de Windows dar doble clic al archivo setup.hta. Se pueden instalar los componentes deseados uno por uno. Para este tutorial se requiere Visual C++ 2010 Express.
Antes de instalar el Windows SDK 7 hay que verificar la versión de los “Redistributable” de VS2010. Ir al Panel de control y elegir Programas y características. Buscar la entrada: Microsoft Visual C++ 2010 x64 Redistributable - XX.X.XXXXX y Microsoft Visual C++ 2010 x86 Redistributable - XX.X.XXXXX. Si XX.X.XXXXX es igual a 10.0.30319 omitir el paso siguiente.
Si XX.X.XXXXX es mayor que 10.0.30319, desinstalar los dos “Redistributable” x64 y x86.
Montar la imagen GRMSDKX_EN_DVD.iso. Automáticamente debe correr el Windows SDK Setup Wizard. Si no es así en el directorio raíz del DVD dar doble clic en setup.exe. Seguir los pasos de instalación.
Montar la imagen VS2010SP1dvd1.iso en el drive y en el explorador de Windows ir al directorio raíz y dar doble clic en VS10sp1-KB983509.msp. Se instalará el SP1 a los componentes de VS2010 Express que se hayan instalado anteriormente.
Instalar la actualización del compilador VC VS2010 SP1: VC-Compiler-KB2519277.exe.
Crear la carpeta redist en C:\Archivos de programa (x86)\Microsoft Visual Studio 10.0\VC (C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC). Crear la carpeta x86 en C:\Archivos de programa (x86)\Microsoft Visual Studio 10.0\VC\Redist (C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\Redist). Crear la carpeta Microsoft.VC100.CRT en C:\Archivos de programa (x86)\Microsoft Visual Studio 10.0\VC\Redist\x86 (C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\Redist\x86).
Copiar en la carpeta C:\Archivos de programa (x86)\Microsoft Visual Studio 10.0\VC\Redist\x64\Microsoft.VC100.CRT (C:\Program Files (x86)\Microsoft Visual Studio 10.0/VC\Redist\x64\Microsoft.VC100.CRT) los archivos msvcp100.dll y msvcr100.dll que se hallan en la carpeta “C:\Windows\SysWOW64”.
9.- La utilidad doxygen x86.
doxygen-1.8.2.windows.bin (ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.2.windows.bin.zip)
Descomprimir el archivo doxygen-1.8.2.windows.bin.zip en la carpeta “C:\libfs32\bin”
10.- Las bibliotecas Jack_v1.9.10_64
Jack_v1.9.10_64_setup.exe (https://dl.dropboxusercontent.com/u/28869550/Jack_v1.9.10_64_setup.exe)
Ejecutar el instalador Jack_v1.9.10_64_setup.exe. En sistemas de 64 bit, el instalador de Jack_v1.9.10_64 instala por defecto en la carpeta:
“C:\Program Files (x86)\Jack”
Lo que es un claro error. Cambiar esta ubicación a:
“C:\Program Files\Jack”
Continuar la instalación del programa normalmente.
Copiar la carpeta “jack” contenida en “C:\Archivos de programa\Jack\includes” (alias de “C:\Program Files\Jack\includes”) en la carpeta “C:\libfs32\include” creada en el punto 5 y los archivos contenidos en “C:\Archivos de programa\Jack\lib” (alias de C:\Program Files\Jack\lib”) en la carpeta “C:\libfs32\lib”
Abrir notepad++ (http://notepad-plus-plus.org/): Desde el menú hacer clic en Archivo -> Nuevo. Aparece una ventana de edición nueva. Desde el menú hacer clic en Codificación y seleccionar Codificar en UTF-8 sin BOM. En la ventana de edición escribir:
prefix=c:/devel/target/fc3f1f7e8403ab2bf792fb540d8ffffe
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
server_libs=-L${exec_prefix}/lib -llibjackserver
Name: jack
Description: the Jack Audio Connection Kit
Version: 1.9.10.0
Libs: -L${libdir} -llibjack
Cflags: -I${includedir}/libjack
Desde el menú, hacer clic en Archivo -> Guardar como… y guardar en “C:\libfs32\lib\pkgconfig” con el nombre: jack.pc
11.- Las bibliotecas libsndfile-1.0.26-w64 de Mega-Nerd.
libsndfile-1.0.26-w32 (http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.26-w32.zip)
Descomprimir el archivo libsndfile-1.0.26-w32.zip en la carpeta “C:\libfs32. (Oprimir [Sí a todo] en los mensajes de posible sobre escritura).
Abrir el archivo sndfile.pc contenido en la carpeta “C:\libfs32\lib\pkgconfig” con notepad++ y modificar como sigue:
Original:
prefix=c:/devel/target/libsndfile
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: sndfile
Description: A library for reading and writing audio files
Requires:
Version: 1.0.26
Libs: -L${libdir} -lsndfile
Libs.private: Ext/libflac.la Ext/libvorbis.la Ext/libogg.la
Cflags: -I${includedir}
Nuevo:
prefix=c:/devel/target/libsndfile
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: libsndfile-1
Description: A library for reading and writing audio files
Requires:
Version: 1.0.26
Libs: -L${libdir} -llibsndfile-1
Libs.private: Ext/libflac.la Ext/libvorbis.la Ext/libogg.la
Cflags: -I${includedir}
Para comprobar, abrimos una ventana de línea de comandos y escribimos:
C:\>pkg-config --list-all
gio-windows-2.0 GIO Windows specific APIs - Windows specific headers for g
lib I/O library
gthread-2.0 GThread - Thread support for GLib
gmodule-2.0 GModule - Dynamic module loader for GLib
gobject-2.0 GObject - GLib Type, Object, Parameter and Signal Library
gio-2.0 GIO - glib I/O library
gmodule-no-export-2.0 GModule - Dynamic module loader for GLib
sndfile libsndfile-1 - A library for reading and writing audio fil
es
jack jack - the Jack Audio Connection Kit
portaudio-2.0 portaudio-2.0 - portaudio library x86
glib-2.0 GLib - C Utility Library
12.- Abrir el archivo Doxyfile.cmake en la carpeta “C:\FS32\fluidsynth-1.1.6\doc” con notepad++.
Ir a la línea 68 y cambiar
SHOW_DIRECTORIES = NO
por
#SHOW_DIRECTORIES = NO
Ir a la línea 126 y cambiar
HTML_ALIGN_MEMBERS = YES
por
#HTML_ALIGN_MEMBERS = YES
y guardar
13.- Abrir el archivo fluid_jack.c en la carpeta “C:\FS32\fluidsynth-1.1.6\src\drivers” con notepad++.
Ir a la línea 436 y cambiar
jack_free (jack_ports); /* free jack ports array (not the port values!) */
por
jack_free ((void*) jack_ports); /* free jack ports array (not the port values!) */
y guardar
14.- Abrir el archivo “fluid_portaudio.c” en la carpeta “C:\FS32\fluidsynth-1.1.6\src\drivers” con notepad++. Ir a la línea 41.
Sustituir el texto:
#include <unistd.h>
con:
/* #include <unistd.h> */
Crear inmediatamente una nueva línea y escribir:
#include <io.h>
Ir a la línea 45, crear una nueva línea y escribir:
#define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
y guardar
Desde la línea 38 hasta la 46 debe verse lo siguiente:
#if PORTAUDIO_SUPPORT
#include <fcntl.h>
/* #include <unistd.h> */
#include <io.h>
#include <errno.h>
#include <portaudio.h>
#define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
B.- Generar el archivo “.sln” con la interface gráfica de CMake
1.- Ejecutar CMake (cmake-gui)
2.- Introducir la ruta donde se encuentra el código fuente (C:\FS32\fluidsynth-1.1.6)
3.- Introducir la ruta donde se creará FluidSynth (C:\FS32\fluidsynth-1.1.6\build)
4.- Hacer clic en el botón [Configure]. Se presentará la ventana de elección del generador.
5.- Elegir “Visual Studio 10 2010” como generador, Elegir la opción “Use default native compilers” y hacer clic en el botón [Finish].
6.- El programa ejecuta la acción solicitada.
7.- Terminada la configuración se tiene el siguiente estado:
8.- Abrir el árbol “Ungrouped Entries” en la ventana del proyecto y desmarcar “enable-debus” y “enable-pulseaudio” (si se quiere compilar sin Jack se puede desmarcar “enable-jack”). Marcar la casilla correspondiente a “enable-portaudio”
9.- Hacer clic en la tecla [Configure] una segunda vez y al finalizar esta operación se hace clic en el botón [Generate].
C.- Crear FluidSynth
1.- Ir a la carpeta “C:\FS32\fluidsynth-1.1.6\build” en el explorador de archivos y dar doble clic sobre el archivo FluidSynth.sln. Se abrirá la interface gráfica de MVC++ 2010 Express.
2.- Ir al menú Generar -> Administración de la configuración… y en la ventana que aparece en el combo “Configuración de soluciones activas:” seleccionar Release y marcar la casilla de “Generar”, en el rubro “doxygen”, en el rubro “INSTALL” y en el rubro “PACKAGE” en la ventana “Contextos del proyecto” y oprimir [Cerrar].
3.- Ir al menú Generar -> Generar solución. El programa debe compilarse sin advertencias y sin errores.
4.- La salida del nuevo ejecutable se ubicará en la carpeta “C:\FS32\fluidsynth-1.1.6\build\src\Release” donde se encontrarán los archivos: fluidsynth.exe, libfluidsynth.dll, fluidsynth.lib y fluidsynth.exp.
Las dependencias incluyen los siguientes archivos:
libfluidsynth.dll
que se encuentra en la misma carpeta donde se construyó fluidsynth.exe.
intl.dll
libglib-2.0-0.dll
libgthread-2.0-0.dll
libsndfile-1.dll
msvcp100.dll
msvcr100.dll
portaudio_x86.dll
readline-x86.dll
que se hallan en la carpeta “C:\libfs32\bin”.
libjack.dll
que se ubica en “C:\Windows\SysWOW64” cuando se instala Jack_v1.9.10_64.
5.- Si se seleccionó INSTALL en el Administrador de configuración de VS2010, se creará la carpeta "C:\Archivos de programa (x86)\FluidSynth" ("C:\Program Files (x86)\FluidSynth") que contendrá las siguientes carpetas:
bin:
fluidsynth.exe
libfluidsynth.dll
msvcp100.dll
msvcr100.dll
include:
fluidsynth:
audio.h
event.h
gen.h
log.h
midi.h
misc.h
mod.h
ramsfont.h
seq.h
seqbind.h
settings.h
sfont.h
shell.h
synth.h
types.h
version.h
voice.h
fluidsynth.h
lib64:
pkgconfig:
fluidsynth.pc
fluidsynth.lib
6.- Si se seleccionó PACKAGE, se pueden obtener los archivos de instalación en diferentes formatos de compresión en la carpeta ”C:\FS32\fluidsynth-1.1.6\build\_CPack_Packages\win32”:
Carpetas:
STGZ
TBZ2
TGZ
ZIP
7.- La documentación del programador se encuentra en la carpeta “C:\FS32\fluidsynth-1.1.6\build\doc\api\html”, donde se halla el archivo: index.htm que puede abrirse con cualquier navegador de internet.