¿Cómo escuchar MIDI en GNU/Linux?… Pues con timidity++

Estándar

Hace unos días recibí unos archivos MIDI, bien yo muy contento los meto a mi /home, va siendo mi sorpresa que veo los iconos y todo pero no tengo un programa asociado con el que pueda abrirlos 😯 .

Después de una búsqueda con apt-cache instalo kmid. pensando que podría reproducirlos sin más, pero no… necesito de timidity… ¿Y eso que es?, bueno ahora lo veremos.

¿Porqué el problema de los midi?

En primer lugar porque se supone que las tarjetas de sonido deberían incluir su propio secuenciador midi, pero hace mucho que no lo traen integrado (a menos que sean muy buenas tarjetas de sonido) en lugar de eso le dejan que todo lo haga la CPU, tal como un wimodem.

Los ficheros .mid lo que contienen son son una secuencia de instrucciones que debe interpretarse, convertirse a wav y luego reproducirse en los altavoces, el secuenciador es el que se encarga de este trabajo. aquí es donde entra timidity, que además se puede arrancar como demonio, para poder disponer de él inmediatamente cuando sea necesario.

El secuenciador (en este caso timidity), tambien necesita las definiciones de los instrumentos musicales, que es como el repertorio de sonidos de instrumentos que se puedan usar, en este caso utilizaremos freepats, que tiene la ventaja de que es libre y está en los repos, existen alternativas propietarias supuestamente de mayor calidad pero no las he probado, así que no escribiré nada al respecto.

Instalando y configurando Timidity:

Primero lo primero, instalar timidity, y ya que hablamos de Debian, es tan simple como:
# apt-get install timidity freepats

Luego necesitamos configurar las opciones con las que arrancará timidity, para ajustarlas a nuestro equipo ya que al realizar todo la CPU puede que recargue nuestro sistema si no es muy moderno.

Con el editor que más nos guste debemos editar el fichero /etc/timidity/timidity.cfg, el cual contiene una serie de opciones que podremos utilizar dependiendo de nuestra máquina, lo único que debemos hacer es descomentar la línea de las opciones que queramos (quitar el ‘#’ del principio de la línea).
En lo personal, ya que no necesito tanta calidad en el audio pero no quiero que suene «tan mal», me he decantado por utilizar las opciones que ofrece para una máquina «moderada», quedando asi:


# Instrument configuration file for timidity
# $Id: timidity.cfg,v 1.7 2005/09/03 19:26:03 hmh Exp $

# You can change just about every option in TiMidity++ using
# This config file. Please refer to the timidity.cfg(5) manpage
# for more details

## If you have a slow CPU, uncomment these:
#opt EFresamp=d #disable resampling
#opt EFvlpf=d #disable VLPF
#opt EFreverb=d #disable reverb
#opt EFchorus=d #disable chorus
#opt EFdelay=d #disable delay
#opt anti-alias=d #disable sample anti-aliasing
#opt EWPVSETOZ #disable all Midi Controls
#opt p32a #default to 32 voices with auto reduction
#opt s32kHz #default sample frequency to 32kHz
#opt fast-decay #fast decay notes

## If you have a moderate CPU, try these:
opt EFresamp=l
opt EFreverb=g,42
opt EFchorus=s
opt s32kHz
opt p64a

# Disabling some of the Midi Controls can help with the CPU usage a lot.
# The same goes to the VLPF, sample anti-aliasing and effects such as
# reverb and chorus

# By default, try to use the instrument patches from freepats:

source /etc/timidity/freepats.cfg;

Como podrán ver al final queda una línea donde identifica que set de instrumentos usar, en este caso ya viene configurado por defecto para usar freepats, si utilizaran otro set seguramente solo deberian modificar esta línea por su ubicación y listo.

Luego debemos modificar el fichero /etc/init.d/timidity para permitir que el secuenciador se arranque al inicio de sistema como un demonio para tenerlo siempre disponible. En este fichero sólo hay que descomentar la línea que dice #TIM_ALSASEQ=true, quedando el fichero entero así:
# Defaults for TiMidity++ scripts
# sourced by /etc/init.d/timidity
# installed at /etc/default/timidity by the maintainer scripts
# $Id: timidity.default,v 1.3 2004/08/07 14:33:26 hmh Exp $

#
# This is a POSIX shell fragment
#

# Enable MIDI sequencer (ALSA), default is disabled
TIM_ALSASEQ=true

# Setting overrides (of /etc/timidity.conf) for the ALSA sequencer daemon
TIM_ALSASEQPARAMS="-B2,8 -Os"

Lo siguiente es tener disponible el dispositivo secuenciador (/dev/sequencer), para esto debemos cargar el módulo en el kernel, para usarlo temporalmente bastaría un # modprobe snd_seq, pero en este caso como queremos que esté disponible siempre, editamos el fichero /etc/modules y le agregamos (si aún no está) el módulo snd_seq, …con esto debería bastar 😉 .

Ahora solo falta probar, podemos hacer dos cosas:
1. Reiniciar el ordenador para que se carguen todas las cosas automáticamente (lo que yo he hecho) o
2. Podemos probar todo inmediatamente: cargar manualmente el módulo secuenciador con # modprobe snd_seq, luego arrancar a timidity como servicio con # timidity -iA (ojo que no hay que cerrar la terminal donde hemos hecho esto), luego solo queda reproducir algún midi en el programa que mas les guste, eso sí, es común que en estos programas debamos seleccionar el dispositivo midi para reproducir, sólo debemos seleccionar algún puerto de timidity, que debería aparecer.

Es todo por hoy, para dudas, sugerencias y demás sólo dejen un comentario 😀 .

9 comentarios en “¿Cómo escuchar MIDI en GNU/Linux?… Pues con timidity++

  1. no entiendo bien lo de timidity es decir en si que es lo que hace a mi cualquier programa que use midi como hydrogen me suenan los midis lo que si es en rosegarden que en general midi no me suena nada tengo que hacer un pluginsynth hexter o cualquier otro para que pueda oir algo como hago para escuchar el banco de los general midi

    • Respondo nada mas

      Hydrogen le funciona porque hydrogen no usa midi, hay una gran diferencia hydrogen usa samples de sonidos «reales» en formato wav que es muy diferente

  2. denjohx

    Hola jose luis, no comprendo bien lo que preguntas, pero supongo que puedo guiarte un poco.

    Timidity es un secuenciador, un midi es una secuencia de datos que hacen referencia a notas musicales, instrumentos, intensidad de sonido, etc. timidity se encarga de transformar estos datos en información de audio, combinando los sonidos de un una «paleta» de instrumentos y sus sonidos (en el caso de esta guía, usa freepats) y enviándolos ya mezclados hacia la tarjeta de sonido.

    En principio se suponía que las tarjetas de sonido debían incluir su propio secuenciador por hardware, para poder comunicarse con sintetizadores y otros instrumentos y compartir «información musical», pero eso cambió con el aumento de las prestaciones de las PC’s y el descenso del precio de las tarjetas de audio (pasaron de ser procesadores independientes de midis a ser simples interfaces A/D, pero bueno, es cierto que no todos necesitan tanta complejidad de hardware)

    Timidity abre algunos «puertos midi», que se usan para que un programa le envíe los datos midi «en bruto», los procese y se reproduzcan en los parlantes.

  3. Sebastian

    hola,

    gracias por el post, me aclaro muchas dudas, pero te cuento que tengo un problema,

    espero que me puedas ayudar

    al iniciar timidity me sale esto (/etc/init.d/timidity start)

    ALSA lib pulse.c:272:(pulse_connect) PulseAudio: Unable to connect: Connection refused
    [fail]

    y al iniciar timidity manualmente no puedo escuchar nada,

    en ubuntu intrepid

    sebastian.carcamo.s at gmail dot com

  4. Muchisimas gracias amigo esto aun funciona no necesita cambios y no lo ubiese figurado sin tu ayuda espero que podamos seguir haciendo comunidad pero todavia estoy buscando un cliente grafico y nada que consigo uno cual me recomiendas por fa escribene al mail si puedes por que esto no tiene respuesta automatica o si? bueno muchisimas gracias Dios te bendiga

Deja un comentario