विषयसूची:

Wii Nunchuck सिंथेसाइज़र: 4 चरण
Wii Nunchuck सिंथेसाइज़र: 4 चरण

वीडियो: Wii Nunchuck सिंथेसाइज़र: 4 चरण

वीडियो: Wii Nunchuck सिंथेसाइज़र: 4 चरण
वीडियो: 🔴😍🔥 Nunchaku Anticlockwise Wrist Roll #nunchaku #wristroll #nunchakufreestyle #nunchakutraining 2024, जुलाई
Anonim
Wii Nunchuck सिंथेसाइज़र
Wii Nunchuck सिंथेसाइज़र

Wii संगीत की दुनिया:

मैंने अंतत: संगीत के प्रति अपने प्रेम को उस थोड़े से प्रोग्रामिंग अनुभव के साथ संयोजित करने का निर्णय लिया जो मैंने पिछले कुछ वर्षों में प्राप्त किया है। जब से मैंने अपने स्कूल में टॉड माचोवर का भाषण देखा है, तब से मुझे अपना खुद का एक उपकरण बनाने में दिलचस्पी है। यदि आप उसके काम से अपरिचित हैं, तो उसे एक Google दें, क्योंकि वह कई वर्षों से संगीत, प्रौद्योगिकी, साथ ही साथ उनके प्रतिच्छेदन की सीमाओं को आगे बढ़ा रहा है (MIT मीडिया लैब, रॉक बैंड, गिटार हीरो आदि।..)

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

साधन:

  • 1 एक्स अरुडिनो यूनो
  • 1 एक्स Wii Nunchuck
  • 1 एक्स WiiChuck एडाप्टर
  • 1 एक्स ब्रेडबोर्ड संगत 3.5 मिमी महिला स्टीरियो जैक
  • 1 x 3.5 मिमी ऑडियो केबल
  • किसी प्रकार का 1 x स्पीकर (आप इसका परीक्षण करने के लिए पहले बजर में प्लग इन कर सकते हैं
  • विभिन्न रंगों के 4-5 तार

वैकल्पिक लेकिन अनुशंसित:

  • 1 x 330 ओम रोकनेवाला
  • 1 एक्स.1 यूएफ संधारित्र

चरण 1: अपने ननचक में प्लगिंग

अपने ननचक में प्लगिंग
अपने ननचक में प्लगिंग
अपने ननचक में प्लगिंग
अपने ननचक में प्लगिंग
अपने ननचक में प्लगिंग
अपने ननचक में प्लगिंग

Arduino Playground से WiiChuck क्लास को कॉपी/पेस्ट करें। हमें पीडब्लूआर और जीएनडी पिन की घोषणा के साथ संस्करण की आवश्यकता होगी। इसे WiiChuck.h के रूप में सहेजें और इसे अपने प्रोजेक्ट के समान निर्देशिका में रखें।

अब निम्नलिखित को Arduino IDE में कॉपी/पेस्ट करें और अपलोड करें।

#include "WiiChuck.h"//#include "WiiChuckClass.h" // सबसे अधिक संभावना है कि हममें से बाकी लोगों के लिए यह WiiChuck.h है। #शामिल "WiiChuck.h" WiiChuck चक = WiiChuck ();

व्यर्थ व्यवस्था() {

// nunchuck_init (); सीरियल.बेगिन (115200); चक। शुरू (); चक.अपडेट (); // चक.कैलिब्रेटजॉय (); }

शून्य लूप () {

देरी(20); चक.अपडेट ();

सीरियल.प्रिंट (चक.रीडपिच ());

सीरियल.प्रिंट ("", "); सीरियल.प्रिंट (चक.रीडरोल ()); सीरियल.प्रिंट ("", ");

सीरियल.प्रिंट (चक.रीडजॉयएक्स ());

सीरियल.प्रिंट ("", "); सीरियल.प्रिंट (चक.रीडजॉय ()); सीरियल.प्रिंट ("", ");

अगर (चक.बटनजेड) {

सीरियल.प्रिंट ("जेड"); } और { सीरियल.प्रिंट ("-"); }

सीरियल.प्रिंट ("", ");

// कोई फ़ंक्शन नहीं // अगर (chuck.buttonC ()) {

अगर (चक.बटनसी) { सीरियल.प्रिंट ("सी"); } और { सीरियल.प्रिंट ("-"); }

सीरियल.प्रिंट्लन ();

}

अपने Arduino को पावर से डिस्कनेक्ट करें और अपने Arduino पर अपने WiiChuck एडेप्टर को एनालॉग पिन 2-5 से कनेक्ट करें।

फिर से सत्ता से कनेक्ट करें और सुनिश्चित करें कि नंचक के मान आपके Arduino को भेजे जा रहे हैं और सीरियल मॉनिटर पर मुद्रित किए जा रहे हैं। यदि आप संख्याओं में कोई परिवर्तन नहीं देख रहे हैं, तो सुनिश्चित करें कि आपके कनेक्शन अच्छे हैं, और आप Nunchuck कार्य कर रहे हैं। मैंने अपने नंचक के तार को आंतरिक रूप से टूटा हुआ महसूस करने से पहले सॉफ्टवेयर को ठीक करने की कोशिश में कुछ दिन बिताए!

इसके बाद, हम सब कुछ Mozzi तक जोड़ देंगे।..

चरण 2: Mozzi. को जानना

Mozzi. को जानना
Mozzi. को जानना

सबसे पहले, आपको Mozzi का नवीनतम संस्करण डाउनलोड करना होगा। वे दान से प्रेरित होते हैं इसलिए यदि आप ऐसा महसूस करते हैं तो दान करें और पुस्तकालय डाउनलोड करें । आप Arduino IDE से Sketch > Libraries > Add. ZIP Library… चुनकर इसे आसानी से अपनी लाइब्रेरी में जोड़ सकते हैं।

अब हम 3.5mm हेडफोन जैक को ब्रेडबोर्ड और Arduino से कनेक्ट करेंगे ताकि हम बाद में इसे आसानी से कनेक्ट कर सकें (आप अभी के लिए Nunchuck और एडॉप्टर को अनप्लग कर सकते हैं)।

  1. बाकी के लिए जगह बनाने के लिए अपने जैक को बोर्ड के निचले दाएं कोने में प्लग करें। जैक 5 पिन चौड़ा होना चाहिए।
  2. एक जम्पर तार के साथ मध्य पंक्ति को जमीन से कनेक्ट करें।
  3. जैक की सबसे ऊपरी पंक्ति को ऊपर की खाली पंक्ति से कनेक्ट करें (चित्र में पंक्ति 10)। यह ऑडियो सिग्नल ले जाने वाला तार है।
  4. डिजिटल पिन ~9 को पंक्ति 10 से भी कनेक्ट करें।
  5. अपने Arduino पर ग्राउंड को ब्रेडबोर्ड पर ग्राउंड रेल से कनेक्ट करें।
  6. जरूरी नहीं कि आपको अभी तक रोकनेवाला और संधारित्र का उपयोग करने की आवश्यकता है, लेकिन यदि आप नहीं करते हैं तो आप एक उच्च पिच वाली चीख़ देख सकते हैं। यह ~ 15 kHz से ऊपर की आवृत्तियों को खत्म करने के लिए कम पास फिल्टर के रूप में कार्य करता है।

फ़ाइल > उदाहरण > Mozzi > मूल बातें > Sinewave चुनकर Arduino IDE में Mozzi का Sinewave स्केच खोलें। यह अनिवार्य रूप से Mozzi के "Hello World" के समकक्ष है।

स्केच अपलोड करें और स्पीकर को ब्रेडबोर्ड पर प्लग करें। यदि आपने अभी तक ब्रेडबोर्ड को ऑडियो जैक से वायर नहीं किया है तो आप बजर का भी उपयोग कर सकते हैं।

यदि आप अपने स्पीकर से लगातार A4 (440Hz) नहीं सुनते हैं, तो सुनिश्चित करें कि आपके सभी कनेक्शन अच्छे हैं और पुनः प्रयास करें।

अगला, हम Nunchuck को Arduino से जोड़ेंगे!

चरण 3: यह सब एक साथ रखना

यह सब एक साथ डालें
यह सब एक साथ डालें

अब हम एक साइनवेव की आवृत्ति को बदलने के लिए नंचक से रोल वैल्यू का उपयोग करने जा रहे हैं।

Arduino IDE से फ़ाइल चुनें> उदाहरण> Mozzi> सेंसर> पीजो फ़्रीक्वेंसी

Nunchuck के साथ काम करने के लिए हमें इस कोड में कुछ पंक्तियाँ जोड़ने की आवश्यकता होगी। WiiChuck लाइब्रेरी में शामिल करें और चक नामक WiiChuck ऑब्जेक्ट को इंस्टेंट करें। आप PIEZO_PIN की घोषणा पर भी टिप्पणी कर सकते हैं या इसे हटा सकते हैं क्योंकि हम इसका उपयोग नहीं करेंगे।

#शामिल "WiiChuck. H"

WiiChuck चक = WiiChuck (); // कॉन्स्ट इंट PIEZO_PIN = 3; // पीजो के लिए एनालॉग इनपुट पिन सेट करें

अब सेटअप में, हमें निम्नलिखित जोड़ना होगा:

चक.बेगिन (); चक.अपडेट ();

और अंत में हमें कुछ चीजों को अपडेटकंट्रोल () में बदलना होगा:

शून्य अद्यतन नियंत्रण () {

चक.अपडेट (); // नवीनतम नंचक डेटा प्राप्त करें // पीजो पढ़ें // int piezo_value = mozziAnalogRead (PIEZO_PIN); // मान 0-1023 int piezo_value = नक्शा है (उस पंक्ति पर टिप्पणी करें जो piezo_value सेट करती है और नीचे निम्नलिखित जोड़ें:

शून्य अद्यतन नियंत्रण () {चक। अद्यतन (); // नवीनतम नंचक डेटा प्राप्त करें // पीजो पढ़ें // int piezo_value = mozziAnalogRead (PIEZO_PIN); // मान 0-1023 है // हमें ऊपर की रेखा की आवश्यकता नहीं है, लेकिन रोल को उसी श्रेणी में क्यों न मैप करें? int piezo_value = नक्शा (chuck.readRoll (), -180, 180, 0 1023);

कोड अपलोड करें और आवृत्ति आपके Nunchuck's Roll के अनुरूप होनी चाहिए। इसे विभिन्न फ़्रीक्वेंसी रेंज में मैप करने का प्रयास करें। यदि आपने स्केच में और नीचे नहीं देखा है तो सेंसर से मान को 3 से गुणा किया जाता है, इसलिए हम वर्तमान में 0 हर्ट्ज से लगभग 3000 हर्ट्ज तक के स्वर बजा रहे हैं।

चरण 4: अंतिम स्पर्श

अंतिम स्पर्श
अंतिम स्पर्श

अब आप उस कोड का अंतिम संस्करण अपलोड करने के लिए तैयार हैं जिसे मैंने पिछले चरण से एक साथ जोड़ा है और Mozzi के कुछ और उदाहरण (Phase_Mod_Envelope, और Control_Gain सटीक होने के लिए)। अपने जीवन को आसान बनाने के लिए मैंने एक फ़ाइल भी शामिल की जिसे पिच्स.एच कहा जाता है जो केवल परिचित नोट नामों (यानी नोट_ए 4) के साथ आवृत्ति मानों को परिभाषित करता है।

मेरा सुझाव है कि Mozzi दस्तावेज़ों को पढ़ें क्योंकि नंचक के कोड को छोड़कर अधिकांश कोड सीधे उदाहरणों से हैं।

यहाँ मेरे Git रिपॉजिटरी का लिंक दिया गया है। Mozzi लाइब्रेरी को छोड़कर सभी महत्वपूर्ण फाइलें शामिल हैं जो आपको उनकी वेबसाइट से मिलनी चाहिए ताकि यह अप टू डेट हो। WiiMusic.ino डाउनलोड करें और यह सुनने के लिए इसे अपने डिवाइस पर अपलोड करें कि यह कैसा लगता है। मेरा सुझाव है कि आप उन मापदंडों के साथ खेलें जो मैं बदल रहा हूं (मानचित्र श्रेणियां बदलें, संख्याओं को विभाजित/गुणा करें, आदि।) क्योंकि इस तरह मुझे वह विशेष ध्वनि मिली जिसे मैं ढूंढ रहा था।

प्रतिबिंब

मुझे ऐसा नहीं लगता कि मैं पूरी तरह से समाप्त हो गया हूं। इसका मतलब यह नहीं है कि मैं परियोजना या इसके द्वारा की जाने वाली आवाज से संतुष्ट नहीं हूं, लेकिन मुझे ऐसा लगता है कि मैंने अपने पैर की उंगलियों को एक नई दुनिया में डुबो दिया है, जिसे मैं तलाशते रहना चाहता हूं इसलिए मैं इस परियोजना से एक नई शाखा जोड़ूंगा क्योंकि मैं जारी रखूंगा काम करने के लिए।

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

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

सिफारिश की: