Arduino के साथ MIDI कंट्रोलर कैसे बनाएं

Arduino के साथ MIDI कंट्रोलर कैसे बनाएं

एक संगीतकार के रूप में जिसने संगीत वाद्ययंत्रों और शोर बक्सों का संग्रह एकत्र किया है, विनम्र Arduino एक कस्टम MIDI नियंत्रक बनाने के लिए एकदम सही उपकरण है। जबकि रास्पबेरी पाई ने इंटरनेट ऑफ थिंग्स (IoT) परियोजनाओं के लिए ताज ले लिया हो सकता है, एक साधारण Arduino Uno (Arduino के विभिन्न प्रकार क्या हैं?) में इस परियोजना के लिए पर्याप्त शक्ति से अधिक है।





पहली बार Arduino का उपयोग कर रहे हैं? कोई चिंता नहीं, हमारे पास एक संपूर्ण है Arduino शुरुआती गाइड इस परियोजना से निपटने से पहले पढ़ने के लिए।





मिडी क्या है?

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





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

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



नियंत्रण परिवर्तन और कार्यक्रम परिवर्तन

MIDI संदेश के दो मुख्य प्रकार हैं: नियंत्रण परिवर्तन और कार्यक्रम परिवर्तन।

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





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

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

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

योजना बनाएं

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





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

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

मिडी कनेक्शन

मिडी-पिनआउट

अपने MIDI सॉकेट को इस प्रकार वायर करें:

  • 220 ओम रोकनेवाला के माध्यम से मिडी पिन 5 से Arduino Transmit (TX) 1 तक
  • 220 ओम रोकनेवाला के माध्यम से मिडी पिन 4 से Arduino +5V तक
  • मिडी पिन २ से अरुडिनो ग्राउंड

बटन कनेक्शन

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

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

मिडी परीक्षण

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

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

Arduino को अपने कंप्यूटर से कनेक्ट करें और निम्न परीक्षण कोड अपलोड करें (से सही बोर्ड और पोर्ट का चयन करना न भूलें उपकरण > बोर्ड तथा उपकरण> पोर्ट मेनू)।

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

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

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

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

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

बटन परीक्षण

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

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

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

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

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

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

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

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

नोट -- आप उपयोग नहीं कर पाएंगे सीरियल.प्रिंट्लन () मिडी आउटपुट के साथ।

यदि आप एक सीसी के बजाय एक पीसी संदेश भेजना चाहते हैं तो बस बदलें:

midiOut.sendControlChange(42,127,1);

साथ में:

midiOut.sendProgramChange(value, channel);

कार्रवाई में

नीचे एक नियंत्रक के रूप में एक प्रदर्शन है एबलटन लाइव ( हर बजट के लिए सर्वश्रेष्ठ डीजे सॉफ्टवेयर ) शीर्ष दाईं ओर ऑडियो मीटर दिखाता है, और शीर्ष मध्य आने वाले मिडी संदेशों को दिखाता है (के माध्यम से मिडी मॉनिटर ओएस एक्स पर)।

कानूनी रूप से कंप्यूटर के लिए मुफ्त संगीत डाउनलोड

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

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

छवि क्रेडिट: शटरस्टॉक डॉट कॉम के माध्यम से कीथ जेंट्री

हमें उम्मीद है कि आपको हमारे द्वारा सुझाई गई और चर्चा की गई चीजें पसंद आएंगी! MUO में संबद्ध और प्रायोजित साझेदारियाँ हैं, इसलिए हमें आपकी कुछ खरीदारी से होने वाली आय का एक हिस्सा प्राप्त होता है। यह आपके द्वारा भुगतान की जाने वाली कीमत को प्रभावित नहीं करेगा और सर्वोत्तम उत्पाद अनुशंसाओं की पेशकश करने में हमारी सहायता करता है।

साझा करना साझा करना कलरव ईमेल क्या यह विंडोज 11 में अपग्रेड करने लायक है?

विंडोज़ को नया रूप दिया गया है। लेकिन क्या यह आपको विंडोज 10 से विंडोज 11 में शिफ्ट होने के लिए मनाने के लिए काफी है?

आगे पढ़िए
संबंधित विषय
  • DIY
  • डीजे सॉफ्टवेयर
  • अरुडिनो
  • इलेक्ट्रानिक्स
  • दोपहर
लेखक के बारे में जो कोबर्न(136 लेख प्रकाशित)

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

जो कोबर्न . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें
श्रेणी Diy