lunes, 5 de abril de 2010

GNU Solfege y TuxGuitar (con sonido a través de Jack)

###################################
Notas de revisiones:
Revisión 0: 16 abril 2010. Publicado.
###################################

Sinceramente, no suelo utilizar ninguno de estos programas pero quería escribir esto pensando en Unai y en otros guitarristas interesados en la didáctica. Con una tarjeta de audio firewire, jack es imprescindible para tener sonido en Linux y en cualquier caso es bueno por la flexibilidad y las posibilidades que permite.

Contenido

Breve presentación de GNU/Solfege
Breve presentación de TuxGuitar
Estos programas no suenan
Una opción: Timidity
Nuestra propuesta: pmidi, qsynth, jack
El sintetizador
Obtener un archivo soundfont
Primero Jack, luego qsynth
El reproductor de midi
GNU/Solfege, ahora sí suena :)
Tuxguitar, ahora sí suena :)
Otra vez la flexibilidad
Créditos



Breve presentación de GNU/Solfege


GNU Solfege es un programa de educación musical. Entre otras cosas, se puede utilizar para entrenar el oído en ritmos, intervalos, escalas y acordes.

Es una aplicación libre, licenciada bajo la GPL y también funciona en otros sistemas operativos.

En su página oficial podéis ver algunos pantallazos con algunos de los ejercicios que se pueden hacer. En cualquier caso, la interfaz gráfica es sencilla e intuitiva.

Está en el repositorio universe de ubuntu, así que los ubunteros lo podemos instalar desde synaptic, apt-get, aptitude o el centro de software. El paquete se llama "solfege". En gnome, aparece en el menú Aplicaciones -> Educación.


Breve presentación de TuxGuitar


TuxGuitar es un programa educativo para guitarra, con edición de partitura y tablatura. Puede importar archivos de guitar-pro (GP3, GP4 y GP5, de momento)

Como GNU/Solfege, es una aplicación libre, licenciada bajo la LGPL y también funciona en otros sistemas operativos.

También está en universe. Aquí instalaremos dos paquetes, tuxguitar y tuxguitar-alsa. En gnome, aparece en el menú Aplicaciones -> Sonido y Video.

Estos programas no suenan

Pues es verdad, no suenan porque no manejan audio digital sino MIDI. En el caso de GNU/Solfege ni siquiera eso, pues necesita un programa externo para reproducir el MIDI. Y éste necesita "algo" que interprete los mensajes MIDI y los convierta immediatamente a audio digital, que es lo que entiende la tarjeta de sonido. Este "algo" es un sintetizador, sea software o hardware. Además debemos saber qué sistema de audio utiliza este sintetizador. El camino será, para GNU/Solfege:

Solfege -> Reproductor de midi (conectado al puerto de entrada alsa midi del) -> sintetizador (cuya salida de audio digital va a) -> manejador de audio (cuya salida de audio digital va a) -> Tarjeta de audio (cuya salida de audio analógico va a) -> Altavoces

Para tuxguitar será similar, pero en este caso no hace falta un reproductor de midi externo; la conexión al sintetizador es más directa.

Una opción: Timidity

GNU/Solfege nos obliga a instalar timidity (al menos, en ubuntu 9.10 es una dependencia) un reproductor MIDI-sintetizador cuyo audio puede salir directamente hacia la tarjeta. Dicho así, parece que sería lo más directo y fácil. Sin embargo, en esta guía, timidity es como si no existiera. Lo comento sólo para que conste.

Nuestra propuesta: pmidi, qsynth, jack

Para el caso de esta guía y de forma simplificada, el camino a seguir será:

Solfege -> pmidi -> qsynth -> Jack -> Tarjeta audio-> Altavoces

o

Tuxguitar -> qsynth -> Jack -> Tarjeta audio -> Altavoces


El sintetizador

Necesitamos un sintetizador con salidas de audio a través de jack. Hay muchas posibilidades. Para simplificar y por ser quizás el más conocido y muy sencillo de configurar, voy a centrarme en qsynth como ya he adelantado.

Qsynth es un front-end gráfico para fluidsynth, que a su vez es un sintetizador basado en la especificación soundfont. Lo podemos instalar desde synaptic si no lo tenemos ya.

Lo primero será cargar una soundfont. Para ello lo lanzamos desde las aplicaciones de Sonido y Video y vamos a la configuración o setup. Pulsamos la pestaña Soundfonts y le damos a Abrir para cargar un archivo de soundfont (extensión sf2 o SF2). Podemos cargar cualquier archivo sf2 pero sólo los "General Midi" tendrán un mapeado de instrumentos estándar, de forma que podamos elegir el instrumento desde el propio Solfege. Si no tenemos ninguno disponible en el disco duro, lo tendremos que conseguir...

Obtener un archivo soundfont


Por ejemplo, en esta página tenemos cientos de archivos sf2 gratuitos. Os propongo la mítica Fluid Release 3 que se puede descargar desde este enlace. Suena muy bien y es General Midi. El "problemilla" es que viene comprimida con sfark y en los repos no tenemos un programa que nos sirva para descomprimir este formato. En este caso debemos ir a melodymachine para descargar el programa sfArk. Ahorramos tiempo si bajamos el programa para Windows, ya que el de Linux funciona con una librería que se ha quedado obsoleta. De alguna forma se puede atajar (ver entrada en hispasonic en los créditos) pero quizás sea más sencillo descargar el programa para Windows e instalarlo con wine (botón derecho). Wine está en los repos y se instala fácilmente con apt-get o Synaptic.

Primero Jack, luego qsynth

Iniciamos nuestro amigo Jack y después qsynth. Con éste no hemos terminado. En la configuración MIDI debemos tener habilitada la entrada MIDI con el controlador alsa-seq y en la pestaña Audio elegir Jack. También es importante que la frecuencia de muestreo coincida con la que hemos configurado en Jack.

En la ventana de conexiones debemos ver las salidas de qsynth en la pestaña audio y la entrada de
Fluid Synth en la pestaña ALSA (alsa midi).

El reproductor de MIDI

Es necesario para GNU/Solfege. Usaremos pmidi. Lo instalamos con apt-get o synaptic. Ahora vamos a ver qué puertos midi hay disponibles. En una terminal, podemos hacer:

$pmidi -l

En una de las líneas veremos algo similar a:

129:0 FLUID Synth ...

En este caso, el puerto alsa midi es el 129:0

(esto también se puede ver en la ventana de conexiones de Jack Control)

GNU/Solfege, ahora sí suena

Abrimos GNU/Solfege y vamos a Archivo -> Preferencias -> External Programs y en Audio File Players, MIDI ponemos en el campo de la izquierda:

/usr/bin/pmidi

Y en el de la derecha:

-p 129:0

o el número de puerto que tome Fluid Synth.

Damos al botón de prueba y... tirirín tintintín. Y si no, comprobar que las salidas de audio de qsynth estén conectadas a los system:playbacks.

Es posible que cada vez que lanzemos GNU/Solfege (por supuesto después de haber iniciado jack y qsynth) debamos volver a escribir el puerto.

Tux Guitar, ahora sí suena

Llegados hasta aquí, ya tenemos todo para disfrutar también de TuxGuitar a través de Jack.
Lo lanzamos desde Aplicaciones -> Sonido y Video. Vamos a Herramientas -> Preferencias -> Sonido y elegimos "Synth input port" como puerto MIDI.

Otra vez la flexibilidad


Como veis, el disgusto inicial de no escuchar sonido se debe a que estos programas siguen la filosofía Linux de "una tarea, una aplicación". Como tantas otras cosas en nuestro SO favorito y como las buenas amistades, se empiezan a disfrutar más a medida que se conocen mejor. Este enfoque modular nos ofrece una gran flexibilidad y podremos sacar cualquier sonido de estos programas, bien cambiando el archivo soundfont de qsynth o bien utilizando otro sintetizador completamente diferente que tenga entradas de alsa midi y salidas de jack audio. Esto nos permitirá grabar el audio directamente a cualquier grabador jackificado o hacer cualquier otra conexión que se nos ocurra a través de jack, incluyendo varios ordenadores en red como vimos en la entrada sobre netjack2.

Créditos

http://www.solfege.org/
http://www.solfege.org/Solfege/SoundSetup
http://tuxguitar.herac.com.ar/
http://www.hammersound.net/
http://www.melodymachine.com
http://www.hispasonic.com/comunidad/soundfonts-formatos-sfark-sfpack-t301964.html#p2362239

13 comentarios:

  1. De nada Xavi, muchas gracias por los ánimos! ¡Espero que estés bien!

    ResponderEliminar
  2. De momento bien amigo Pablo, eso sí, liado hasta las orejas. Un abrazo.

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. También he puesto en marcha el GNU Solfege!
    ... Y poco a poco voy familiarizandome mas con Unbuntu. De entrada ya paso mas tiempo en Linux que en Windows. En cuanto solucione un par de cosillas mas me mudo definitivamente.
    Muchas gracias Pablo!
    Unai

    ResponderEliminar
  5. Me alegro Unai, muchas de nadas :)

    ResponderEliminar
  6. Muchas gracias!!! Me estaba constando muchísimo hacer sonar el Tux Guitar.

    Además, tus indicaciones me han ayudado a comprender algunos conceptos que se me escapaban del midi (¡Uf! y lo que me queda por aprender).

    Gracias de nuevo, Pablo.

    ResponderEliminar
  7. Muchas gracias, me funciono perfectamente

    ResponderEliminar
  8. Ahora me sale este error:

    Memory locking is unlimited - this is dangerous. You should probably alter the line:
    @audio - memlock unlimited
    in your /etc/limits.conf to read:
    @audio - memlock 1351821
    no message buffer overruns
    JACK compiled with System V SHM support.
    loading driver ..
    creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
    control device hw:0
    configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
    ALSA: final selected sample format for capture: 32bit integer little-endian
    ALSA: use 2 periods for capture
    ALSA: final selected sample format for playback: 32bit integer little-endian
    ALSA: use 2 periods for playback
    jackd watchdog: timeout - killing jackd
    Abortado

    ResponderEliminar
  9. Después de reiniciar se arreglo este problema, ahora anda bien, muchas gracias

    ResponderEliminar
  10. Estaré agradecido de por vida, al principio me pareció muy complicado sentarme a leer y seguir los pasos, pero el que no arriesga, no gana. Super gracias.

    ResponderEliminar
  11. Varios años y tu guía aún es válida. Felicitaciones por ello. En Linux Mint Qiana, sin embargo fuí incapaz de conseguir la línea 129:0 FLUID Synth ... Sólo aparecen el map port 0 y el qjackctl. Después de pelear un rato con ellos, en tuxguitar, en las preferencias de sonido, en vez de poner fluid, puse el qjackctl y BUALÁ sonó a través de todo ese cablerío. Ahora, los sf2 son los que le dan el timbre al sonido? porque pensando en la calidad que todos conocemos de los RSE de Guitar Pro, me pregunto si hay bancos realísticos en sf2?

    ResponderEliminar