2014-05-01 5 views
5

मैं मज़े के लिए एक मूल संगीत रचना प्रणाली बनाने के साथ चारों ओर घूम रहा हूं। मैं स्मृति में संगीत का प्रतिनिधित्व कर सकता हूं, लेकिन मैं (स्पष्ट रूप से) वास्तविक ध्वनि को आउटपुट करने में सक्षम होना चाहता हूं! मुझे वास्तव में परवाह नहीं है कि प्रारूप क्या है (MIDI, mp3, ogg, जो भी हो)। मैं सिर्फ प्रोग्राम में नमूने लोड करने और उन्हें सबसे आसान तरीके से खेलने में सक्षम होना चाहता हूं। मैंने समाधान के लिए चारों ओर खोज की है लेकिन जो भी मैं देख रहा हूं वह या तो है) मेरी जरूरतों के लिए बहुत जटिल (ओवरहेड-वार), बी) सक्रिय रूप से समर्थित नहीं है, या सी) अच्छी तरह से प्रलेखित नहीं है। मुझे ध्वनि आउटपुट का एक उदाहरण देखना चाहिए या अन्यथा, ऐसा करने के सबसे सरल तरीके पर कुछ दिशा।हास्केल में ध्वनि नमूना चलाने का सबसे आसान तरीका क्या है?

+1

MIDI एक ऑडियो प्रारूप नहीं है। – leftaroundabout

+0

@ बाएंअराउंडबाउट वास्तव में एक सहायक टिप्पणी नहीं है, अगर मैं MIDI डेटा में पढ़ सकता हूं और इसे वापस चला सकता हूं, तो यह मेरे साथ ठीक होगा। –

+0

यदि आप लिनक्स या ओएसएक्स पर हैं, तो सबसे आसान तरीका स्मृति में ध्वनिफाइल लोड करना है (शायद 'libsndfile' का उपयोग करके) और इसे '/ dev/audio' पर लिखें। या 'sox' या इसी तरह के खोलें और क्या वह ऑडियो फ़ाइल चलाएं। –

उत्तर

1

मै मैक ओएसएक्स पर एमआईडीआई का उपयोग करके और सिंपलसिंथ को ईवेंट भेजना समाप्त कर दिया। यह hmidi पैकेज और the bindings to OSX's CoreMIDI by bkomuves का उपयोग करके हासिल किया गया था। मुझे नवीनतम जीएचसी के साथ काम करने के लिए here से एचएमआईडीआई पैकेज का कांटा स्थापित करना पड़ा। मैंने फिर SimpleSynth स्थापित किया और ओएसएक्स पर Audio MIDI Setup उपयोगिता का उपयोग करके एक आईएसी चालक को सक्षम किया। मैं फिर स्थापित आईएसी चालक से सुनने के लिए SimpleSynth सेट करता हूं और enumerateDestinations फ़ंक्शन को bkomuvres 'बाइंडिंग से CoreMIDI तक पहले उपलब्ध Destination पर पकड़ने और send का उपयोग करके पर भेजने में सक्षम था। यह एक सम्मोहन की तरह काम करता है!

0

हास्केल के साथ, आप अपने कोड से अन्य पुस्तकालयों/अनुप्रयोगों का उपयोग करके पूरी तरह से भाषा पर एक संभाल लेना चाहते हैं, हालांकि निम्न लिंक संगीत और ध्वनि के लिए पुस्तकालयों का एक लिंक है।

http://www.haskell.org/haskellwiki/Applications_and_libraries/Music_and_sound

एक और विचार C/C++ के साथ OpenAL के साथ परिचित पाने के लिए और फिर वहाँ से आप HOpenAL की संरचना (हास्केल OpenAL के बंधन जो वास्तव में OpenAL DLL/एसओ कॉल) से कुछ परिचित हैं जाएगा।

ओपनएएल पहले के लिए सीधा ट्यूटोरियल के साथ लिंक! http://enigma-dev.org/forums/index.php?topic=730.0;wap2

मुझे आशा है कि इस मदद करता है ...

2

आप Euterpea, जो Hackage पर नहीं है पसंद है, लेकिन स्थापित करने के लिए सुखद एहसास था और काफी वर्बोज़ प्रलेखन (यह एक परिचयात्मक हास्केल का प्रमुख हिस्सा है लगता है हो सकता है येल में पाठ्यक्रम)। अधिक लिंक/निर्देश खोजने के लिए शीर्ष पर मेनू में "Euterpea" शब्द पर होवर करें।

+0

यह समाधान नहीं था जिसका उपयोग मैंने समाप्त किया, लेकिन इससे मुझे इसका नेतृत्व हुआ, इसलिए धन्यवाद! –

+0

@ बेंजामिनकोवाच क्या आपको संभवतः याद है कि आपका समाधान क्या था? मैंने दस्तावेज़ों के माध्यम से एक नज़र डाली थी लेकिन वास्तव में ऑडियो चलाने के लिए कोई रास्ता नहीं दिख रहा था, केवल WAV फ़ाइल में प्रस्तुत करने की क्षमता। –

+0

@ क्रिस अपने उत्तर में लिखे गए उत्तर पर एक नज़र डालें! –

संबंधित मुद्दे