विज्ञापन

एक संगीतकार के रूप में जिसने संगीत वाद्ययंत्र और शोर बक्से के संग्रह को एकत्र किया है, विनम्र अरुडिनो एक कस्टम मिडी नियंत्रक बनाने के लिए एकदम सही उपकरण है। जबकि रास्पबेरी पाई के लिए ताज ले लिया हो सकता है इंटरनेट ऑफ थिंग्स (IoT) इंटरनेट ऑफ़ थिंग्स: 2016 में 10 उपयोगी उत्पाद आपको अवश्य आज़माने चाहिएइंटरनेट ऑफ थिंग्स 2016 में तेजी से बढ़ रहा है, लेकिन इसका क्या मतलब है? आप व्यक्तिगत रूप से इंटरनेट ऑफ थिंग्स से कैसे लाभान्वित होते हैं? यहाँ वर्णन करने के लिए कुछ उपयोगी उत्पाद हैं। अधिक पढ़ें परियोजनाओं, एक साधारण Arduino Uno (Arduino के विभिन्न प्रकार क्या हैं? Arduino ख़रीदना गाइड: आपको कौन सा बोर्ड मिलना चाहिए?वहाँ Arduino बोर्डों के कई अलग-अलग प्रकार हैं, आपको भ्रमित होने के लिए क्षमा किया जाएगा। आपको अपने प्रोजेक्ट के लिए कौन सा खरीदना चाहिए? हमें इस Arduino गाइड खरीदने के साथ मदद करते हैं! अधिक पढ़ें ) के पास इस परियोजना के लिए पर्याप्त शक्ति है।

पहली बार एक Arduino का उपयोग कर? कोई चिंता नहीं, हमें पूरा मिल गया है Arduino शुरुआती गाइड Arduino के साथ शुरुआत करना: एक शुरुआती गाइड

Arduino एक ओपन-सोर्स इलेक्ट्रॉनिक्स प्रोटोटाइपिंग प्लेटफॉर्म है जो लचीले, आसानी से उपयोग होने वाले हार्डवेयर और सॉफ्टवेयर पर आधारित है। यह कलाकारों, डिजाइनरों, शौकीनों और इंटरैक्टिव वस्तुओं या वातावरण बनाने में रुचि रखने वाले किसी भी व्यक्ति के लिए अभिप्रेत है। अधिक पढ़ें इससे पहले कि आप इस परियोजना से निपटें।

Arduino-मिडी-नियंत्रक-Breadboard

मिडी क्या है?

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

MIDI 16 चैनलों का समर्थन करता है। इसका मतलब है कि प्रत्येक केबल एक-दूसरे के साथ स्वतंत्र रूप से संचार करने वाले 16 विभिन्न उपकरणों का समर्थन कर सकता है। डिवाइस 5-पिन डीआईएन केबल का उपयोग करके जुड़े हुए हैं। दीन "मानकीकरण के लिए जर्मन संस्थान" के लिए खड़ा है, और बस कनेक्टर के अंदर पांच पिन के साथ एक केबल है। USB का उपयोग अक्सर 5-पिन DIN के स्थान पर किया जाता है, या USB-MIDI इंटरफ़ेस का उपयोग किया जा सकता है।

मिडी-केबल-पुरुष

नियंत्रण बदलें और कार्यक्रम बदलें

मिडी संदेश के दो मुख्य प्रकार हैं: कंट्रोल चेंज, और प्रोग्राम चेंज।

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

कार्यक्रम परिवर्तन (पीसी) संदेश सीसी संदेशों की तुलना में सरल हैं। पीसी संदेशों में एक ही नंबर होता है, और इसका उपयोग डिवाइस पर प्रीसेट या पैच को बदलने के लिए किया जाता है। पीसी संदेश कभी-कभी "पैच चेंज" के रूप में जाने जाते हैं। सीसी संदेशों के समान, निर्माताओं को एक दस्तावेज प्रदान करना चाहिए जो यह बताता है कि किसी विशेष संदेश द्वारा प्रीसेट को क्या बदला जाता है।

तुम क्या आवश्यकता होगी

  • Arduino
  • 5-पिन दीन महिला सॉकेट
  • 2 x 220 ओम प्रतिरोधक
  • 2 x 10 k ओम प्रतिरोधों
  • 2 एक्स क्षणिक स्विच
  • हुक-अप तार
  • ब्रेड बोर्ड
  • मिडी केबल
  • मिडी डिवाइस या यूएसबी इंटरफ़ेस

योजना बनाएं

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

सर्किट असेंबली

Arduino-मिडी-नियंत्रक सर्किट

मिडी कनेक्शन

मिडी-Pinout

अपने मिडी सॉकेट को निम्नानुसार तार करें:

  • मिडी पिन 5 से Arduino Transmit (TX) 1 220 ओम अवरोधक के माध्यम से
  • 220 ओम अवरोधक के माध्यम से Arduino + 5V को मिडी पिन 4
  • मिडी पिन 2 से अरुडिनो मैदान

बटन कनेक्शन

बटन Arduino "देखता है" प्रतिरोध को बदलकर काम करते हैं। Arduino पिन सीधे जमीन पर स्विच के माध्यम से जाता है (कम) 10k ओम रोकनेवाला (एक "नीचे खींच" रोकनेवाला के माध्यम से, यह सुनिश्चित करता है कि मूल्य कम रहता है)। जब बटन दबाया जाता है, तो सर्किट द्वारा देखा गया मान बिना प्रतिरोध के + 5v में बदल जाता है (उच्च). Arduino के उपयोग से इस परिवर्तन का पता लगा सकते हैं digitalRead (पिन) आदेश। Arduino डिजिटल इनपुट / आउटपुट (I / O) पर बटन को 6 और 7 पिन से कनेक्ट करें। दोनों बटन कनेक्ट करें:

  • बटन के बाईं ओर + 5 वी
  • 10k ओम रोकनेवाला के माध्यम से Arduino ग्राउंड के लिए बटन के दाईं ओर
  • बटन के दाईं ओर Arduino पिन (6 या 7)

मिडी परीक्षण

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

आने वाले MIDI डेटा की निगरानी के लिए आपको एक कार्यक्रम की भी आवश्यकता होगी:

  • मिडी मॉनिटर OS X के लिए
  • मिडी-OX विंडोज के लिए
  • KMidimon लिनक्स के लिए

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

#शामिल 
#शामिल 
#शामिल 
#शामिल 
#शामिल  MIDI_CREATE_INSTANCE (हार्डवेयरसियर, सीरियल, मिडीओट); // मिडीओट शून्य सेटअप नामक एक मिडी ऑब्जेक्ट बनाएं () {Serial.begin (31250); // मिडी के लिए सेटअप सीरियल। } शून्य लूप () {midiOut.sendControlChange (56,127,1); // एक मिडी सीसी भेजें - 56 = नोट, 127 = वेग, 1 = चैनल देरी (1000); // प्रतीक्षा 1 सेकंड midiOut.sendProgramChange (12,1); // एक मिडी पीसी भेजें - 12 = मूल्य, 1 = चैनल देरी (1000); // 1 सेकंड प्रतीक्षा करें। }

यह कोड एक सीसी संदेश भेजेगा, 1 सेकंड प्रतीक्षा करेगा, एक पीसी संदेश भेजेगा फिर 1 सेकंड अनिश्चित काल तक प्रतीक्षा करेगा। यदि सब कुछ सही ढंग से काम कर रहा है, तो आपको अपने मिडी मॉनिटर में एक संदेश दिखाई देना चाहिए।

अगर कुछ नहीं होता है, तो घबराओ मत! समस्या निवारण का प्रयास करें:

  • सुनिश्चित करें कि सभी कनेक्शन सही हैं
  • मिडी पोर्ट की जांच करें कि सही ढंग से वायर्ड किया गया है - बाहर के किनारों पर 2 अतिरिक्त पिन होना चाहिए
  • सर्किट को डबल-चेक करना सही है
  • सत्यापित करें कि सर्किट एक MIDI केबल के साथ USB-MIDI इंटरफ़ेस से जुड़ा है
  • जांचें कि आपका MIDI केबल किस से जुड़ा है इनपुट आपके USB-MIDI इंटरफ़ेस पर
  • सुनिश्चित करें कि Arduino में शक्ति है
  • अपने USB-MIDI इंटरफ़ेस के लिए सही ड्राइवर स्थापित करें

अगर आप फिर भी समस्याएं होने पर यह आपके ब्रेडबोर्ड की जांच करने के लायक हो सकती है। सस्ते बोर्ड कभी-कभी बहुत असंगत और निम्न-गुणवत्ता वाले हो सकते हैं - यह इस परियोजना पर काम करते हुए मेरे साथ हुआ।

बटन परीक्षण

अब बटन का परीक्षण करने का समय सही ढंग से काम कर रहा है। निम्नलिखित परीक्षण कोड अपलोड करें। इस भाग का परीक्षण करने के लिए MIDI को जोड़ने की आवश्यकता नहीं है।

const int बटन = 6; // वेरिएबल को बटन पिन असाइन करें। const int buttonTwo = 7; // वेरिएबल शून्य सेटअप के लिए बटन पिन असाइन करें () {Serial.begin (9600); // टेक्स्ट पिनकोड के लिए सेटअप सीरियल (बटन, आईएनयूटीयू); // सेटअप बटन इनपुट पिनमोड के रूप में (buttonTwo, INPUT); // सेटअप बटन इनपुट के रूप में। } शून्य लूप () {if (digitalRead (buttonOne) == High) {// चेक बटन स्टेट डिले (10); // सॉफ्टवेयर डे-बाउंस अगर (digitalRead (buttonOne) == High) {// चेक बटन स्टेट फिर से Serial.println ("बटन वन वर्क्स!"); // लॉग परिणाम देरी (250); }} अगर (digitalRead (buttonTwo) == High) {// चेक बटन स्टेट डिले (10); // सॉफ्टवेयर डी-बाउंस अगर (digitalRead (buttonTwo) == High) {// चेक बटन स्टेट फिर से Serial.println ("बटन टू वर्क्स!"); // लॉग परिणाम देरी (250); } } }

इस कोड को चलाएं (लेकिन USB केबल को कनेक्ट रखें) और सीरियल मॉनिटर खोलें (टॉप राइट> सीरियल मॉनिटर). जब आप एक बटन दबाते हैं तो आपको "बटन वन वर्क्स" देखना चाहिए। या "बटन दो काम करता है!" आपके द्वारा दबाए गए बटन के आधार पर।

इस उदाहरण से दूर रखने के लिए एक महत्वपूर्ण नोट है - सॉफ्टवेयर डे-बाउंस। यह बटन की जाँच करने और फिर बटन की जाँच करने के बीच एक साधारण 10 मिलीसेकंड (एमएस) देरी है। यह बटन प्रेस की सटीकता को बढ़ाता है और Arduino को ट्रिगर करने वाले शोर को रोकने में मदद करता है। आपको ऐसा करने की आवश्यकता नहीं है, हालांकि यह अनुशंसित है।

नियंत्रक बनाना

अब जब सब कुछ तार-तार हो गया है और काम कर रहा है, तो पूर्ण नियंत्रक को इकट्ठा करने का समय आ गया है।

यह उदाहरण दबाए गए प्रत्येक बटन के लिए एक अलग सीसी संदेश भेजेगा। मैं इसका उपयोग ओएस एक्स पर एब्लेटन लाइव 9.6 को नियंत्रित करने के लिए कर रहा हूं। कोड ऊपर के दोनों परीक्षण नमूनों के समान है।

#शामिल 
#शामिल 
#शामिल 
#शामिल 
#शामिल const int बटन = 6; // वेरिएबल को बटन पिन असाइन करें। const int buttonTwo = 7; // MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut) वेरिएबल को बटन पिन असाइन करें; // midiOut void setup () {pinMode (buttonOne, INPUT) नामक एक MIDI ऑब्जेक्ट बनाएँ; // सेटअप बटन इनपुट पिनमोड के रूप में (buttonTwo, INPUT); // सेटअप बटन इनपुट के रूप में Serial.begin (31250); // सेटअप मिडी आउटपुट। } शून्य लूप () {if (digitalRead (buttonOne) == High) {// चेक बटन स्टेट डिले (10); // सॉफ्टवेयर डे-बाउंस अगर (digitalRead (buttonOne) == High) {// चेक बटन स्टेट फिर midiOut.sendControlChange (56,127,1); // एक मिडी सीसी भेजें - 56 = नोट, 127 = वेग, 1 = चैनल देरी (250); }} अगर (digitalRead (buttonTwo) == High) {// चेक बटन स्टेट डिले (10); // सॉफ्टवेयर डी-बाउंस अगर (digitalRead (buttonTwo) == High) {// चेक बटन स्टेट फिर midiOut.sendControlChange (42,127,1); // एक मिडी सीसी भेजें - 42 = नोट, 127 = वेग, 1 = चैनल देरी (250); } } }

नोट - आप उपयोग नहीं कर पाएंगे Serial.println () मिडी आउटपुट के साथ।
यदि आप एक सीसी के बजाय एक पीसी संदेश भेजना चाहते हैं तो बस बदलें:

midiOut.sendControlChange (42,127,1);

साथ में:

midiOut.sendProgramChange (मूल्य, चैनल); 

लड़ाई में

नीचे एक नियंत्रक के रूप में एक प्रदर्शन है एबलटन लाइव (हर बजट के लिए सर्वश्रेष्ठ डीजे सॉफ्टवेयर हर बजट के लिए सर्वश्रेष्ठ डीजे सॉफ्टवेयरअच्छा मिक्सिंग सॉफ्टवेयर आपके प्रदर्शन में सभी अंतर ला सकता है। चाहे आप मैक, विंडोज, या लिनक्स का उपयोग कर रहे हों, यदि आप डीजेिंग शुरू करना चाहते हैं, तो हर स्तर के कौशल और बजट को पूरा किया जाता है। अधिक पढ़ें ). शीर्ष दायाँ ऑडियो मीटर दिखाता है, और शीर्ष मध्य आने वाले मिडी संदेश (के माध्यम से) दिखाता है मिडी मॉनिटर OS X पर)।

क्या आपने मिडी नियंत्रक बनाया है?

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

छवि क्रेडिट: Shithstock.com के माध्यम से कीथ जेंट्री

जो ब्रिटेन के लिंकन विश्वविद्यालय से कंप्यूटर विज्ञान में स्नातक हैं। वह एक पेशेवर सॉफ़्टवेयर डेवलपर है, और जब वह ड्रोन नहीं उड़ा रहा है या संगीत नहीं लिख रहा है, तो उसे अक्सर तस्वीरें लेने या वीडियो बनाने के लिए पाया जा सकता है।