Điều này hóa ra là một vấn đề phức tạp hơn tôi dự kiến ban đầu.
QuickTime X không thể phát các tệp MIDI, mặc dù QuickTime 7 có thể.
Theo như tôi có thể nói điều đó có nghĩa là không có giải pháp "tích hợp" nào để phát các tệp MIDI trên Mac OS X (ví dụ: afplay
không hoạt động). Do đó tôi tin rằng mọi giải pháp sẽ liên quan đến việc tải xuống và cài đặt một số chương trình khác.
Tùy chọn # 1: Tải xuống và cài đặt QuickTime 7 vẫn hoạt động tốt trên Mavericks và sau đó bạn có thể phát các tệp midi bằng cách:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
tuy nhiên , điều đó sẽ chỉ tự động phát nếu người dùng đã bật tùy chọn đó, theo mặc định tôi tắt .
Tùy chọn # 2: Sử dụng FluidSynth
Để cài đặt nó, bạn phải sử dụng Fink, MacPorts hoặc (khuyến nghị của tôi) Homebrew. Khi Homebrew được cài đặt, hãy nhập cái này vào Terminal:
brew install fluidsynth
(Lệnh của MacPorts sẽ là sudo port install fluidsynth
và Fink sẽ là fink install fluidsynth
.)
Tuy nhiên, tải xuống fluidsynth
chỉ giúp bạn có được một phần ở đó. Sau đó, bạn cần một tập tin "SoundFont", điều mà tôi chưa từng nghe thấy trước đây. Có thông tin về họ ở đây
Tôi đã tải xuống một từ S. Christian Collins được gọi là "GeneralUser" miễn phí. Phiên bản hiện tại (kể từ 2013-11-27) là phiên bản FluidSynth 1.44 . {Nếu liên kết trực tiếp đó bị hỏng trong tương lai, hãy sử dụng liên kết trước đó sẽ đưa bạn đến trang web thông thường cho GeneralUser.}
Khi bạn đã tải xuống và giải nén nó, bạn sẽ có một loạt các tệp bao gồm "GeneralUser GS FluidSynth v1.44.sf2" (rõ ràng tên có thể thay đổi trong tương lai). Tôi đổi tên tập tin đó và chuyển nó sang /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Khi tệp SoundFont được đặt và fluidsynth
được cài đặt, bạn có thể phát midi bằng cách sử dụng lệnh này:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
nb Có một số thông báo lỗi (dường như vô hại) được hiển thị khi bạn làm điều đó. Nếu bạn muốn loại bỏ chúng, hãy sử dụng:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
thay thế.
Rõ ràng là tôi sẽ không bao giờ nhớ tất cả những điều đó, vì vậy tôi đã thực hiện một zsh
chức năng gọi là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
}
(Điều đó sẽ làm việc cho bash
quá tôi tin.)
Bây giờ tất cả những gì tôi phải làm là gõ:
playmidi example.mid
và example.mid
sẽ chơi.