विषयसूची:

मिडी कनवर्टर के लिए रीयल-टाइम ऑडियो।: 7 कदम
मिडी कनवर्टर के लिए रीयल-टाइम ऑडियो।: 7 कदम

वीडियो: मिडी कनवर्टर के लिए रीयल-टाइम ऑडियो।: 7 कदम

वीडियो: मिडी कनवर्टर के लिए रीयल-टाइम ऑडियो।: 7 कदम
वीडियो: Shakira - Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup™ Song) 2024, नवंबर
Anonim
मिडी कनवर्टर के लिए रीयल-टाइम ऑडियो।
मिडी कनवर्टर के लिए रीयल-टाइम ऑडियो।

नमस्ते लोग! यह एक परियोजना है जिस पर मैंने अपने स्नातक कार्यक्रम में अपने एक पाठ्यक्रम (रीयल-टाइम डिजिटल सिग्नल प्रोसेसिंग) के लिए काम किया है। परियोजना का उद्देश्य एक डीएसपी सिस्टम बनाना है जो ऑडियो डेटा को "सुनता है" और यूएआरटी पर संबंधित नोट्स के MIDI संदेशों को आउटपुट करता है। इस उद्देश्य के लिए Arduino Nano का उपयोग किया गया था। लंबी कहानी छोटी माइक्रो-कंट्रोलर आने वाले ऑडियो डेटा पर एक एफएफटी करता है और चोटियों का कुछ विश्लेषण करता है और उपयुक्त MIDI संदेश भेजता है। MOSFETs के बारे में परेशान न हों, क्योंकि वे किसी अन्य प्रोजेक्ट के लिए हैं (जिसे बाद में इंस्ट्रक्शंस पर भी रखा जाएगा) और इस प्रोजेक्ट के लिए आवश्यक नहीं हैं। तो चलिए शुरू करते हैं !!

चरण 1: आवश्यक घटक

आवश्यक घटक
आवश्यक घटक

इस परियोजना को बनाने के लिए हमें निम्नलिखित घटकों की आवश्यकता होगी, हालांकि इनमें से कई सामान्य हैं और उनके समकक्षों के साथ प्रतिस्थापित किया जा सकता है। बेहतर कार्यान्वयन के लिए काम करने और शिकार करने के लिए सर्किट आरेख भी देखें।

घटक मात्रा

1. इलेक्ट्रेट माइक्रोफोन। 1

2. 30 किलो ओम रोकनेवाला। 1

3. 150 किलो ओम रोकनेवाला। 1

4. 100 ओम रोकनेवाला। 1

5. 2.2 किलो ओम रेसिस्टर्स। 3

6. 10 किलो ओम प्रीसेट पॉट। 1

7. 10 किलो ओम ट्रिमर पॉट। 1

8. 47 किलो ओम स्टीरियो पॉट। 1

9. 470 ओम रेसिस्टर्स। 2

10. 0.01uF कैपेसिटर। 2

11. 2.2uF कैपेसिटर। 3

12. 47uF कैपेसिटर। 2

13. 1000uF संधारित्र। 1

14. 470uF संधारित्र। 1

15. 7805 वोल्टेज नियामक। 1

16. महिला और पुरुष हेडर स्ट्रिप। प्रत्येक को 1

17. बैरल जैक कनेक्टर। 1

18. 12 वी 1 एएमपी डीसी एडाप्टर। 1

19. एसपीएसटी स्विच। (वैकल्पिक) १

20. परफ़ॉर्मर। 1

चरण 2: तकनीकी विनिर्देश।

तकनीकी निर्देश।
तकनीकी निर्देश।

नमूना आवृत्ति: 3840 नमूने / सेकंड

प्रति एफएफटी नमूनों की संख्या: 256

आवृत्ति संकल्प: 15 हर्ट्ज

ताज़ा दर: लगभग 15 हर्ट्ज

संगीत के नोटों के निचले और उच्च पैमानों को ठीक से कैप्चर नहीं किया गया है। निचले नोट कम आवृत्ति रिज़ॉल्यूशन से ग्रस्त हैं, जबकि उच्च आवृत्ति कम नमूना दरों से ग्रस्त हैं। Arduino पहले से ही स्मृति से बाहर है इसलिए बेहतर रिज़ॉल्यूशन प्राप्त करने का कोई तरीका नहीं है। और बेहतर रिजॉल्यूशन कम रिफ्रेश रेट की कीमत पर आएगा इसलिए ट्रेड-ऑफ अपरिहार्य है। हाइजेनबर्ग के अनिश्चितता सिद्धांत का लेमैन संस्करण।

प्राथमिक कठिनाई नोटों के बीच घातीय अंतर है (जैसा कि चित्र में देखा गया है। आवृत्ति अक्ष पर प्रत्येक आवेग एक संगीत नोट है)। एलएफटी जैसे एल्गोरिदम मदद कर सकते हैं लेकिन यह Arduino नैनो जैसे डिवाइस के लिए थोड़ा उन्नत और थोड़ा जटिल है।

चरण 3: सर्किट आरेख।

सर्किट आरेख।
सर्किट आरेख।
सर्किट आरेख।
सर्किट आरेख।
सर्किट आरेख।
सर्किट आरेख।
सर्किट आरेख।
सर्किट आरेख।

नोट: चित्रों में तीन MOSFETs और स्क्रू टर्मिनलों से परेशान न हों। इस परियोजना के लिए उनकी आवश्यकता नहीं है। ध्यान दें कि माइक्रोफ़ोन इनपुट बोर्ड हटाने योग्य है या जैसा कि वे इसे मॉड्यूलर कहते हैं। विभिन्न ब्लॉकों का एक छोटा विवरण नीचे दिया गया है।

1) दो 470 ओम प्रतिरोधक स्टीरियो ऑडियो सिग्नल को मोनो ऑडियो सिग्नल से जोड़ते हैं। सुनिश्चित करें कि सिग्नल का ग्राउंड वर्चुअल ग्राउंड (सर्किट डायग्राम में vg) पर जाता है न कि सर्किट के ग्राउंड पर।

2) अगला ब्लॉक दूसरा ऑर्डर सैलेन-की लो पास फिल्टर है जो अलियासिंग से बचने के लिए इनपुट सिग्नल को सीमित करने वाले बैंड के लिए जिम्मेदार है। चूँकि हम केवल +12v आपूर्ति के साथ काम कर रहे हैं, हम RC वोल्टेज विभक्त बनाकर op-amp को पूर्वाग्रहित करते हैं। जो op-amp को यह सोचकर मूर्ख बनाता है कि आपूर्ति 6 0 -6 वोल्ट की आपूर्ति (दोहरी रेल) है जहां vg op amp के लिए जमीनी संदर्भ है।

3) फिर आउटपुट को 6 वोल्ट के डीसी ऑफसेट को ब्लॉक करने के लिए कम पास फ़िल्टर किया जाता है और लगभग 0.55 वोल्ट के डीसी के साथ जोड़ा जाता है क्योंकि एडीसी को आंतरिक 1.1 वी को Vref के रूप में उपयोग करने के लिए कॉन्फ़िगर किया जाएगा।

नोट: इलेक्ट्रेट माइक्रोफोन के लिए प्री-एम्पलीफायर इंटरनेट पर सबसे अच्छा सर्किट नहीं है। op-amp वाला एक सर्किट बेहतर विकल्प होता। हम चाहते हैं कि आवृत्ति प्रतिक्रिया यथासंभव सपाट हो। 47 किलो ओम के स्टीरियो पॉट का उपयोग कट-ऑफ आवृत्ति को परिभाषित करने के लिए किया जाता है जो आमतौर पर नमूना आवृत्ति का आधा होना चाहिए। 10 किलो ओम प्रीसेट (सफेद सिर वाला छोटा बर्तन) का उपयोग फिल्टर के लाभ और क्यू मान को ट्यून करने के लिए किया जाता है। 10 किलो ओम ट्रिमर पॉट (एक धातु ट्यूनिंग नॉब के साथ जो एक छोटे से फ्लैट हेड स्क्रू की तरह दिखता है) का उपयोग वोल्टेज को आधे Vref के करीब सेट करने के लिए किया जाता है।

नोट: जब आप नैनो को पी.सी. SPST स्विच को खुला रखें अन्यथा बंद रखें। इसका विशेष ध्यान रखें ऐसा न करने पर सर्किट/कंप्यूटर/वोल्टेज रेगुलेटर या उपरोक्त के किसी भी संयोजन को नुकसान पहुंच सकता है।

चरण 4: आवश्यक एप्लिकेशन और आईडीई।

आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
आवश्यक अनुप्रयोग और आईडीई।
  1. Arduino नैनो को कोड करने के लिए मैं आदिम AVR स्टूडियो 5.1 के साथ गया क्योंकि यह मेरे लिए काम करता है। आप यहां इंस्टॉलर पा सकते हैं।
  2. Arduino नैनो की प्रोग्रामिंग के लिए मैंने Xloader का उपयोग किया। Arduinos में.hex फ़ाइलों को बर्न करने के लिए लाइट वेट टूल का उपयोग करना वास्तव में आसान है। आप इसे यहां पा सकते हैं।
  3. थोड़ा बोनस मिनी प्रोजेक्ट और सर्किट को ट्यून करने के लिए मैंने प्रोसेसिंग का इस्तेमाल किया। आप इसे यहां से प्राप्त कर सकते हैं, हालांकि प्रत्येक संशोधन में बड़े बदलाव होते हैं, इसलिए आपको स्केच काम करने के लिए बहिष्कृत कार्यों के साथ फील करना पड़ सकता है।
  4. FL स्टूडियो या कोई अन्य मिडी प्रोसेसिंग सॉफ्टवेयर। आप यहां से FL स्टूडियो लिमिटेड एक्सेस वर्जन मुफ्त में प्राप्त कर सकते हैं।
  5. लूप MIDI एक वर्चुअल MIDI पोर्ट बनाता है और FL स्टूडियो द्वारा इसका पता लगाया जाता है जैसे कि यह MIDI डिवाइस था। इसकी एक प्रति यहां से प्राप्त करें।
  6. हेयरलेस मिडी का उपयोग COM पोर्ट से MIDI संदेशों को पढ़ने और लूप MIDI पोर्ट पर भेजने के लिए किया जाता है। यह MIDI संदेशों को रीयल-टाइम डीबग भी करता है जो डिबगिंग को सुविधाजनक बनाता है। यहां से हेयरलेस मिडी प्राप्त करें।

चरण 5: हर चीज के लिए प्रासंगिक कोड।

मैं इस परियोजना में उपयोग किए गए निश्चित बिंदु एफएफटी पुस्तकालय के लिए इलेक्ट्रॉनिक लाइफ एमएफजी (यहां वेबसाइट !!) को धन्यवाद देना चाहता हूं। पुस्तकालय मेगा एवीआर परिवार के लिए अनुकूलित है। यह पुस्तकालय फाइलों और कोड का लिंक है जिसका उन्होंने उपयोग किया था। मैं नीचे अपना कोड संलग्न कर रहा हूं। इसमें प्रोसेसिंग स्केच और AVR C कोड भी शामिल है। कृपया ध्यान दें कि यह वह कॉन्फ़िगरेशन है जिसने मेरे लिए काम किया है और अगर आप इन कोडों के कारण किसी भी चीज़ को नुकसान पहुंचाते हैं तो मैं कोई ज़िम्मेदारी नहीं लेता हूं। साथ ही, कोड को काम करने की कोशिश में मुझे बहुत सी समस्याएं थीं। उदाहरण के लिए, DDRD (डेटा डायरेक्शन रजिस्टर) में पारंपरिक DDRDx (x = 0-7) के बजाय बिट मास्क के रूप में DDDx (x = 0-7) होता है। संकलन करते समय इन त्रुटियों पर ध्यान दें। माइक्रो-कंट्रोलर को बदलने से भी ये परिभाषाएँ प्रभावित होती हैं इसलिए संकलन त्रुटियों से निपटने के दौरान इस पर भी नज़र रखें। और अगर आप सोच रहे हैं कि प्रोजेक्ट फोल्डर को DDT_Arduino_328p.rar क्यों कहा जाता है, तो ठीक है, चलो बस यह कहते हैं कि शाम को जब मैंने शुरुआत की थी तब बहुत अंधेरा था और मैं काफी आलसी था कि मैं रोशनी चालू नहीं कर सका।:पी

प्रसंस्करण स्केच में आकर, मैंने इस स्केच को लिखने के लिए प्रसंस्करण 3.3.6 का उपयोग किया। आपको स्केच में मैन्युअल रूप से COM पोर्ट नंबर सेट करना होगा। आप कोड में टिप्पणियों की जांच कर सकते हैं।

अगर कोई मुझे Arduino IDE और नवीनतम प्रसंस्करण संस्करण में कोड पोर्ट करने में मदद कर सकता है, तो मुझे खुशी होगी और मैं डेवलपर्स / योगदानकर्ताओं को भी क्रेडिट दूंगा।

चरण 6: इसे स्थापित करना।

  1. कोड खोलें और #define pcvisual uncommented के साथ कोड को कंपाइल करें और #define midi_out कमेंट करें।
  2. xloader खोलें और कोड के साथ निर्देशिका में ब्राउज़ करें,.hex फ़ाइल को ब्राउज़ करें और उपयुक्त बोर्ड और COM पोर्ट का चयन करके इसे नैनो में जलाएं।
  3. प्रोसेसिंग स्केच खोलें और इसे उपयुक्त COM पोर्ट इंडेक्स के साथ चलाएं। यदि सब कुछ ठीक हो जाता है तो आपको पिन A0 पर सिग्नल का एक स्पेक्ट्रम देखने में सक्षम होना चाहिए।
  4. एक स्क्रू ड्राइवर प्राप्त करें और ट्रिमर पॉट को तब तक घुमाएं जब तक कि स्पेक्ट्रम सपाट न हो जाए (डीसी घटक शून्य के करीब होना चाहिए)। तब बोर्ड को कोई संकेत इनपुट न करें। (माइक्रोफ़ोन मॉड्यूल संलग्न न करें)।
  5. अब माइक्रो-फोन से बोर्ड को इनपुट देने और स्पेक्ट्रम का निरीक्षण करने के लिए इस तरह के किसी भी स्वीप जनरेटर टूल का उपयोग करें।
  6. यदि आप आवृत्तियों का स्वीप नहीं देखते हैं, तो 47 किलो ओम प्रतिरोध को बदलकर कट-ऑफ आवृत्ति कम करें। इसके अलावा 10 किलो ओम प्रीसेट पॉट का उपयोग करके लाभ बढ़ाएं। इन मापदंडों को बदलकर एक सपाट और प्रमुख स्वीप आउटपुट प्राप्त करने का प्रयास करें। यह मजेदार हिस्सा है (थोड़ा बोनस!), अपने पसंदीदा गाने चलाएं और उनके रीयल-टाइम स्पेक्ट्रम का आनंद लें। (वह वीडियो देखें)
  7. अब एम्बेडेड सी कोड को इस बार फिर से संकलित करें #define pcvisual commented और #define midi_out uncommented।
  8. नए संकलित कोड को arduino नैनो पर पुनः लोड करें।
  9. लूपमिडी खोलें और एक नया पोर्ट बनाएं।
  10. FL स्टूडियो या अन्य MIDI इंटरफ़ेस सॉफ़्टवेयर खोलें और सुनिश्चित करें कि MIDI पोर्ट सेटिंग्स में लूप मिडी पोर्ट दिखाई दे रहा है।
  11. arduino कनेक्टेड के साथ ओपन हेयरलेस MIDI। लूपमिडी पोर्ट होने के लिए आउटपुट पोर्ट का चयन करें। सेटिंग्स में जाएं और बॉड दर को 115200 पर सेट करें। अब Arduino नैनो के अनुरूप COM पोर्ट चुनें और पोर्ट खोलें।
  12. माइक्रोफ़ोन के पास कुछ "शुद्ध" टोन चलाएं और आपको MIDI सॉफ़्टवेयर में भी संबंधित नोट हिट सुनना चाहिए। यदि कोई प्रतिक्रिया नहीं है तो C कोड में परिभाषित up_threshold को कम करने का प्रयास करें। यदि नोट बेतरतीब ढंग से चालू हो रहे हैं तो up_threshold बढ़ाएँ।
  13. अपना पियानो प्राप्त करें और परीक्षण करें कि आपका सिस्टम कितना तेज़ है !! सबसे अच्छी बात यह है कि नोटों के गोल्डी-लॉक ज़ोन में यह आराम से एक साथ कई की प्रेस को आसानी से पहचान सकता है।

नोट: जब COM पोर्ट को एक एप्लिकेशन द्वारा एक्सेस किया जाता है तो इसे दूसरे द्वारा नहीं पढ़ा जा सकता है। उदाहरण के लिए यदि हैरलेस मिडी COM पोर्ट पढ़ रहा है, तो Xloader बोर्ड को फ्लैश करने में सक्षम नहीं होगा।

चरण 7: परिणाम / वीडियो।

अभी के लिए बस इतना ही दोस्तों! उम्मीद है आप इसे पसंद करते हैं। यदि आपके पास परियोजना में कोई सुझाव या सुधार है तो मुझे टिप्पणी अनुभाग में बताएं। शांति!

सिफारिश की: