Bu, beklediğimden daha karmaşık bir problem olarak ortaya çıktı.
QuickTime 7, QuickTime 7'nin oynamasına rağmen MIDI dosyalarını oynatamaz.
Bildiğim kadarıyla olduğunu o aracı söyleyebilirim hayır "yerleşik" bir çözüm, Mac OS X üzerinde MIDI dosyalarını oynatmak için (örneğin, afplay
does not iş). Bu nedenle, herhangi bir çözümün başka bir programın indirilmesini ve kurulmasını içereceğini düşünüyorum.
Seçenek # 1: Mavericks'te hala iyi çalışan QuickTime 7'yi indirip yükleyin ve ardından midi dosyalarını şu şekilde oynayabilirsiniz:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
ancak bu yalnızca kullanıcı varsayılan olarak kapalı olduğuna inandığım tercihi etkinleştirdiğinde otomatik olarak oynatılır .
Seçenek # 2: FluidSynth Kullanın
Kurmak için ya Fink, MacPorts ya da (benim tavsiyem) Homebrew kullanıyor olmalısın. Homebrew kurulduktan sonra, bunu Terminal'e yazın:
brew install fluidsynth
(MacPorts' komutu olacağını sudo port install fluidsynth
ve Fink en olacaktı fink install fluidsynth
.)
Ancak, indirme işlemi fluidsynth
yalnızca orada size yarı yolda yardımcı olur. O zaman daha önce hiç duymadığım bir "SoundFont" dosyasına ihtiyacınız var. Burada onlar hakkında bilgi var
Birini S. Christian Collins'ten "GeneralUser" adı verilen ve ücretsiz olanı indirdim. Mevcut sürüm (2013-11-27 itibariyle) FluidSynth sürüm 1.44'tür . {Gelecekte bu doğrudan bağlantı koparsa, sizi GeneralUser için normal web sayfasına götürecek olan önceki bağlantıyı kullanın.}
Bunu indirdikten ve açtığınızda, "GeneralUser GS FluidSynth v1.44.sf2" (bir dosya gelecekte daha sonra değişebilir) dahil olmak üzere bir dizi dosyanız olacaktır. Bu dosyayı yeniden adlandırdım ve adresine taşıdım /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
SoundFont dosyası yerleştirilip fluidsynth
yüklendikten sonra, bu komutu kullanarak bir midi çalabilirsiniz:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
nb Bunu yaparken görüntülenen bazı (görünüşte zararsız) hata mesajları vardır. Onları bastırmak istiyorsanız kullanın:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
yerine.
Belli ki asla hepsini hatırlamayacağım, bu yüzden zsh
denilen bir işlev yaptımplaymidi
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
}
(Bunun için de çalışması gerekirbash
.)
Şimdi tek yapmam gereken türü:
playmidi example.mid
ve example.mid
oynayacak.