मैं टर्मिनल से मिडी फ़ाइल कैसे खेल सकता हूं?


29

मैं टर्मिनल से एक मिडी फ़ाइल खेलने के लिए एक सबसे सरल कमांड लाइन ऐप (या मावेरिक्स पर एक ऑन-बोर्ड टूल) के लिए देख रहा हूं। जितना हो सके सादा, कुछ पसंद है play myfile.mid

प्रसंग: मैं पायथन में मिडी के साथ खेल रहा हूं और मुझे कुछ चाहिए जो मैं स्क्रिप्ट से लॉन्च कर सकता हूं। कोई GUI, कोई विंडो नहीं, बस प्लेबैक। यह पायथन लिपि से स्वीकार्य होने योग्य है, लेकिन टर्मिनल में काम करने वाली कोई भी चीज होनी चाहिए।

जवाबों:


36

यह मूल रूप से अपेक्षा से अधिक जटिल समस्या थी।

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खेलेंगे।


StackExchange अपने सबसे अच्छे रूप में! जबकि फ्लुइड्सिनथ विकल्प एक तरह से अधिक हैकिंग है क्योंकि मैं स्वीकार करने के लिए तैयार था (हर किसी ने काढ़ा स्थापित नहीं किया है ...) यह वास्तव में अच्छी तरह से काम करता है और वीएलसी की तुलना में स्क्रिप्ट में तेज लॉन्च करता है। तो मैं एक या दो दिन इंतजार करूंगा यदि कुछ हास्यास्पद सरल वैकल्पिक समाधान सामने आए, लेकिन यदि यह इनाम आपका नहीं है। BTW, मेरे लिए द्रव-संश्लेषण /usr/local/Cellar/fluid-synth/1.1.6 में बदल जाता है। (मुझे क्विकटाइम सॉल्यूशन का पुराना संस्करण पसंद नहीं है, आप कभी नहीं जानते कि यह कब तक काम करेगा)।
डीसीएस

हाँ, मैं मानता हूँ कि "Homebrew का उपयोग करें। MacPorts | Fink" एक आदर्श नहीं है, लेकिन a) जो कोई भी कमांड लाइन का उपयोग करके समय की किसी भी राशि को खर्च करता है, वह खुद को खोजने के लिए जा रहा है जो Apple Apple और प्रदान करता है और b से अधिक चाहता है) एक अंतर्निहित समाधान का अभाव, यह यहाँ एक उचित लग रहा था। के रूप में QuickTime7 के लिए, मैं सहमत हूँ, यह अब तक बच गया है जितना मुझे लगा कि यह होगा, लेकिन OTOH मैं विश्वास नहीं कर सकता "क्विक एक्स" अभी भी चीजें नहीं कर सकता है क्विक 7। (मुझे iWork के भविष्य से डर लगता है, लेकिन यह एक और धागे के लिए एक और चर्चा है :-)
टीजे लुओमा

IWorks की हालिया रिलीज़ वास्तव में पिछले संस्करण की तुलना में अपंग हो गई है ... मैं केवल टर्मिनल के गायब होने की प्रतीक्षा कर रहा हूं। लेकिन पर्याप्त है, या हम बकवास के लिए धराशायी हो जाएंगे।
डीसीएस

@DCS हम सूचित शिकायतों पर रोक नहीं लगाएंगे। सबसे कम, हम पूछेंगे कि वे चैट रूम में जाते हैं या वारंट होने पर एक नया धागा खोलते हैं। साथ ही, मैंने आपकी पोस्ट से कुछ विवरण संपादित किए हैं। कृपया उस जानकारी को उत्तर के रूप में पॉप करें या यदि वह जानकारी उनके साथ फिट हो तो किसी एक उत्तर को संपादित करें।
bmike

मैंने योसेमाइट पर यह कोशिश की और इसे काम करने के लिए नहीं मिला। मैं भी स्थापना रद्द और मैक बंदरगाहों को पुनर्स्थापित। त्रुटि: तरल पदार्थ: चेतावनी: चैनल 9 पर कोई प्रीसेट नहीं मिला [बैंक = 128 प्रोग = 56] बाहरी क्लाइंट अनुरोध को संभाल नहीं सका। जैक मुख्य पकड़ा संकेत 31.
रॉबर्ट वासमैन

35

यह मेरे लिए काम किया:

$ काढ़ा स्थापित समयबद्धता
$ समय पर फ़ाइल

मेरे लिए भी काम किया है - और यह बहुत कम मुसीबत है, जिसमें तरल पदार्थ शामिल हैं।
ग्लेनरा

1
सबसे अच्छा जवाब यहाँ। फ्लुइड्सिंथ उत्तर वास्तव में चतुर है, लेकिन यह किसी बिंदु पर टूटने के लिए उत्तरदायी है (यदि यह पहले से ही नहीं है) क्योंकि यह इस से बहुत अधिक जटिल है।
वेस्टक्रॉफ्ट_तो_अस्पे

यह मेरे लिए काम नहीं किया। ऊपर की पहली कमांड चलाने के बाद, मैंने दूसरा भाग लिया, और यह संदेश प्राप्त किया:file.midi: No such file or directory
user65526

5

आप एक गैर-संवादात्मक CLI इंटरफ़ेस के साथ VLC का उपयोग कर सकते हैं -I dummy:

/Applications/VLC.app/Contents/MacOS/VLC -I dummy file.mid vlc://quit

मिडी समर्थन को सक्षम करने के लिए, प्राथमिकताएं> सभी दिखाएं> इनपुट / कोडेक्स> ऑडियो कोडेक्स> फ्लूड सिंथ पर जाएं और http://www.schristiancollins.com/neneraluser.php से फ्लुइडसिंथ साउंडफॉन्ट जैसी फ़ाइल में साउंडफॉन्ट सेट करें

संपादित करें: मिडी समर्थन को वीएलसी के हालिया संस्करण से हटा दिया गया था। टीजे लुओमा द्वारा वर्णित शेल से आप अभी भी तरल पदार्थ का उपयोग कर सकते हैं:

brew install fluidsynth
wget http://www.schristiancollins.com/soundfonts/GeneralUser_GS_1.44-FluidSynth.zip
unzip GeneralUser_GS_1.44-FluidSynth.zip
mkdir -p /usr/local/share/fluidsynth
mv GeneralUser\ GS\ 1.44\ FluidSynth/GeneralUser\ GS\ FluidSynth\ v1.44.sf2 /usr/local/share/fluidsynth
fluidsynth -i /usr/local/share/fluidsynth/GeneralUser\ GS\ FluidSynth\ v1.44.sf2 file.mid

1
काम करता है! हालाँकि, वीएलसी, पूर्ण-विकसित सुपर खिलाड़ी होने के नाते, प्लेबैक शुरू होने से पहले कुछ बहुत ही ध्यान देने योग्य स्टार्टअप विलंब है, जो कि समस्या के लिए मेरे विंडोज समाधान, playmf.exe नामक एक सुपर-छोटे ऐप में नहीं था। यह मेरे उद्देश्य के लिए वीएलसी को नहीं मारता है, लेकिन कुछ छोटा होने के बाद भी अच्छा होगा। मैं यह देखने के लिए कुछ दिन प्रतीक्षा करूंगा कि क्या कोई अन्य उत्तर आता है; यदि नहीं, तो मैं तुम्हारा स्वीकार करूंगा। BTW: vlc: // वीएलसी छोड़ने और मेरी स्क्रिप्ट को फिर से शुरू करने की अनुमति देने के लिए तर्कों को तर्कों में जोड़ा जाना चाहिए।
डीसीएस

ऊपर मेरा अपडेट देखें - लानत है, यह अच्छी तरह से काम करता था!
डीसीएस

क्या vlc के पुराने संस्करण का उपयोग करना संभव है?
२२

@RossMcKinley: जबकि तकनीकी रूप से संभव है कि यह निश्चित रूप से वह नहीं है जो मैं करना चाहता हूं। सॉफ़्टवेयर को एक कारण के लिए अपडेट किया गया है, और मैं चाहता हूं कि मेरे सिस्टम पर एक भारी-भरकम प्रोग्राम जैसे वीएलसी अप टू डेट हो। यह अलग होगा अगर यह सिर्फ एक 100kb मिनी टूल था, लेकिन वीएलसी ऐसा नहीं है।
डीसीएस

1

वीएलसी के स्वयं के मंचों पर इस पोस्ट के अनुसार , साइट व्यवस्थापक फेलिक्स पॉल कुएहने ने कहा

हैलो, जाहिरा तौर पर, फ्लुइडसिंथ आखिरी अपडेट के लिए संकलन प्रक्रिया में खो गया। आश्वस्त रहें कि यह बहुत जल्द 2.1.2 में वापस आ जाएगा!

तो अब के लिए या तो 2.0.9 vlc को डाउनग्रेड करें, या vlc 2.1.2 की प्रतीक्षा करें। इस तरह, आपका मौजूदा समाधान वैसा ही काम करेगा जैसा कि वह पहले करता था।


दुर्भाग्य से, यह VLC 2.2.1 (Nov 2015) के रूप में काम नहीं करता है
जेस रिडेल

1

उत्तर बिल्कुल नहीं, लेकिन एक छोटा ऐप है जो मैक ओएस एक्स कमांड लाइन पर मिडी डेटा भेज सकता है। यह बुनियादी गैराजबैंड कार्यों को भी नियंत्रित कर सकता है: http://www.bibiko.de/music/MIDImyAPP/


हे धन्यवाद कि कुछ वैसा ही है जैसा मुझे लग रहा था, मैं
स्टैटिक्सेकॉन्ग

0

चीजों को और अधिक सुविधाजनक बनाने के लिए, आप एक AppleScript ऐप में टीजे लुओमा के उत्तर को लपेट सकते हैं :

on open inputFile
    tell application "Terminal"
        do script "fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 " & (quoted form of POSIX path of inputFile as string)
        activate
    end tell
end open

फिर आप एक यादृच्छिक .mid फ़ाइल पर जानकारी प्राप्त करें का चयन कर सकते हैं, "Open with:" को AppleScript ऐप में बदल सकते हैं, और इसे "। सभी बदलें ..." दबाकर इसे खोलने का डिफ़ॉल्ट तरीका बना सकते हैं। mid फाइलें। अब जब आप MIDI फ़ाइल पर डबल-क्लिक करते हैं, तो यह टर्मिनल विंडो को खोलेगा और इसे स्वचालित रूप से चलाएगा।


बेशक, यह सामान्य रूप से कुछ लोगों के लिए सहायक हो सकता है, लेकिन ऑप एक कमांड-लाइन soution के बारे में पूछ रहा था;)
forgotstackxpassword

ओह, सॉरी, सवाल गलत!
user3932000
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.