यह मूल रूप से अपेक्षा से अधिक जटिल समस्या थी।
QuickTime X मिडी फ़ाइलों को नहीं चला सकता है, हालाँकि QuickTime 7 कर सकता है।
जहां तक मैं बता सकता हूं कि मैक ओएस एक्स पर मिडी फ़ाइलों को खेलने के लिए कोई "अंतर्निहित" समाधान afplay
नहीं है (उदाहरण के लिए, काम नहीं करता है)। इसलिए मेरा मानना है कि किसी भी समाधान में कुछ अन्य प्रोग्राम को डाउनलोड और इंस्टॉल करना शामिल होगा।
विकल्प # 1: डाउनलोड करें और QuickTime 7 स्थापित करें जो अभी भी Mavericks पर ठीक काम करता है, और फिर आप मिडी फ़ाइलों को इसके द्वारा चला सकते हैं:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
हालाँकि , यह केवल ऑटोप्ले होगा यदि उपयोगकर्ता ने उस वरीयता को सक्षम किया है, जो मुझे लगता है कि डिफ़ॉल्ट रूप से बंद है।
विकल्प # 2: फ्लुइड सिंथ का उपयोग करें
इसे स्थापित करने के लिए, आपको Fink, MacPorts, या (मेरी अनुशंसा) Homebrew का उपयोग करना होगा। Homebrew स्थापित होने के बाद, टर्मिनल में इसे टाइप करें:
brew install fluidsynth
(MacPorts की कमांड होगी sudo port install fluidsynth
और फिंक की होगी fink install fluidsynth
।)
हालाँकि, fluidsynth
केवल डाउनलोड करने से आपको वहाँ भाग मिलता है। फिर आपको एक "साउंडफोंट" फ़ाइल की आवश्यकता है, जिसे मैंने पहले कभी नहीं सुना था। यहां उनके बारे में जानकारी है
मैंने एस। क्रिश्चियन कॉलिंस से एक डाउनलोड किया जिसे "GeneralUser" कहा जाता है जो मुफ़्त है। वर्तमान संस्करण (2013-11-27 तक) फ्लुइडसिंथ संस्करण 1.44 है । {यदि वह सीधा लिंक भविष्य में टूट जाता है, तो पिछले लिंक का उपयोग करें जो आपको GeneralUser के लिए नियमित वेब पेज पर ले जाएगा।}
एक बार जब आप डाउनलोड कर चुके होते हैं, तो आपको "GeneralUser GS FluidSynth v1.44.sf2" सहित फ़ाइलों की एक श्रृंखला होगी (जाहिर है कि नाम भविष्य में बदल सकता है)। मैंने उस फ़ाइल का नाम बदला और उसे स्थानांतरित कर दिया /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
।
एक बार साउंडफोंट फ़ाइल जगह और 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
खेलेंगे।