विषयसूची:

MIDI2LED - एक MIDI नियंत्रित एलईडी पट्टी प्रकाश प्रभाव: 6 कदम
MIDI2LED - एक MIDI नियंत्रित एलईडी पट्टी प्रकाश प्रभाव: 6 कदम

वीडियो: MIDI2LED - एक MIDI नियंत्रित एलईडी पट्टी प्रकाश प्रभाव: 6 कदम

वीडियो: MIDI2LED - एक MIDI नियंत्रित एलईडी पट्टी प्रकाश प्रभाव: 6 कदम
वीडियो: Use MIDI to control LED software 2024, नवंबर
Anonim
MIDI2LED - एक MIDI नियंत्रित एलईडी पट्टी प्रकाश प्रभाव
MIDI2LED - एक MIDI नियंत्रित एलईडी पट्टी प्रकाश प्रभाव

यह मेरा पहला निर्देश है, इसलिए मेरे साथ रहो।

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

आपूर्ति

  • Arduino Uno
  • Arduino प्रोटोशील्ड
  • मिडी जैक
  • 1N4148 डायोड
  • 6N138 ऑप्टो कपलर
  • प्रतिरोधक: 2x 220 ओम, 1x 10kOhm, 1x 470Ohm
  • WS2812B एलईडी पट्टी (60 एलईडी)
  • कुछ बचे हुए तार
  • तापरोधी पाइप
  • Arduino के लिए उपयुक्त आवरण (मैं एक प्लास्टिक जंक्शन बॉक्स का उपयोग करता हूं)

आपको भी आवश्यकता होगी

  • सोल्डरिंग आयरन और सोल्डर
  • मिडी कीबोर्ड और मिडी केबल

चरण 1: इलेक्ट्रॉनिक्स

इलेक्ट्रॉनिक्स
इलेक्ट्रॉनिक्स

सर्किट बहुत सीधा है। इसमें एक मानक MIDI इनपुट (Arduino के बाईं ओर) और LED स्ट्रिप (Arduino के दाईं ओर) का कनेक्शन होता है। सभी भागों को प्रोटोशील्ड पर रखें, बहुत सारी जगह है। आमतौर पर एलईडी पट्टी को बिजली देने के लिए बाहरी बिजली की आपूर्ति का उपयोग करने की सिफारिश की जाती है, लेकिन मैंने पाया कि जब आप खेलते हैं, तो एक ही समय में केवल कुछ एलईडी चालू होते हैं, इसलिए वहां था बिजली उत्पादन के रूप में Arduino +5V/GND का उपयोग करने में कोई समस्या नहीं है। (एक ही समय में और पूरे वेग से सभी चाबियों को मारने से बचने की कोशिश करें।;-)) यदि आप बाहरी बिजली की आपूर्ति का उपयोग करने का निर्णय लेते हैं, तो बस इसे Arduino +5V और GND पिन से कनेक्ट करें। कुछ लोग इन दो पंक्तियों के बीच एक 100uF संधारित्र (योजनाबद्ध रूप में नहीं दिखाया गया) डालने की सलाह देते हैं।

भागों को प्रोटोशील्ड से मिलाएं और एलईडी पट्टी को योजनाबद्ध में दिखाए अनुसार कनेक्ट करें।

चरण 2: एलईडी पट्टी को जोड़ना

एलईडी पट्टी को जोड़ना
एलईडी पट्टी को जोड़ना

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

मेरे द्वारा उपयोग की जाने वाली एलईडी पट्टी इसके पीछे चिपकने वाली टेप के साथ आती है, इसलिए इसे आसानी से मिडी कीबोर्ड के पीछे चिपकाया जा सकता है।

चरण 3: प्रोजेक्ट को अपने कीबोर्ड के अनुकूल बनाना

प्रोजेक्ट को अपने कीबोर्ड के अनुकूल बनाना
प्रोजेक्ट को अपने कीबोर्ड के अनुकूल बनाना
प्रोजेक्ट को अपने कीबोर्ड के अनुकूल बनाना
प्रोजेक्ट को अपने कीबोर्ड के अनुकूल बनाना

आपको एलईडी पट्टी और Arduino कोड को अपने कीबोर्ड में अनुकूलित करना पड़ सकता है। खदान में 76 कुंजियाँ हैं, और पट्टी की लंबाई लगभग कीबोर्ड की चौड़ाई के बराबर है। यदि आपके पास उदा। 61 कुंजियाँ, आपको एक छोटी पट्टी की आवश्यकता हो सकती है। एलईडी पट्टी को किन्हीं दो एलईडी के बीच काटा जा सकता है। बस सुनिश्चित करें कि आप सही हिस्से को काट रहे हैं, इसमें एक इनपुट एंड (एक महिला कनेक्टर के साथ) और एक आउटपुट एंड (एक पुरुष कनेक्टर के साथ) है, आपको इनपुट एंड को रखना होगा। कोड में, #defines बदलें के लिये

  • NUMBER_OF_LEDS सिरे को काटने के बाद आपकी पट्टी में जितने LED बचे हैं,
  • आपके कीबोर्ड पर कुंजियों की संख्या तक NUMBER_OF_KEYS, और
  • आपकी न्यूनतम कुंजी की MIDI पिच संख्या के लिए MIN_KEY. आपको यह कीबोर्ड के उपयोगकर्ता पुस्तिका में मिल सकता है; या ऐसे टूल का उपयोग करें जो MIDI नोट नंबर प्रदर्शित करता हो, जैसे Linux के लिए KMidiMon, या windows या Mac के लिए Pocket MIDI; या जब तक डिवाइस आपके कीबोर्ड की सभी कुंजियों पर प्रतिक्रिया नहीं देता तब तक अलग-अलग मान आज़माएं

चरण 4: Arduino कोड

Arduino कोड फोर्टी सेवन इफेक्ट्स द्वारा MIDI लाइब्रेरी (v4.3.1) और Adafruit द्वारा Adafruit NeoPixel लाइब्रेरी (v1.3.4) का उपयोग करता है। Arduino IDE का उपयोग करके इन पुस्तकालयों को स्थापित करें। फिर कोड को संकलित करें और इसे बिना शील्ड से जुड़े Arduino पर अपलोड करें (ऑप्टोकॉप्लर RX पिन से जुड़ा है, जो अपलोड को बाधित करता है)। USB केबल के माध्यम से Arduino को पावर दें (मैं USB वॉल वार्ट का उपयोग करता हूं)।

यदि आप कोड को अपनी पसंद के अनुसार संशोधित करना चाहते हैं, तो यहां एक संक्षिप्त अवलोकन दिया गया है कि यह कैसे काम करता है: प्रत्येक लूप में, MIDI इनपुट पढ़ा जाता है। यदि कोई नोट ऑन या नोट ऑफ इवेंट प्राप्त हुआ है, तो MyHandleNoteOn या MyHandleNoteOff फ़ंक्शन कहलाते हैं। वे दोनों updateVelocityArray फ़ंक्शन को कॉल करते हैं, जो कुंजी संख्या के वेग (यानी आपने कुंजी को कितनी मेहनत से मारा है) को संग्रहीत करता है। यदि वेग पहले की तुलना में अधिक है, तो संबंधित एलईडी का रंग "वर्तमान रंग" पर सेट है। MIDI घटनाओं को संभालने के बाद, फ़ंक्शन updateLedArray को कॉल किया जाता है। यह "वर्तमान रंग" को अद्यतन करता है (लाल, हरा और नीला मान जिनमें से स्वतंत्र रूप से एक रैखिक तरीके से बदलते हैं, जब तक कि निचले या ऊपरी छोर तक नहीं पहुंच जाता है, जिस बिंदु पर रैखिक परिवर्तन की गति एक यादृच्छिक संख्या पर सेट होती है), धीरे-धीरे दबाए गए नोटों के वेग को कम करता है, और प्रत्येक एलईडी के रंग मूल्यों को अपडेट करता है जिसे अपना रंग बदलना पड़ता है (नए नोट हिट, या वेग में कमी के कारण)। फ़ंक्शन showLedArray रंगों को "पिक्सेल" नामक Adafruit_NeoPixel संरचना में स्थानांतरित करता है और वास्तविक एलईडी को पिक्सेल संरचना में रंग दिखाता है।

चरण 5: संभावित संवर्द्धन …

एक परियोजना कभी समाप्त नहीं होती है। इसे सुधारने के लिए हमेशा कुछ न कुछ किया जा सकता है:

  • प्रोटोशील्ड में इतने कम हिस्से होते हैं कि यह वास्तव में बेकार है; एक Arduino नैनो और एक 15x7 छेद पीसीबी और कुछ महिला पिन हेडर के साथ एक ही प्रभाव को आसानी से प्राप्त कर सकता है।
  • कुछ MIDI सिग्नल खो जाते हैं। यदि यह एक NoteOn है, तो संबंधित LED नहीं जलेगी; यदि यह नोटऑफ है, तो यह बाहर नहीं जाएगा (इसीलिए मैंने वेग में कमी की शुरुआत की, जो सुनिश्चित करता है कि एल ई डी अनिश्चित काल तक नहीं रहेंगे)। मैं अभी भी इसका कारण जानने की कोशिश कर रहा हूं। संभवतः यह एक समय का मुद्दा है, और MIDI.read() को अधिक बार कॉल किया जाना चाहिए।
  • कुछ मिडी संकेतों को गलत पढ़ा जाता है, यानी गलत एल ई डी प्रकाश करता है। उपरोक्त बिंदु से जोड़ा जा सकता है। कुछ जांच की जरूरत है।
  • सर्किट को बिना अधिक उपयोगकर्ता सहभागिता (कीबोर्ड चलाने के अलावा) के सुखद दृश्य प्रभाव देने के लिए डिज़ाइन किया गया है। हालांकि, मैं एक पोटेंशियोमीटर जोड़ने की कल्पना कर सकता हूं जिसे पढ़ा जाता है (Arduino के एनालॉग इनपुट में से एक का उपयोग करके) जिसके साथ आप अधिकतम गति को बदल सकते हैं जिस पर रंग बदलते हैं (वर्तमान में # MAX_COLOR_CHANGE_SPEED = 20 के रूप में परिभाषित किया गया है)। या दो नोटऑन ईवेंट के बीच के औसत समय को मापें, और तदनुसार MAX_COLOR_CHANGE_SPEED बदलें - धीमे गीतों में, रंग अधिक धीरे-धीरे बदलना चाहिए।

चरण 6: हो गया

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

सिफारिश की: