Це виявилося складнішою проблемою, ніж я спочатку очікував.
QuickTime X не може відтворювати файли MIDI, хоча QuickTime 7 міг.
Наскільки я можу сказати, це означає, що на 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 введіть це в Terminal:
brew install fluidsynth
(Команда MacPorts була б sudo port install fluidsynth
і Фінка була б fink install fluidsynth
.)
Однак завантаження fluidsynth
отримує там лише частково. Тоді вам потрібен файл "SoundFont", про який я ніколи не чув. Тут є інформація про них
Я скачав його від С. Крістіана Коллінза під назвою "GeneralUser", який є безкоштовним. Поточна версія (станом на 2013-11-27) - FluidSynth, версія 1,44 . {Якщо це пряме посилання в майбутньому перерветься, скористайтеся попереднім посиланням, яке переведе вас на звичайну веб-сторінку для GeneralUser.}
Завантаживши та розпакувавши це, у вас з'явиться серія файлів, включаючи "GeneralUser GS FluidSynth v1.44.sf2" (очевидно, що назва може змінитися в майбутньому). Я перейменував цей файл і перемістив його /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Після того, як файл SoundFont буде встановлений і fluidsynth
встановлений, ви можете відтворити міді за допомогою цієї команди:
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
буде грати.