สิ่งนี้กลายเป็นปัญหาที่ซับซ้อนกว่าที่ฉันคาดไว้
QuickTime X ไม่สามารถเล่นไฟล์ MIDI ได้แม้ว่า QuickTime 7 จะทำได้
เท่าที่ฉันสามารถบอกได้ว่าหมายความว่าไม่มี "ตัว" ในการแก้ปัญหาการเล่นไฟล์ MIDI บน Mac OS X (ตัวอย่างเช่นafplay
ไม่ทำงาน) ดังนั้นฉันเชื่อว่าโซลูชันใด ๆ ที่เกี่ยวข้องกับการดาวน์โหลดและติดตั้งโปรแกรมอื่น
ตัวเลือก # 1: ดาวน์โหลดและติดตั้งQuickTime 7ซึ่งยังคงทำงานได้ดีบน Mavericks แล้วคุณสามารถเล่นไฟล์ midi ได้โดย:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
แต่ที่จะเล่นอัตโนมัติหากผู้ใช้เปิดใช้งานการตั้งค่าได้ที่ซึ่งผมเชื่อว่าเป็นปิดโดยปริยาย
ตัวเลือก # 2: ใช้FluidSynth
ในการติดตั้งคุณต้องใช้ HomePink, MacPort หรือ (คำแนะนำของฉัน) Homebrew เมื่อติดตั้ง Homebrew ให้พิมพ์สิ่งนี้ในเทอร์มินัล:
brew install fluidsynth
(คำสั่งของ MacPorts จะเป็นsudo port install fluidsynth
และจะเป็นของตำรวจfink install fluidsynth
)
อย่างไรก็ตามการดาวน์โหลดfluidsynth
จะช่วยให้คุณไปได้ทางนั้น จากนั้นคุณต้องใช้ไฟล์ "SoundFont" ซึ่งฉันไม่เคยได้ยินมาก่อน มีข้อมูลเกี่ยวกับพวกเขาที่นี่
ฉันดาวน์โหลดหนึ่งไฟล์จากChristian 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
ผมเปลี่ยนชื่อไฟล์ที่และย้ายไปยัง
เมื่อไฟล์ SoundFont วางและfluidsynth
ติดตั้งแล้วคุณสามารถเล่น 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
จะเล่น