Answers:
原来这是一个比我最初预期的要复杂的问题。
尽管QuickTime 7可以,但是QuickTime X无法播放MIDI文件。
据我所知,这意味着在Mac OS X上播放MIDI文件没有 “内置”解决方案(例如,afplay
不起作用)。因此,我相信任何解决方案都将涉及下载和安装其他程序。
选项#1:下载并安装QuickTime 7,该版本在Mavericks上仍然可以正常运行,然后可以通过以下方式播放midi文件:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
但是,只有在用户启用了该偏好设置后,该功能才会自动播放,我相信默认情况下该功能处于关闭状态。
选项2:使用FluidSynth
要安装它,您必须使用Fink,MacPorts或(我建议)Homebrew。安装Homebrew后,在终端中输入以下内容:
brew install fluidsynth
(MacPorts的命令为sudo port install fluidsynth
,芬克的命令为fink install fluidsynth
。)
但是,下载fluidsynth
只能让您分得一杯there。然后,您需要一个我从未听说过的“ SoundFont”文件。这里有关于他们的信息
我从S. Christian Collins下载了一个免费的“ GeneralUser”。当前版本(截至2013-11-27)是FluidSynth版本1.44。{如果该直接链接将来会中断,请使用上一个链接,该链接将带您进入GeneralUser的常规网页。}
下载并解压缩后,您将拥有一系列文件,包括“ GeneralUser GS FluidSynth v1.44.sf2”(显然,将来名称可能会更改)。我重命名了该文件并将其移至/usr/local/share/fluidsynth/generaluser.v.1.44.sf2
。
放置并fluidsynth
安装SoundFont文件后,可以使用以下命令播放Midi:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
NB还有当你这样做其中获得表现出一定的(貌似无害的)错误信息。如果要抑制它们,请使用:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
代替。
显然,我永远都不会记住所有这些,所以我做了一个zsh
叫做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
}
(我认为这也应该适用bash
。)
现在,我要做的就是键入:
playmidi example.mid
并example.mid
会玩。
这为我工作:
$ brew安装胆小 $胆小的file.midi
file.midi: No such file or directory
您可以将VLC与非交互式CLI界面一起使用-I dummy
:
/Applications/VLC.app/Contents/MacOS/VLC -I dummy file.mid vlc://quit
要启用Midi支持,请转至“首选项”>“显示全部”>“输入/编解码器”>“音频编解码器”>“ Fluid Synth”,然后将声音字体设置为类似http://www.schristiancollins.com/generaluser.php的FluidSynth声音字体的文件。
编辑:midi支持已从VLC的最新版本中删除。您仍然可以按照TJ Luoma所述从外壳使用流体合剂:
brew install fluidsynth
wget http://www.schristiancollins.com/soundfonts/GeneralUser_GS_1.44-FluidSynth.zip
unzip GeneralUser_GS_1.44-FluidSynth.zip
mkdir -p /usr/local/share/fluidsynth
mv GeneralUser\ GS\ 1.44\ FluidSynth/GeneralUser\ GS\ FluidSynth\ v1.44.sf2 /usr/local/share/fluidsynth
fluidsynth -i /usr/local/share/fluidsynth/GeneralUser\ GS\ FluidSynth\ v1.44.sf2 file.mid
根据VLC自己论坛上的帖子 ,网站管理员Felix Paul Kuehne说
您好,显然,FluidSynth在上一次更新的编译过程中迷路了。请放心,它将很快恢复到2.1.2!
因此,现在要么降级到vlc 2.0.9,要么等待vlc 2.1.2。这样,您现有的解决方案将照常运行。
不完全是答案,但是有一个小型应用程序可以在Mac OS X命令行上发送Midi数据。它还可以控制GarageBand的基本功能:http : //www.bibiko.de/music/MIDImyAPP/
为了使事情更方便,您可以在AppleScript应用程序中包装TJ Luoma的答案:
on open inputFile
tell application "Terminal"
do script "fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 " & (quoted form of POSIX path of inputFile as string)
activate
end tell
end open
然后,您可以选择在随机的.mid文件中获取信息,将“打开方式:”更改为AppleScript应用程序,然后按“全部更改...”以使其成为打开.mid文件的默认方式。现在,当您双击MIDI文件时,它将打开“终端”窗口并自动播放。