Questo si è rivelato essere un problema più complicato di quanto mi aspettassi inizialmente.
QuickTime X non può riprodurre file MIDI, anche se QuickTime 7 potrebbe farlo.
Per quanto ne so, ciò significa che non esiste una soluzione "integrata" per la riproduzione di file MIDI su Mac OS X (ad esempio, afplay
non funziona). Pertanto, credo che qualsiasi soluzione comporterà il download e l'installazione di altri programmi.
Opzione n. 1: scarica e installa QuickTime 7 che funziona ancora bene su Mavericks, quindi puoi riprodurre file midi:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
tuttavia, questo verrà riprodotto automaticamente solo se l'utente ha abilitato quella preferenza, che credo sia disattivata per impostazione predefinita.
Opzione 2: utilizzare FluidSynth
Per installarlo, devi utilizzare Fink, MacPorts o (il mio consiglio) Homebrew. Una volta installato Homebrew, digita questo nel Terminale:
brew install fluidsynth
(Il comando di MacPorts sarebbe sudo port install fluidsynth
e quello di Fink sarebbe fink install fluidsynth
.)
Tuttavia, il download fluidsynth
ti porta solo parzialmente. Quindi hai bisogno di un file "SoundFont", di cui non avevo mai sentito parlare prima. Ci sono informazioni su di loro qui
Ne ho scaricato uno da S. Christian Collins chiamato "GeneralUser" che è gratuito. La versione corrente (dal 27-11-2013) è la versione 1.44 di FluidSynth . {Se il collegamento diretto si interrompe in futuro, utilizza il collegamento precedente che ti porterà alla normale pagina Web 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 quel file e lo ho spostato in /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Una volta che il file SoundFont è posizionato e fluidsynth
installato, è possibile riprodurre un midi utilizzando questo comando:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
nb Ci sono alcuni messaggi di errore (apparentemente innocui) 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
anziché.
Ovviamente non lo ricorderò mai, quindi ho zsh
chiamato una funzioneplaymidi
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
}
( Credo che dovrebbe funzionare bash
anche per quello.)
Ora tutto ciò che devo fare è digitare:
playmidi example.mid
e example.mid
giocherà.