Questo si è rivelato un problema più complicato di quanto mi aspettassi inizialmente.
QuickTime X non può riprodurre file MIDI, anche se QuickTime 7 potrebbe.
Per quanto ne so, significa che esiste una soluzione no "incorporata" per riprodurre file MIDI su Mac OS X (ad esempio, afplay
non funziona). Pertanto, credo che qualsiasi soluzione comporterà il download e l'installazione di qualche altro programma.
Opzione 1: scarica e installa QuickTime 7 che funziona ancora bene su Mavericks, e quindi puoi riprodurre file midi da:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
tuttavia che verrà riprodotto automaticamente solo se l'utente ha abilitato quella preferenza, che credo sia off per impostazione predefinita.
Opzione 2: usa FluidSynth
Per installarlo, devi utilizzare Fink, MacPorts o (mio consiglio) Homebrew. Una volta installato Homebrew, digita questo nel Terminale:
brew install fluidsynth
(Il comando di MacPorts sarebbe sudo port install fluidsynth
e Fink sarebbe fink install fluidsynth
.)
Tuttavia, il download di fluidsynth
ti porta solo a metà. Allora hai bisogno di un file "SoundFont", che non avevo mai sentito prima. Ci sono informazioni su di loro qui
Ho scaricato uno da S. Christian Collins chiamato "GeneralUser" che è gratuito. La versione attuale (dal 2013-11-27) è FluidSynth versione 1.44 . {Se il collegamento diretto si interrompe in futuro, utilizza il link precedente che ti porterà alla pagina Web normale per GeneralUser.}
Una volta scaricato e decompresso, avrai una serie di file tra cui "GeneralUser GS FluidSynth v1.44.sf2" (ovviamente il nome potrebbe cambiare in futuro). Ho rinominato il file e lo ho spostato in /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Una volta installato il file SoundFont e installato fluidsynth
, puoi riprodurre un midi usando questo comando:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
n.b. Ci sono alcuni (apparentemente innocui) messaggi di errore che vengono visualizzati quando lo fai. Se vuoi sopprimerli usa:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
, invece.
Ovviamente non mi ricorderò mai tutto questo, quindi ho creato una funzione zsh
chiamata 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
}
(Quel dovrebbe funzionare anche per bash
.)
Ora tutto ciò che devo fare è digitare:
playmidi example.mid
e example.mid
verrà riprodotto.