विषयसूची:

मेलोडी: 8 कदम (चित्रों के साथ)
मेलोडी: 8 कदम (चित्रों के साथ)

वीडियो: मेलोडी: 8 कदम (चित्रों के साथ)

वीडियो: मेलोडी: 8 कदम (चित्रों के साथ)
वीडियो: छम छम फूल वीडियो | बागी | टाइगर श्रॉफ, श्रद्धा कपूर | मीट ब्रदर्स, मोनाली ठाकुर | सब्बीर खान 2024, जुलाई
Anonim
Image
Image
प्रवाह को समझना
प्रवाह को समझना

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

यह कैसे काम करता है?

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

मेलोडी के दो मुख्य दृश्य संकेतक हैं। पहली एक एलईडी पट्टी है जो खिलाड़ी को बताती है कि लूप कब शुरू होता है और कब समाप्त होता है और इंगित करता है कि क्या खिलाड़ी की बारी है। दूसरा उत्पाद के केंद्र में एक एलईडी डिस्प्ले है, जिसका उपयोग मौजूदा धुन को नेत्रहीन रूप से प्रदर्शित करने के लिए किया जाता है। 3 से 1 तक की उलटी गिनती खेलना शुरू करने का संकेत देती है और एक समय प्रदर्शन उपयोगकर्ता को निर्देश देता है कि वह समूह के मेलोडी में कब और कैसे योगदान देना चाहता है। भविष्य में उपयोग के लिए रिकॉर्डिंग स्वचालित रूप से कंपनी के क्लाउड में सहेजी जाती है।

इस परियोजना को मीडिया इनोवेशन लैब (MiLab) में इंटरडिसिप्लिनरी सेंटर हर्ज़लिया (IDC) में चार छात्रों द्वारा डिज़ाइन किया गया था: शहर अगासी, ईडन बार-टोव, गैल एश्चर और गैड स्टर्न। ज़विका मार्कफेल्ड, नेट्टा ओफ़र और मिशल लेस्चिंस्की की सहायता से और नोआ मोराग और ओरेन ज़करमैन के मार्गदर्शन से।

टॉम ग्रानोट को एक महान शिक्षाप्रद बनाने के लिए धन्यवाद जिसने मुझे यह जानने में मदद की कि यहां कुछ चीजों को कैसे लागू किया जाए (यहां कुछ कदम इस महान निर्देश के बाद तैयार किए गए हैं)।

आपूर्ति

  • थ्री डी प्रिण्टर
  • ईएसपी8266
  • 7 बटन
  • 8X8 एलईडी मैट्रिक्स
  • WS2812B एलईडी पट्टी
  • I2S एम्पलीफायर
  • महिला 1/8" (3.5 मिमी) 4 पोल ऑडियो जैक
  • 4X 1K रोकनेवाला
  • 1X3K रोकनेवाला

चरण 1: प्रवाह को समझना

प्रवाह को समझना
प्रवाह को समझना
प्रवाह को समझना
प्रवाह को समझना

इस परियोजना में हमने कुछ मुद्दों से निपटने की कोशिश की:

  1. हम इसे ऑनलाइन कैसे कर सकते हैं, ताकि खिलाड़ी एक ही समय में खेल सकें?
  2. हम इंटरनेट विलंबता के आसपास कैसे जा सकते हैं और एक सहज अनुभव बना सकते हैं?
  3. बिना संगीत पृष्ठभूमि वाले लोगों के लिए भी हम संगीत को कैसे अच्छा बना सकते हैं?

संगीत का समय और क्रमांकन

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

संगीत में, हम लय को संगीतमय सलाखों में विभाजित करते हैं। प्रत्येक बार मूल रूप से एक छोटा-सा खंड है जिसे हम 4/4 (अर्थात् एक संगीत बार में 4 बीट्स) का उपयोग करना चुनते हैं - सबसे आम।

प्रत्येक बीट को फिर 4 सैंपलिंग विंडो में विभाजित किया जाता है, इसलिए खेला जाने वाला प्रत्येक नोट एसी अच्छी स्थिति में स्वतः संरेखित हो जाएगा और हमें सर्वर पर भेजने के लिए नंबरों की एक स्ट्रिंग के रूप में एक गीत का प्रतिनिधित्व करने की भी अनुमति देता है।

बिना संगीत की पृष्ठभूमि वाले खिलाड़ियों के अनुकूल होने के लिए हमने तीन काम किए:

  1. खिलाड़ी को कम विकल्पों पर ध्यान केंद्रित करने के लिए चाबियों की संख्या सीमित करें।
  2. हमने एक ही पैमाने पर नोट्स चुने जो एक साथ अच्छी तरह से बजते हैं ताकि कोई असंगति ध्वनि न हो।
  3. प्रत्येक प्रेस ताल की "खिड़की" पर सेट है, इस प्रकार खिलाड़ी संगीत को ताल से अलग कर देता है

संचार प्रोटोकॉल

तो संगीत के पीछे के तर्क को समझने के बाद, हम इसे अपने खिलाड़ियों के बीच कैसे संवाद कर सकते हैं?

उसके लिए, हम MQTT का उपयोग करते हैं, एक प्रकाशित-सदस्यता नेटवर्क प्रोटोकॉल जो उपकरणों के बीच संदेशों को स्थानांतरित करता है।

प्रत्येक खिलाड़ी को दो विषयों की सदस्यता दी जाती है: लूप (सबसे वर्तमान लूप प्राप्त करें) और टर्न (सिंक उद्देश्यों के लिए वर्तमान प्लेयर की आईडी प्राप्त करता है)।

अपनी बारी में जब कोई खिलाड़ी धुन बजाता है तो वह यूपी बटन दबाएगा और लूप (अपडेट किया गया एक) एमक्यूटीटी ब्रोकर को भेजा जाएगा, जो इसे लूप चैनल पर सभी खिलाड़ियों को वापस भेज देगा।

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

चरण 2: सर्वर सेट करना - Ngrok

सर्वर सेट करना - Ngrok
सर्वर सेट करना - Ngrok
सर्वर सेट करना - Ngrok
सर्वर सेट करना - Ngrok

ngrok एक टनलिंग सेवा है। यह हमें स्थानीय रूप से चल रही सेवा (हमारे मामले में, Node-RED) को बाहरी दुनिया में उजागर करने की अनुमति देता है - बिना सर्वर स्थापित करने या DNS रिकॉर्ड से निपटने की परेशानी के। आप बस अपने कंप्यूटर पर Node-RED चलाते हैं, और फिर उसी पोर्ट पर ngrok चलाते हैं जिस पर Node-RED चल रहा है।

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

स्थापना और विन्यास

  1. यहां से अपने ऑपरेटिंग सिस्टम के लिए ngrok डाउनलोड करें।
  2. डाउनलोड पृष्ठ पर चरण का पालन करें, जब तक कि "इसे फायर करें" चरण तक नहीं।
  3. "फायर इट अप स्टेप" में, 1883 के लिए 80 को स्वैप करें - और http से tcp में,./ngrok tcp 1883 आपके आधार पर
  4. URL और पोर्ट नंबर को सेव करें (छवि में देखा गया है) हमें बाद में इसकी आवश्यकता होगी।

चरण 3: सर्वर सेट करना - नोड-लाल

सर्वर सेट करना - नोड-लाल
सर्वर सेट करना - नोड-लाल

प्रोजेक्ट का सर्वर लॉजिक, Node-RED एक विज़ुअल प्रोग्रामिंग वातावरण है जो आपको विभिन्न सॉफ़्टवेयर (और हार्डवेयर!) कनेक्ट करने की अनुमति देता है।

यहां हमने सभी खिलाड़ियों के बीच संचार का तर्क बनाया (लूपों को साझा करना और प्राप्त करना और मोड़ों का समन्वय करना)

नोड-रेड की स्थापना

अपने स्थानीय कंप्यूटर पर हमारे नोड-रेड प्रवाह को लोड करने के लिए निम्नलिखित चरणों का पालन करें:

  1. Node-RED को Node.js की आवश्यकता है, इसे यहाँ से स्थापित करें
  2. यहां दिए गए निर्देशों का उपयोग करके स्वयं नोड-रेड स्थापित करें।

अब जब आपके पास Node-RED स्थापित हो गया है, तो इसे ऊपर दिए गए चरण में दिए गए निर्देशों का उपयोग करके चलाएं और सत्यापित करें कि आप एक खाली कैनवास पृष्ठ देख सकते हैं। यह https://127.0.0.1:1880. में स्थित होना चाहिए

अब आपको उस प्रवाह को आयात करने की आवश्यकता होगी जिसका उपयोग हमने इस परियोजना के लिए किया था, आप इसे यहां पा सकते हैं और बस आयात JSON फ़ाइल जोड़ें दबाएं और परिनियोजन दबाएं।

नोड-रेड की स्थापना:

यदि आप इस चरण से जुड़ी छवि को देखते हैं तो आप देख सकते हैं कि हमारे पास 2 मुख्य "कार्रवाइयां" हैं, हमें अपने खिलाड़ियों में से एक से वर्तमान लूप प्राप्त होता है और फिर हम इसे अन्य सभी खिलाड़ियों को प्रेषित करते हैं। इसके अलावा, हम सभी खिलाड़ियों के लिए नया मोड़ प्रसारित करते हैं। तो खेल सिंक में रहता है।

चरण 4: सर्वर सेट करना - MQTT (मच्छर)

सर्वर सेट करना - MQTT (मच्छर)
सर्वर सेट करना - MQTT (मच्छर)

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

स्थापना और विन्यास

  1. यहां से मॉस्किटो डाउनलोड करें और इसे अपने ऑपरेटिंग सिस्टम के अनुसार इंस्टॉल करें।
  2. आम तौर पर, आपको नोड-रेड को मच्छर से जोड़ने के लिए यहां दिए गए निर्देशों का पालन करना होगा। हालाँकि, यदि आपने हमारे प्रवाह का उपयोग किया है, तो यह आपके लिए पहले से ही कॉन्फ़िगर है। जब तक आप प्रवाह और मच्छर को ठीक से स्थापित करते हैं, और मच्छर बंदरगाह 1883 (जिस पर यह डिफ़ॉल्ट रूप से चलता है) पर चलता है, इसे बॉक्स से बाहर काम करना चाहिए।
  3. ध्यान दें कि इसका मतलब है कि MQTT ब्रोकर और आपका Node-RED सर्वर एक ही मशीन पर चलते हैं। यह सिस्टम के अंदर संचार को सरल बनाने के लिए उपयोगी है। अधिक जानकारी के लिए नीचे दिया गया नोट देखें।

एमक्यूटीटी यातायात की निगरानी

मैंने यातायात की निगरानी के लिए एमक्यूटीटीएफएक्स का इस्तेमाल किया, यह एक बहुत ही सरल जीयूआई के साथ एक अच्छा टूल है।

चरण 5: कोड

कोड
कोड

आप GitHub में कोड पा सकते हैं (सभी डेटा फ़ाइलों और config.h के साथ)

निर्भरताएँ:

कोड को esp2866 पर लोड करने से पहले आपको कुछ पुस्तकालय स्थापित करने की आवश्यकता होगी:

  1. libmad-8266 (SPIFF से और I2S में संगीत को डिकोड करें)
  2. एएसपीएमक्यूटीटी क्लाइंट
  3. ईएसपी8266वाईफाई
  4. Adafruit_NeoPixel

SPIFF का उपयोग करके ध्वनियाँ ESP पर अपलोड करें:

  1. इस महान निर्देश का पालन करें।
  2. स्रोत कोड निर्देशिका में डेटा फ़ोल्डर जोड़ें।
  3. टूल्स के तहत Arduino IDE में फ्लैश का आकार "4MB (FS:3MB TOA:~512KB)" में बदलें
  4. टूल्स प्रेस के तहत भी ESP2866 स्केच डेटा अपलोड करें

पैरामीटर सेट करना:

उसके बाद config.h फ़ाइल में जाएं और आवश्यक डेटा जैसे कि वाईफ़ाई क्रेडेंशियल और पिछले चरण से ngrok URL और पोर्ट जोड़ें (संदर्भ के लिए संलग्न फोटो की जांच करें)।

p.s - मैंने अभी तक एक ऑटो-कनेक्ट फीचर जोड़ा है जिससे आपको अपने स्मार्टफोन से वाई-फाई और एनग्रोक डेटा सेट करने में मदद मिलेगी, क्योंकि यह सिर्फ अवधारणा का पहला सबूत था, मैं इसे किसी दिन जोड़ना चाहूंगा।

अपने इच्छित खिलाड़ी की मात्रा निर्धारित करें (यह गेम 2-3 खिलाड़ियों के लिए सबसे अच्छा काम करता है और बॉक्स से बाहर यह 2 खिलाड़ियों के लिए ध्वनियों की एक सरणी से भरा हुआ है)। लेकिन अधिक के लिए आसानी से समायोजित किया जा सकता है:

प्रत्येक खिलाड़ी के लिए एक उपयोगकर्ता-विशिष्ट विषय के तहत एक लूप प्रकाशित करने के लिए नोड-रेड में एक और प्रवाह जोड़ें।

इसके अलावा, आप इस सरणी को अपनी कस्टम ध्वनियों में बदलकर संगीतमय ध्वनि को संपादित कर सकते हैं:

यहां आप 3 प्रकार के यंत्र देख सकते हैं (खिलाड़ी 0 के लिए क्रोड, खिलाड़ी 1 के लिए लीड और खिलाड़ी 2 के लिए बास)

const char* पथ[NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};

चरण 6: 3D मॉडल प्रिंट करें

3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें
3D मॉडल प्रिंट करें

पहले चरण के लिए, एसटीएल डाउनलोड करें और उनका प्रिंट लें।

समर्थन को हटाने के बाद और शायद थोड़ा सा सैंडिंग (प्रिंटर के संकल्प के आधार पर)

इसे मनचाहे रंग में रंग दें

चरण 7: कोडांतरण और वेल्डिंग

कोडांतरण और वेल्डिंग
कोडांतरण और वेल्डिंग

तो मूल रूप से यहाँ वह जगह है जहाँ असली जादू होता है।

आप इन योजनाओं का पालन कर सकते हैं और सब कुछ एक साथ जोड़ सकते हैं।

ध्यान रखें कि आप पिन की स्थिति बदल सकते हैं बस इसे कोड में भी बदलना याद रखें।

A0 और I2S काफी हद तक स्थिर हैं:

चूँकि A0 रेसिस्टर ब्रिज के लिए है (हम करंट में अंतर का उपयोग यह जानने के लिए करते हैं कि 5 में से कौन सा बटन दबाया गया था - इस इंस्ट्रक्शंस के समान।

I2S की एक विशिष्ट कोडिंग है जिसे आप यहां पा सकते हैं

चरण 8: अपने दोस्तों के साथ कुछ लूप खेलें

सिफारिश की: