2009-03-20 13 views
29

एक नए सॉफ्टवेयर प्रोग्रामिंग कक्षा में वापस हमें एक प्रोग्राम लिखना पड़ा जो गिटार प्लक की आवाज़ को अनुकरण करेगा।गिटार नोट कैसे उत्पन्न करें

मैं पूरे दिन शुद्ध पाप तरंगें बना सकता हूं, लेकिन मैं यह याद रखने की कोशिश कर रहा हूं कि गिटार की तरह एक आवाज कैसे करें। मुझे याद है कि इसमें यादृच्छिक() और पाप की लहर में लगातार गिरावट का उपयोग करने के साथ कुछ था, लेकिन मुझे विवरण याद नहीं है।

+0

आप सॉफ़्टवेयर के साथ ध्वनि तरंग रिकॉर्ड और विज़ुअलाइज़ कर सकते हैं। इससे आपको कुछ विचार मिल सकते हैं। –

+2

फिंगर उठाया या एक तस्वीर के साथ? ;) –

+0

डीएफटी के साथ विश्लेषण करने के लिए कुछ सॉफ्टवेयर भी मदद कर सकते हैं। शायद matlab। – Vasil

उत्तर

21

प्राकृतिक ध्वनि की सिंथेटिक ध्वनि उत्पन्न करने के लिए यह वास्तव में चुनौतीपूर्ण समस्या है। कई तकनीकें हैं - कुछ सरल, कुछ वास्तव में जटिल हैं। अच्छे नतीजे पाने के लिए आपको अधिक जटिल एल्गोरिदम का उपयोग करना होगा।

  • subtractive संश्लेषण
  • Additive संश्लेषण
  • दानेदार संश्लेषण
  • Wavetable संश्लेषण
  • आवृत्ति मॉडुलन संश्लेषण
  • चरण विरूपण संश्लेषण
  • शारीरिक मॉडलिंग संश्लेषण
  • नमूना आधारित संश्लेषण
  • +०१२३५१६४१०६
  • Subharmonic संश्लेषण

यह कुछ संश्लेषण Wikipedia से लिया तरीके हैं। शारीरिक मॉडलिंग वास्तव में अच्छी आवाज पैदा कर सकता है लेकिन यह विधि की जटिलता में दिखाता है - विचार सरल है, कार्यान्वयन कठिन है।

आपको शायद योजक संश्लेषण के साथ शुरू करना चाहिए। इसके लिए केवल मौलिक आवृत्ति के साइन लहरें जोड़ें और पूर्णांक गुणा करें। उदाहरण के लिए 440 हर्ट्ज, 880 हर्ट्ज, 1320 हर्ट्ज, ... आयाम आवृत्ति के साथ तेजी से गिरना चाहिए। घटकों की संरचना के बारे में जानकारी संगीत उपकरण विश्लेषण के बारे में वैज्ञानिक पत्रों में सबसे अच्छी तरह से पाई जाती है। अंत में आपको सिग्नल के आयाम को समय-समय पर लिफाफा के साथ संशोधित करना होगा। गिटार के लिए संरचना भी उल्लेखनीय कागजात में पाई जा सकती है।


cdonner (Plucking a Guitar String - Karplus-Strong algorithm) और Dervin Thunk (Physical modeling) से लिंक होनहार ध्वनि। अंतर समीकरणों के साथ पूर्ण भौतिक मॉडलिंग का वास्तव में सरल अनुमान। हो सकता है कि गिटार तारों और इसी तरह के उपकरणों तक सीमित हो, लेकिन वास्तव में जो आप खोज रहे हैं और एक मिश्रित मॉडल को ट्यून करने से निश्चित रूप से सरल करना चाहते हैं। अगर मैं सप्ताहांत में कुछ समय पाता हूं तो मैं इसे खुद कोशिश करूंगा; वास्तव में बाहर निकला क्या एल्गोरिदम से बाहर निकल सकता है।

2

एक प्रारंभिक बिंदु के रूप में, आप गिटार ध्वनियों के कुछ तरंगों को देखना चाह सकते हैं। मैं मैथवर्क्स फ़ाइल एक्सचेंज पर बॉब स्टरम द्वारा this posting देखेंगे। ऐसा लगता है कि इसमें सिग्नल प्रोसेसिंग डेमो का एक गुच्छा शामिल है, और कुछ .wav फ़ाइलें गिटार समेत कई उपकरणों के लिए शामिल हैं। आप उन्हें WAVREAD के साथ MATLAB में लोड कर सकते हैं, और उसके बाद यह पता लगाना शुरू कर सकते हैं कि आप तरंगों को कैसे दोहरा सकते हैं (यानी आप किस प्रकार का क्षय का उपयोग करेंगे, आदि)।

4

गिटार संश्लेषण एक विशेष रूप से मुश्किल समस्या है क्योंकि fretboard को छूने के लगभग अनंत तरीकों की वजह से, और स्ट्रिंग को रोमांचक बनाता है।

अनिवार्य रूप से स्ट्रिंग इसकी मूल आवृत्ति और बहुत कम ऊर्जा के साथ कई हार्मोनिक पर आ जाएगा। मैं एक सिंगल गैर-फ्रेटेड स्ट्रिंग पिक की फूरियर प्लॉट को देखने की सलाह दूंगा।

आप सही हार्मोनिक्स में जोड़कर स्ट्रिंग की स्थिर स्थिति ध्वनि प्राप्त कर सकते हैं, लेकिन आपको हमले को बनाए रखने, बनाए रखने और क्षय की अवधि को सही तरीके से अनुकरण करने की भी आवश्यकता है: आयाम तेजी से बढ़ेगा (और शायद चोटी) जब स्ट्रिंग उठाई जाती है। यह एक छोटी अवधि के लिए थोड़ा और छोड़ देगा (अधिकतर स्थिर रखें) और आखिरकार लंबी अवधि में क्षय हो जाएंगे। गिटार की तरह लगने के लिए आपको यह अधिकार प्राप्त करने की आवश्यकता है और कुछ और नहीं।

2

यह मानते हुए कि यह एक प्रथम वर्ष था (मुझे "फ्रेशमैन") प्रोग्रामिंग क्लास देखना था, मेरी धारणा यह होगी कि वे एक गिटार के सटीक भौतिक सिमुलेशन के बजाय एक साधारण प्लक-स्ट्रिंग फ़िल्टर की तलाश में थे (हालांकि यह आपको अतिरिक्त क्रेडिट मिल सकता है)। डिजिटल सिग्नल प्रोसेसिंग का अध्ययन करते समय यह एक आम असाइनमेंट है।

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

1

Windows पर, Win32 एम.एम. API (कोड के 5 लाइनें)

2

का उपयोग यह एक पुरानी सवाल है, लेकिन यहाँ लोगों के लिए एक और अधिक व्यावहारिक जवाब है जो नहीं चाहता/है संश्लेषण सिद्धांत, आदि में गहरा गोता करने की जरूरत है

स्टैनफोर्ड में CCRMA पर लोग ऑडियो संश्लेषण और ऑडियो आई/ओ के लिए सी ++ कक्षाओं का एक सेट बनाया है और वहाँ plucked और twang कक्षाएं कि plucked तार का अनुकरण है।

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