मुझे लगता है कि जाने के लिए सबसे आसान मार्ग पुराने विंडोज मल्टीमीडिया एपीआई का उपयोग करना है क्योंकि यह वास्तव में सीधे आगे है। http://msdn.microsoft.com/en-us/library/dd743586(v=VS.85).aspx
तुम क्या है कि आप एक इनपुट डिवाइस पाने के लिए waveInOpen
समारोह का उपयोग करें:
यहाँ MSDN के लिए लिंक है। यह पता लगाने के लिए कि आप किस डिवाइस का उपयोग करना चाहते हैं, सभी उपकरणों को गिनती नहीं करते हैं लेकिन आप उनमें से प्रत्येक और एक से पूछ सकते हैं। waveInGetNumDevs
पर कॉल करके स्थापित डिवाइसों की संख्या लौटा दी गई है। फिर आप प्रत्येक डिवाइस के लिए waveInGetDevCaps
पर कॉल कर सकते हैं और उन गुणों का निरीक्षण कर सकते हैं।
जब आपके डिवाइस को आप संभालते हैं तो डेटा के छोटे हिस्से प्राप्त करने के लिए बार-बार waveInAddBuffer
पर कॉल करें। waveInOpen
के दौरान निर्दिष्ट प्रारूप के आधार पर बाइट कच्चे ऑडियो डेटा का प्रतिनिधित्व करते हैं। कुछ आवृत्ति पर 8 या 16-बिट हस्ताक्षरित या unisnged नमूना में आयाम।
फिर आप सिग्नल को सुचारू बनाने के लिए रोलिंग औसत लागू कर सकते हैं और बस इसे प्रिंट कर सकते हैं।
सी # में एक ध्वनि एपीआई नहीं है जो मुझे पता है, तो आप क्या करते हैं कि आप Win32 API फ़ंक्शंस प्राप्त करने के लिए पी/Invoke का उपयोग करते हैं। यह काफी सीधे आगे है, आपको केवल Win32 शीर्षकों के छोटे संस्करणों को पोर्ट करने की आवश्यकता है ताकि उन्हें सी # से सीधे कॉल किया जा सके।
यदि आप अधिक कट्टर हैं तो आप सी ++/सीएलआई में एक रैपर लाइब्रेरी लिख सकते हैं। यह किसी विचार का बुरा नहीं है क्योंकि यह आपको मौजूदा विंडोज सी/सी ++ हेडर फाइलों का उपयोग करने देता है और सी ++ और प्रबंधित कोड को घुमावदार तरीकों से मिलाता है। बस अप्रबंधित संसाधनों से सावधान रहें और आपके पास किसी भी समय एक बहुत ही शक्तिशाली इंटरेबिलिटी लाइब्रेरी होगी।
लेकिन विंडोज विस्टा से शुरू होने वाले अधिक उन्नत ऑडियो एपीआई भी हैं, विंडोज कोर ऑडियो घटक जो लाइन के साथ और अधिक दिलचस्प हो सकते हैं। लेकिन मूल I/O ऑपरेशन के लिए विंडोज मल्टीमीडिया फ़ंक्शंस आपको तेज़ी से ले जाएगा।
मैंने सरल सॉफ़्टवेयर सिंथेसाइज़र बनाने के दौरान इन कार्यों का उपयोग कई अवसरों पर किया है। अफसोस की बात है कि कोड लंबा चला गया है।
स्रोत
2011-03-09 16:30:24
क्या आपने डायरेक्टएक्स डायरेक्टसाउंड की कोशिश की है? – JYelton
क्या आपने अपना प्रोग्राम "किसी भी CPU" से "32 बिट केवल" में सेट करने का प्रयास किया है? अधिकांश कार्यक्रम 64 बिट मोड में चलाने से ज्यादा लाभ नहीं उठाते हैं। – CodesInChaos
मैंने पहले से ही कोशिश की, लेकिन अब तक कोई भाग्य नहीं है। किसी भी सरल प्रत्यक्ष ध्वनि उदाहरण भी नहीं मिला है। मैंने स्लिम डीएक्स की भी कोशिश की, लेकिन ऐसा लगता है कि उन सभी उदाहरणों के साथ हमेशा कुछ परेशानी होती है। मेरे मामले में मुझे गतिशील अद्यतन के साथ पूर्णांक मूल्य की आवश्यकता है (नमूना प्रति सेकंड कुछ बार)। किसी के पास इसका कुछ अनुभव है? किसी भी मदद के लिए धन्यवाद। – Marian