2012-03-19 9 views
5

मुझे हैकेल के लिए ध्वनि पुस्तकालय खोजने की आवश्यकता है। मैंने कुछ लोगों के निर्देशों का पालन किया है जो हैकेल विकी http://www.haskell.org/haskellwiki/Sound_data_structures में प्रस्तुत किए गए हैं लेकिन काम करने के लिए कोई भी नहीं मिल सका। मुझे इसकी आवश्यकता के बावजूद ऑडियो फाइलों को चलाने की ज़रूरत है। मैं FunGen के साथ एक गेम विकसित कर रहा हूं, और संगीत के लिए इसका समय। मुझे उन्हें काम करने में कुछ समस्याएं हो सकती हैं, लेकिन मैं एक साधारण ध्वनि उदाहरण भी नहीं खेल सकता। मेरी अधिकांश समस्याएं कैबल इंस्टॉलेशन के कारण हैं, या निर्भरताएं जिन्हें मैं कोई भी नहीं ढूंढ सकता। मैं विंडोज का उपयोग कर रहा हूँ।ध्वनि lib हैकेल

+0

आपने किसने कोशिश की है, और क्या समस्याएं हैं? क्या आप त्रुटि संदेश दे सकते हैं? – luqui

+0

कृपया यह जांचें [प्रश्न] (https://stackoverflow.com/questions/14005592/play-a-wav-file-with-haskell) आशा है कि आपके लिए कुछ काम करता है :) – biinui

उत्तर

7

विंडोज़ पर होने से हास्केल ऑडियो में एक प्रमुख सीमा है। अधिकांश पैकेज सी कोड के लिए बाध्य होते हैं, और वे या तो लिनक्स-केंद्रित (जैक, अल्सा) या सर्वश्रेष्ठ नाममात्र क्रॉस-प्लेटफॉर्म पर होते हैं लेकिन विंडोज़ में निर्माण और उपयोग करना कठिन होता है। Haskell बाध्यकारी स्थापित करने से पहले आपको पहले सी पुस्तकालय बनाने या स्थापित करने की आवश्यकता होगी।

क्या आपने OpenAL को आजमाया है? यह संभवतः आप जो करना चाहते हैं उसके लिए सबसे उपयुक्त है। यदि आप C OpenAL libraries इंस्टॉल करते हैं, तो हास्केल बाइंडिंग अगले चरण में काफी सरल होना चाहिए। कुछ एड-ऑन पैकेज हैं जो कुछ सामान्य कार्यों को सरल बनाने के लिए हैं, जैसे ALUT और Alure।

अन्यथा, अधिकांश अन्य समाधानों में वास्तव में कई पैकेज शामिल होंगे जो एक साथ अच्छी तरह से काम नहीं कर सकते हैं। hsndfile और hsndfile-vector ऑडियो फ़ाइलों को पढ़ने के लिए अच्छे हैं (आपको libsndfile स्थापित होना होगा), लेकिन वे ध्वनि नहीं बजाते हैं। portaudio ऑडियो चलाएगा (फिर, आपको C portaudio library की आवश्यकता होगी), लेकिन इसे थोड़ी देर में अपडेट नहीं किया गया है (और कुछ अपडेटों की बुरी तरह आवश्यकता है)। आवश्यक सी पुस्तकालयों को स्थापित करने के लिए आपको सी कंपाइलर श्रृंखला (उदा। मिनजीडब्ल्यू या सिगविन) के साथ सामान्य रूप से परिचित होने की आवश्यकता होगी।

एक और तरीका सुपरकॉलिडर या सीसाउंड जैसे समर्पित ऑडियो भाषा से जुड़ना हो सकता है। यह एक हेवीवेट समाधान होगा, लेकिन बाइंडिंग बेहतर बनाए रखा जाता है और कम से कम सीसाउंड विंडोज पर आसानी से स्थापित किया जाना चाहिए (प्रकटीकरण: मैंने hCsound पैकेज लिखा था)। Sox (C library/executable) आपके लिए भी काम कर सकता है (मैंने विंडोज़ पर कभी कोशिश नहीं की है, लेकिन यह काम करने का दावा करती है)।

+0

अच्छी सूची, और बहुत व्यापक। केवल एक चीज जो मैं जोड़ूं वह यह है कि ALUT को बहिष्कृत किया गया है। http://connect.creativelabs.com/openal/Lists/OpenAL%20Development/Flat.aspx?रूटफोल्डर =% 2 फॉपेनल% 2FLists% 2FOpenAL% 20 डेवलपमेंट% 2FDeprecated% 20Alut% 20Wav% 20 लोडिंग% 20 फ़ंक्शन और FolderIDID = 0x01200200BB72FB7EEB38514F8CD1A9372A031174 – rtperson

+0

@rtperson - इसके लिए धन्यवाद; मैंने कभी भी ALUT का उपयोग नहीं किया है और मूल रूप से इसे जीएलयूटी के ऑडियो-एनालॉग के रूप में सोचा है (जो, हालांकि ज्यादातर बहिष्कृत है, अभी भी काफी आम है)। –

+0

जब मैं या तो hsndfile या hCsound स्थापित करने का प्रयास करता हूं, तो कैबल चिल्लाता है कि sndfile lib अनुपलब्ध है। मुझे एहसास है कि मैं इसे स्थापित करने के बारे में नहीं जानता, क्योंकि एक डीएल डिंडट काम की प्रतिलिपि – Illiax

1

मुझे इसकी प्रारूप के बावजूद ऑडियो फ़ाइलों को चलाने की ज़रूरत है।

इसके लिए आपकी सर्वश्रेष्ठ शर्त hsndfile होगी, जो जॉन एल के उत्कृष्ट उत्तर में उल्लिखित है। लेकिन आप शुरुआत में अपने जीवन को आसान बनाना चाहते हैं। डब्ल्यूएवी फ़ाइल प्रारूप a very simple format है - अनिवार्य रूप से कच्चे पीसीएम डेटा से युक्त न्यूनतम हेडर प्रीपेड के साथ। खेलने के लिए WAV फ़ाइल प्राप्त करने का प्रयास करें, और फिर वहां से अपने क्षितिज को विस्तृत करें।

आप नमूना कोड की कमी के खिलाफ चढ़ाई करेंगे - और आपको खुद को विदेशी मेमोरी पॉइंटर्स और अन्य सीधी तकनीकों की आवश्यकता हो सकती है - लेकिन WAV फ़ाइल here खोलने और पढ़ने के लिए एक सभ्य नमूना है।

इसके अलावा, विंडोज़ पर विकसित होने पर, -fno-ghci-sandbox ध्वज से प्यार करना सीखें। यह ghci को बताता है कि आप एक पुस्तकालय से कनेक्ट कर रहे हैं जो अपने स्वयं के धागे स्थानीय भंडारण का उपयोग करता है। जीएचसीआई में काम करने के लिए कुछ बाहरी पुस्तकालयों को प्राप्त करने का यह एकमात्र तरीका है।