Le problème s'est avéré plus compliqué que prévu.
QuickTime X ne peut pas lire les fichiers MIDI, alors que QuickTime 7 le pouvait.
Pour autant que je puisse dire, cela signifie qu'il y a pas de solution "intégrée" pour lire les fichiers MIDI sur Mac OS X (par exemple, afplay
ne fonctionne pas). Je pense donc que toute solution impliquera le téléchargement et l'installation d'un autre programme.
Option 1 : Télécharger et installer QuickTime 7 qui fonctionne toujours très bien sur Mavericks, et vous pouvez alors jouer des fichiers midi par :
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
cependant qui ne sera lu automatiquement que si l'utilisateur a activé cette préférence, ce qui, je crois, est off par défaut.
Option n° 2 : utiliser FluidSynth
Pour l'installer, vous devez utiliser soit Fink, MacPorts, ou (ma recommandation) Homebrew. Une fois Homebrew installé, tapez ceci dans le Terminal :
brew install fluidsynth
(La commande de MacPorts serait sudo port install fluidsynth
et celui de Fink serait fink install fluidsynth
.)
Cependant, le téléchargement fluidsynth
ne vous mène qu'à mi-chemin. Ensuite, vous avez besoin d'un fichier "SoundFont", dont je n'avais jamais entendu parler auparavant. Il y a informations à leur sujet ici
J'en ai téléchargé un sur S. Christian Collins appelé "GeneralUser" qui est gratuit. La version actuelle (en date du 2013-11-27) est la suivante FluidSynth version 1.44 . {Si ce lien direct est rompu à l'avenir, utilisez le lien précédent qui vous mènera à la page Web ordinaire de GeneralUser.}
Une fois que vous avez téléchargé et décompressé ce fichier, vous aurez une série de fichiers dont "GeneralUser GS FluidSynth v1.44.sf2" (évidemment le nom peut changer dans le futur). J'ai renommé ce fichier et l'ai déplacé vers /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Une fois que le fichier SoundFont est placé et fluidsynth
est installé, vous pouvez jouer un midi en utilisant cette commande :
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
n.b. Certains messages d'erreur (apparemment inoffensifs) s'affichent lorsque vous faites cela. Si vous voulez les supprimer, utilisez :
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
à la place.
Évidemment, je ne me souviendrai jamais de tout ça, alors j'ai fait un zsh
fonction appelée 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
}
(Cette devrait travailler pour bash
aussi je crois).
Maintenant, tout ce que j'ai à faire est de taper :
playmidi example.mid
et example.mid
jouera.