Este resultó ser un problema más complicado de lo que originalmente esperaba.
QuickTime X no puede reproducir archivos MIDI, aunque QuickTime 7 podría.
Por lo que puedo decir, eso significa que hay una solución "incorporada" no para reproducir archivos MIDI en Mac OS X (por ejemplo, afplay
no funciona). Por lo tanto, creo que cualquier solución implicará descargar e instalar algún otro programa.
Opción # 1: descarga e instala QuickTime 7 que aún funciona bien en Mavericks, y luego puedes reproducir archivos midi por:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
sin embargo que solo se reproducirá automáticamente si el usuario ha habilitado esa preferencia, que creo que está desactivada de manera predeterminada.
Opción # 2: utilizar FluidSynth
Para instalarlo, debes usar Fink, MacPorts o (mi recomendación) Homebrew. Una vez que Homebrew esté instalado, escriba esto en la Terminal:
brew install fluidsynth
(El comando de MacPorts sería sudo port install fluidsynth
y el de Fink sería fink install fluidsynth
.)
Sin embargo, la descarga de fluidsynth
solo te lleva a la mitad del camino. Entonces necesitas un archivo "SoundFont", del que nunca había escuchado antes. Aquí hay información sobre ellos
Descargué uno de S. Christian Collins llamó "GeneralUser", que es gratuito. La versión actual (a partir del 2013-11-27) es FluidSynth versión 1.44 . {Si ese enlace directo se rompe en el futuro, use el enlace anterior que lo llevará a la página web normal de GeneralUser.}
Una vez que hayas descargado y descomprimido eso, tendrás una serie de archivos que incluyen "GeneralUser GS FluidSynth v1.44.sf2" (obviamente el nombre puede cambiar en el futuro). Cambié el nombre de ese archivo y lo moví a /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Una vez que el archivo de SoundFont esté en su lugar y se instale fluidsynth
, puedes jugar un midi usando 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 haces 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 una función zsh
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
}
(Eso debería funcionar para bash
también, creo.)
Ahora todo lo que tengo que hacer es escribir:
playmidi example.mid
y example.mid
se reproducirán.