Esto resultó ser un problema más complicado de lo que originalmente esperaba.
QuickTime X no puede reproducir archivos MIDI, aunque QuickTime 7 sí.
Hasta donde puedo decir, eso significa que no hay una solución "incorporada" 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 n. ° 1: descargue e instale QuickTime 7, que todavía funciona bien en Mavericks, y luego puede reproducir archivos midi de la siguiente manera:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
sin embargo, eso solo se reproducirá automáticamente si el usuario ha habilitado esa preferencia, que creo que está desactivada de forma predeterminada.
Opción # 2: usar FluidSynth
Para instalarlo, debe usar Fink, MacPorts o (mi recomendación) Homebrew. Una vez que se instala Homebrew, 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 fluidsynth
solo te lleva a la mitad. Entonces necesita un archivo "SoundFont", del que nunca había oído hablar antes. Hay información sobre ellos aquí.
Descargué uno de S. Christian Collins llamado "GeneralUser", que es gratis. La versión actual (a partir del 27/11/2013) 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 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). Cambié el nombre de ese archivo y lo moví a /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Una vez que el archivo SoundFont está colocado y fluidsynth
está instalado, puede reproducir un midi usando este comando:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
nb Hay algunos mensajes de error (aparentemente inofensivos) que se muestran cuando haces eso. Si desea suprimirlos, use:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
en lugar.
Obviamente, nunca voy a recordar todo eso, así que hice una zsh
función llamadaplaymidi
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 también debería funcionar para bash
mí).
Ahora todo lo que tengo que hacer es escribir:
playmidi example.mid
y example.mid
jugaré