Esto resultó ser un problema más complicado de lo que esperaba en un principio.
QuickTime X no puede reproducir archivos MIDI, aunque QuickTime 7 sí podía.
Por lo que sé, eso significa que hay no solución "integrada" para reproducir archivos MIDI en Mac OS X (por ejemplo, afplay
no funciona). Por lo tanto, creo que cualquier solución implicará la descarga e instalación de algún otro programa.
Opción 1: Descargar e instalar QuickTime 7 que sigue funcionando bien en Mavericks, y entonces puedes reproducir archivos midi por:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
Sin embargo, que sólo se reproducirá automáticamente si el usuario ha activado esa preferencia, que creo que es fuera de por defecto.
Opción 2: Utilizar FluidSynth
Para instalarlo, tienes que usar Fink, MacPorts o (mi recomendación) Homebrew. Una vez instalado Homebrew, escribe esto en el Terminal:
brew install fluidsynth
(El comando de MacPorts sería sudo port install fluidsynth
y la de Fink sería fink install fluidsynth
.)
Sin embargo, la descarga de fluidsynth
sólo te lleva a una parte del camino. Luego necesitas un archivo "SoundFont", del que nunca había oído hablar. Hay información sobre ellos aquí
He descargado uno de S. Christian Collins llamado "GeneralUser" que es gratuito. La versión actual (a partir de 2013-11-27) es FluidSynth versión 1.44 . {Si ese enlace directo se rompe en el futuro, utilice el enlace anterior que le llevará a la página web normal de GeneralUser.}
Una vez que haya descargado y descomprimido eso, tendrá una serie de archivos que incluyen "GeneralUser GS FluidSynth v1.44.sf2" (obviamente el nombre puede cambiar en el futuro). He cambiado el nombre de ese archivo y lo he movido a /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Una vez que el archivo SoundFont está colocado y fluidsynth
está instalado, puedes reproducir un midi utilizando este comando:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
n.b. Hay algunos mensajes de error (aparentemente inofensivos) que se muestran cuando se hace eso. Si quieres suprimirlos utiliza:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
en su lugar.
Obviamente nunca voy a recordar todo eso, así que hice un zsh
función llamada playmidi
function playmidi {
SOUNDFONT='/usr/local/share/fluidsynth/generaluser.v.1.44.sf2'
if [ -e "$SOUNDFONT" ]
then
for i in "$@"
do
if [ -e "$i" ]
then
(fluidsynth -i "$SOUNDFONT" "$i" 2>&1) >/dev/null
else
echo "[playmidi]: cannot find file at $i"
return 1
fi
done
else
echo "[playmidi]: SOUNDFONT file not found at $SOUNDFONT"
return 1
fi
}
(Que debe trabajar para bash
también creo).
Ahora todo lo que tengo que hacer es escribir:
playmidi example.mid
y example.mid
jugará.