विषयसूची:

एक Arduino MIDI नियंत्रक का निर्माण: 9 चरण (चित्रों के साथ)
एक Arduino MIDI नियंत्रक का निर्माण: 9 चरण (चित्रों के साथ)

वीडियो: एक Arduino MIDI नियंत्रक का निर्माण: 9 चरण (चित्रों के साथ)

वीडियो: एक Arduino MIDI नियंत्रक का निर्माण: 9 चरण (चित्रों के साथ)
वीडियो: # 1 midi कंट्रोलर कैसे बनाएं arduino: diy midi कंट्रो... 2024, नवंबर
Anonim

यह निर्देश मूल रूप से मेरे ब्लॉग पर २८ जून, २०२० को प्रकाशित हुआ था।

मुझे इलेक्ट्रॉनिक सामान बनाने में मज़ा आता है, और मैं हमेशा Arduino का उपयोग करके कुछ बनाना चाहता था।

मुझे मिले शुरुआती लोगों के लिए सबसे आम बिल्डों में से एक MIDI नियंत्रक था। एक MIDI नियंत्रक कोई भी हार्डवेयर है जो ध्वनि को ट्रिगर करने और संगीत बनाने के लिए MIDI डेटा (म्यूजिकल इंस्ट्रूमेंट डिजिटल इंटरफेस) को डिवाइस पर भेजता है।

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

परियोजना

अपना खुद का Arduino MIDI कंट्रोलर बनाकर, मेरा इरादा शोर को कम से कम रखते हुए एक मनोरंजक प्रोजेक्ट बनाना था। कोई भी शुरुआत करने वाला कुछ अनुसरण कर सकता है। इसे पूरा करने के लिए, मैंने आधार प्रेरणा के रूप में MIDI फाइटर 3D का उपयोग किया और हर गैर-आवश्यक विशेषता को हटा दिया।

मेरी परियोजना की कुल लागत $30 से कम थी, और सामग्रियों की सूची वास्तव में कम थी (संबद्ध लिंक):

  • Arduino लियोनार्डो (या क्लोन): $ 10 और $ 20 के बीच।
  • 16 x सानवा बटन 24 मिमी (या क्लोन): $1 और $2.50 प्रति बटन के बीच।
  • सोल्डरिंग आयरन
  • 22 एडब्ल्यूजी विद्युत तार

अरुडिनो बोर्ड

जब मैंने इस परियोजना को शुरू किया तो मैंने पाया कि नए Arduino मॉडल का एक समूह है (सैकड़ों संगत बोर्ड शामिल नहीं हैं)। और वे सभी थोड़ी अलग क्षमताएं प्रदान करते हैं।

मुझे कंप्यूटर पर MIDI सिग्नल भेजने की ज़रूरत थी और ऐसा करने का सबसे आसान तरीका यूएसबी के माध्यम से है। ATmega32u4 माइक्रोकंट्रोलर पर आधारित किसी भी Arduino बोर्ड में अंतर्निहित USB संचार होता है।

देशी USB समर्थन वाले आधिकारिक Arduino बोर्ड Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro हैं। इन बोर्डों में एकीकृत यूएसबी समर्थन है जिसका अर्थ है कि वे यूएसबी मिडी डिवाइस के रूप में कार्य कर सकते हैं।

मैंने Arduino लियोनार्डो के एक क्लोन के साथ जाने का फैसला किया। इस परियोजना के लिए इसमें पर्याप्त इनपुट हैं और इसमें हेडर भी शामिल हैं, जिससे तारों को प्लग/अनप्लग करना आसान हो जाता है।

पहला चरण

हालांकि मैं चरण-दर-चरण बताऊंगा कि मैंने इस परियोजना के लिए कोड कैसे लागू किया, आप अंतिम संस्करण डाउनलोड कर सकते हैं।

बोर्ड पर कोड अपलोड करने के लिए आपको Arduino IDE का उपयोग करना होगा। उनके पास एक वेब संपादक भी है जो बहुत उपयोगी है लेकिन उनके पास प्रति दिन समय पर सीमित कोटा है कि आप कोड संकलित कर सकते हैं।

चरण 1: बिल्ट-इन एलईडी को ब्लिंक करना

यह अजीब है कि हार्डवेयर की दुनिया में "हैलो वर्ल्ड" एक एलईडी को कैसे झपका रहा है।

मेरे लिए यह जानकर एक अच्छा आश्चर्य हुआ कि Arduino लियोनार्डो में एक अंतर्निहित एलईडी है जिसे आप अपने कोड का परीक्षण करने के लिए पलक झपका सकते हैं। इस तरह आपको एक ब्रेडबोर्ड पर एक एलईडी और एक रोकनेवाला के साथ एक बाहरी सर्किट बनाने की आवश्यकता नहीं है।

कोड:

चरण 2: मैनुअल इनपुट पर एलईडी को ब्लिंक करना

अगला तार्किक कदम यह था कि जब भी मैं कोई संकेत भेजता हूं तो उसी एलईडी को झपकाता हूं। मैंने 2 डुपोंट तारों के एक छोर का प्लास्टिक कवर हटा दिया, और दूसरे छोर को बोर्ड से जोड़ दिया:

  • पिन नंबर 2: डिजिटल इनपुट में से एक (सकारात्मक)। यह कोई भी डिजिटल पिन हो सकता है।
  • पिन जीएनडी: कोई भी ग्राउंड पिन (नकारात्मक)।

अब, हर बार जब मैं तारों के उजागर सिरों में शामिल होता हूं तो मैं सर्किट को बंद कर रहा हूं और इस प्रकार मैं परिणाम में कोड निष्पादित कर सकता हूं।

लियोनार्डो पर 20 डिजिटल पिनों में से प्रत्येक में एक आंतरिक अवरोधक (डिफ़ॉल्ट रूप से डिस्कनेक्ट) होता है जिसे INPUT_PULLUP का उपयोग करके सक्षम किया जा सकता है। ध्यान रखें कि पुल-अप इनपुट का मतलब है कि बटन की स्थिति उलटी हुई है:

  • उच्च जब सर्किट खुला होता है (बटन दबाया नहीं जाता है)।
  • सर्किट बंद होने पर कम (बटन दबाया जाता है)।

कोड:

चरण 3: MIDIUSB लाइब्रेरी स्थापित करना

यह पुस्तकालय USB क्षमताओं वाले Arduino बोर्ड को USB पर MIDI उपकरण के रूप में कार्य करने की अनुमति देता है। अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें।

Arduino IDE का उपयोग करके, आप लाइब्रेरी मैनेजर का उपयोग करके अतिरिक्त Arduino लाइब्रेरी स्थापित कर सकते हैं:

  1. आईडीई खोलें और "स्केच" मेनू पर क्लिक करें, फिर "लाइब्रेरी शामिल करें", फिर "लाइब्रेरी प्रबंधित करें" पर क्लिक करें।
  2. MIDIUSB के लिए खोजें और इंस्टॉल करें पर क्लिक करें।
  3. एक बार यह समाप्त हो जाने के बाद, MIDIUSB लाइब्रेरी के बगल में एक स्थापित टैग दिखाई देना चाहिए।
  4. लाइब्रेरी मैनेजर बंद करें।

अब लियोनार्डो USB के माध्यम से MIDI संदेश भेज सकते हैं! लेकिन पहले, MIDI कैसे काम करता है, इसके बारे में कुछ अंतर्दृष्टि की आवश्यकता है।

मिडी कैसे काम करता है

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

यह अन्य निर्देशों के साथ, पिच के डेटा और खेले गए नोट के वेग के साथ ईवेंट संदेशों को संभालता है।

इस विशिष्ट परियोजना में, 16 बटनों से इनपुट यूएसबी के माध्यम से विभिन्न संदेश भेजता है। गैराजबैंड या एबलटन लाइव जैसे किसी भी उपयुक्त सॉफ्टवेयर का उपयोग करके इन संदेशों को कंप्यूटर पर ध्वनि में परिवर्तित किया जा सकता है।

मिडी संदेश का एनाटॉमी

MIDI संदेश भेजने के लिए, मैंने चरण 3 पर स्थापित MIDIUSB लाइब्रेरी से sendMIDI() विधि का उपयोग किया।

यह विधि 4 पैरामीटर प्राप्त कर सकती है:

  • घटना का प्रकार: यह नोट ऑन (प्ले नोट) के लिए 0x09 या नोट ऑफ के लिए 0x08 हो सकता है (नोट खेलना बंद करें)।
  • नोट चालू/बंद: इवेंट प्रकार MIDI चैनल (1-16) के साथ संयुक्त। मैं केवल चैनल 1 का उपयोग करता हूं, इसलिए यह नोट ऑन के लिए 0x90 या नोट ऑफ के लिए 0x80 है।
  • नोट संख्या: प्रत्येक नोट में एक संबद्ध संख्यात्मक पिच (फ़्रीक्वेंसी स्केल) होती है।
  • वेग: 0 (कोई वेग नहीं) से 127 (सबसे तेज) तक।

चरण 4: मिडी संदेश भेजना

मैंने MIDIUSB लाइब्रेरी को शामिल किया और बिल्ट-इन LED को ब्लिंक करने के बजाय, मैंने एक नोट भेजा।

कोड:

महत्वपूर्ण: इस चरण से Arduino एक MIDI USB नियंत्रक में बदल जाता है, और यह USB के माध्यम से कोड प्राप्त करना बंद कर देता है।

जब आप ऐसी स्थिति में फंस जाते हैं जहां Arduino को प्रोग्राम नहीं किया जा सकता है, तो इन चरणों का पालन करें:

  1. Arduino बोर्ड पर गोल रीसेट बटन दबाए रखें।
  2. Arduino IDE पर अपलोड पर क्लिक करें।
  3. रीसेट बटन छोड़ें।
  4. अद्यतन कोड बोर्ड को अपलोड किया जाएगा।

चरण 5: प्रत्येक बटन से मिडी संदेश भेजना

प्रत्येक बटन से MIDI संदेश भेजना
प्रत्येक बटन से MIDI संदेश भेजना

अंतिम चरण प्रत्येक पिच को एक बटन पर मैप करना था। 16 बटनों के लिए, मैंने C2 से E3b तक के पैमाने को परिभाषित किया, जो नीचे से ऊपर और बाएं से दाएं क्रम में 36 से 51 तक की पिचें हैं। Arduino Tutorials की इस फ़ाइल को देखें कि प्रत्येक नोट से कौन सी पिच मेल खाती है।

मैंने 2 से 12 तक डिजिटल पिन और A0 से A4 तक एनालॉग पिन (डिजिटल के रूप में उनका उपयोग करके) का उपयोग किया।

और अंतिम कोड इस तरह दिखता है

चरण 6: चैनल या बैंक स्थापित करना (वैकल्पिक)

चैनल या बैंक स्थापित करना (वैकल्पिक)
चैनल या बैंक स्थापित करना (वैकल्पिक)

यदि आप चैनलों या बैंकों को स्विच करने की क्षमता के साथ अधिक बटन जोड़ना चाहते हैं, जैसे MIDI फाइटर 3D (छवि देखें) में, Arduino लियोनार्डो में चार और पिन हैं जिनका आप उपयोग कर सकते हैं। Arduino लियोनार्डो में 20 डिजिटल इनपुट/आउटपुट पिन हैं, जिनमें से केवल 16 नोट्स खेलने के लिए उपयोग में हैं।

आप कोड में एक चर को अद्यतन करने के लिए उन अतिरिक्त बटनों का उपयोग कर सकते हैं, और इसके मान को एक पैरामीटर के रूप में MidiUSB.sendMIDI विधि में भेज सकते हैं:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

चरण 7: मामला

मामला
मामला
मामला
मामला

इस परियोजना को सरल रखने के लिए, मैं यह चुनने के बारे में बेहद चुस्त था कि कौन सी विशेषताएं शामिल हैं।

  • केवल बटन: 4x4 ग्रिड में 16 सांवा जैसे आर्केड बटन। कोई नॉब नहीं, कोई स्लाइडर्स नहीं, कोई फैडर नहीं, या कोई अन्य एनालॉग इनपुट नहीं।
  • यूनीबॉडी केस: बाड़े के लिए या Arduino बोर्ड को पकड़ने के लिए कोई स्क्रू, नट, बोल्ट या गोंद का उपयोग न करें।
  • रोज़मर्रा के उपकरण: उदाहरण के लिए, मैंने आर्केड बटनों के लिए एक विशिष्ट वायर क्लिपर खरीदने के बजाय तारों को मिलाया।

यूनीबॉडी डिजाइन

मुझे जिन चुनौतियों का सामना करना पड़ा उनमें से एक मामले को इतना सरल डिजाइन करना था कि इसे असेंबली की आवश्यकता नहीं है और इसे एक ही बार में 3 डी प्रिंट किया जा सकता है।

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

3डी प्रिंट करने योग्य केस (322 KB) डाउनलोड करें। अनुशंसित सेटिंग्स: पीएलए, 0.15 मिमी परतें, 20% इन्फिल, कम से कम गोलाकार निचले छेद, Arduino धारकों और माइक्रो यूएसबी के लिए समर्थन लागू करने वाले।

बिना किसी पेंच के Arduino को पकड़ना

लियोनार्डो के पास किसी भी उपयुक्त मामले में बोर्ड को पेंच करने के लिए 4 छेद हैं, लेकिन मेरा विचार था कि मामले से बोर्ड को जोड़ना और निकालना आसान हो।

थिंगविवर्स पर Arduino के लिए एक क्लिप धारक ढूंढना आसान था, और उस धारक को यूनिबॉडी desing में एकीकृत करने के लिए मुझे 5 पुनरावृत्तियों का समय लगा। सबसे कठिन हिस्सा बटनों के लिए छेद से बचने के लिए अपने पैरों को बना रहा था, और माइक्रो यूएसबी को मामले में केंद्र में संरेखित करने के लिए बना रहा था।

चरण 8: विधानसभा

सभा
सभा
सभा
सभा
सभा
सभा

सभी बटनों को जगह में डालने के बाद, मैंने उनके बीच के बटनों के सभी नकारात्मक पैरों को मिलाते हुए छोटे काले तारों को मिलाया।

फिर मैंने बोर्ड से सीधे जुड़ने के लिए प्रत्येक सकारात्मक पैर से लंबे लाल तारों को मिलाया।

तारों को Arduino से जोड़ने के लिए, मैंने कुछ ड्यूपॉन्ट सिरों को काटा और मिलाप किया और उन्हें गर्मी-सिकुड़ने वाली ट्यूबिंग से ढक दिया।

मैंने मिडी फाइटर के समान क्रम का पालन करते हुए तारों को बोर्ड से जोड़ा। नीचे से ऊपर और बाएँ से दाएँ।

चरण 9: मिडी नियंत्रक का उपयोग करना

मिडी नियंत्रक का उपयोग करना
मिडी नियंत्रक का उपयोग करना

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

वे सभी उपकरण फिंगर ड्रमिंग के लिए पूर्वनिर्धारित ध्वनियों को लोड करने के लिए उपयोगी हैं, लेकिन वे बड़े उद्देश्यों के लिए बनाए गए थे। शुरुआती लोगों के लिए उन उपकरणों को स्थापित करना कठिन हो सकता है।

वेब ब्राउज़र में मिडी

इस परियोजना और इसकी सादगी के साथ कुछ और संरेखित करने के लिए, मैंने एक वेब टूल बनाया जो पूरी तरह से MIDI नियंत्रकों पर केंद्रित था।

पंची: MIDI नियंत्रकों के लिए WebMIDI और WebAudio कार्यान्वयन।

यह किसी भी ब्राउज़र पर MIDI संदेशों को पढ़ सकता है जो WebMIDI JavaScript API का समर्थन करता है। फिर यह सिंथेसाइज़र (वेबऑडियो एपीआई का उपयोग करके) या किसी भी ध्वनि पैक से कस्टम ध्वनि लोड करने के नमूने में ध्वनि बजाता है।

एबलटन लाइव सेट करें

मिडी नियंत्रक को एबलेटन लाइव के साथ काम करने के लिए, उनके आधिकारिक दस्तावेज़ीकरण से इन सरल चरणों का पालन करें।

प्राथमिकताएं → लिंक MIDI पर जाएं और सुनिश्चित करें कि "इनपुट" में "ट्रैक" और "रिमोट" चालू है और आउटपुट में "रिमोट" चालू है और साथ ही गाइड में उल्लिखित है:

सिफारिश की: