Cela s'est avéré être un problème plus compliqué que ce à quoi je m'attendais à l'origine.
QuickTime X ne peut pas lire les fichiers MIDI, contrairement à QuickTime 7.
Pour autant que je sache, cela signifie qu'il n'y a pas de solution "intégrée" pour lire des fichiers MIDI sur Mac OS X (par exemple, afplay
ne fonctionne pas). Par conséquent, je crois que toute solution impliquera le téléchargement et l'installation d'un autre programme.
Option # 1: Téléchargez et installez QuickTime 7 qui fonctionne toujours bien sur Mavericks, puis vous pouvez lire des fichiers midi en:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
cependant, cela ne s'exécutera automatiquement que si l'utilisateur a activé cette préférence, qui je pense est désactivée par défaut.
Option n ° 2: utilisez FluidSynth
Pour l'installer, vous devez utiliser Fink, MacPorts ou (ma recommandation) Homebrew. Une fois Homebrew installé, tapez ceci dans Terminal:
brew install fluidsynth
(La commande de MacPorts serait sudo port install fluidsynth
et celle de Fink fink install fluidsynth
.)
Cependant, le téléchargement fluidsynth
ne vous y mène qu'à mi-chemin. Ensuite, vous avez besoin d'un fichier "SoundFont", dont je n'avais jamais entendu parler auparavant. Il y a des informations à leur sujet ici
J'en ai téléchargé un de S. Christian Collins appelé "GeneralUser" qui est gratuit. La version actuelle (à partir du 2013-11-27) est la version FluidSynth 1.44 . {Si ce lien direct se rompt à l'avenir, utilisez le lien précédent qui vous amènera à la page Web standard de GeneralUser.}
Une fois que vous avez téléchargé et décompressé cela, vous aurez une série de fichiers dont "GeneralUser GS FluidSynth v1.44.sf2" (évidemment le nom peut changer à l'avenir). J'ai renommé ce fichier et l'ai déplacé vers /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Une fois le fichier SoundFont placé et fluidsynth
installé, vous pouvez jouer un midi en utilisant cette commande:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
nb Certains messages d'erreur (apparemment inoffensifs) s'affichent lorsque vous faites cela. Si vous souhaitez les supprimer, utilisez:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
au lieu.
Évidemment, je ne me souviendrai jamais de tout cela, alors j'ai créé une zsh
fonction appeléeplaymidi
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
}
(Cela devrait fonctionner bash
aussi, je crois.)
Il ne me reste plus qu'à taper:
playmidi example.mid
et example.mid
jouera.