विषयसूची:
- चरण 1: संचालन का सिद्धांत
- चरण 2: पुर्जे और उपकरण
- चरण 3: सोल्डरिंग और असेंबली
- चरण 4: प्रोग्रामिंग ए: Arduino
- चरण 5: प्रोग्रामिंग बी: पायथन और यूजर इंटरफेस
वीडियो: पायथन और अरुडिनो पर मिडी ड्रम किट: 5 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
मैं बचपन से ही ड्रम किट खरीदना चाहता था। उस समय, सभी संगीत उपकरणों में सभी डिजिटल अनुप्रयोग नहीं थे क्योंकि आज हमारे पास बहुत कुछ है, इसलिए उम्मीदों के साथ कीमतें बहुत अधिक थीं। हाल ही में मैंने eBay से सबसे सस्ता ड्रम किट खरीदने का फैसला किया है, केवल प्राथमिकता के साथ: इसे फाड़ने की क्षमता और डिवाइस के लिए अपना हार्डवेयर और सॉफ्टवेयर संलग्न करना।
खरीदारी बिल्कुल भी निराशाजनक नहीं थी: 9 अलग-अलग साउंड पैड के साथ पोर्टेबल रोल-अप ड्रम किट, किक ड्रम के लिए दो फुट स्विच पैडल और हाई-हैट और माइक्रो-यूएसबी पावर सॉकेट। क्या वास्तव में डिमोटिवेटिंग था, यह आउटपुट साउंड है (इस किट का वास्तविक उपयोग बाहरी स्पीकर को जोड़ने और इसका आनंद लेने के लिए है)। इसलिए, मैंने इसे आसान उपयोग और आसान संशोधनों जैसे वॉल्यूम, नोट और चैनल चयन के लिए यूएसबी, मिडी ड्रम किट के माध्यम से Arduino और पायथन पर आधारित यूजर इंटरफेस के माध्यम से अपने स्वयं के प्रोग्राम में बदलने का फैसला किया।
डिवाइस की विशेषताएं:
- कम कीमत
- किसी भी डिजिटल इनपुट से ड्रम किट बनाना - यहां तक कि पुश बटनों की सरणी
- केवल USB इंटरफ़ेस के माध्यम से संचार समर्थन और बिजली की आपूर्ति - UART कनवर्टर और Arduino डिवाइस के लिए USB का एकीकरण
- उचित संचालन के लिए मिनिनम भागों
- उपयोग में आसान पायथन आधारित UI
- समायोज्य वेग, नोट और Arduino पिन के साथ पूर्ण MIDI समर्थन
- डिवाइस की मेमोरी में संग्रहीत कस्टम ड्रम कॉन्फ़िगरेशन सहेजें और लोड करें
आइए प्रोजेक्ट पर आगे बढ़ें …
चरण 1: संचालन का सिद्धांत
खंड आरेख
सबसे पहले, आइए परियोजना संरचना पर ध्यान दें, और इसे अलग-अलग ब्लॉकों में विभाजित करें:
रोल-अप ड्रम किट
परियोजना की मुख्य इकाई। इसमें 9 अलग-अलग ड्रम पैड होते हैं, जहां प्रत्येक पैड बटनों की एक सरणी होती है जो हिट होने पर अपनी तर्क स्थिति को बदल देती है। इसकी संरचना के कारण, इस विशेष ड्रम किट को किसी भी पुश बटन से बनाने की संभावना है। प्रत्येक ड्रम पैड मुख्य इलेक्ट्रॉनिक बोर्ड पर पुल-अप रेसिस्टर से जुड़ा होता है, इस प्रकार जब ड्रम पैड को बार-बार मारा जा रहा है, एक विशिष्ट स्विच सर्किट के ग्राउंड से जुड़ा होता है और ड्रम पैड लाइन पर लॉजिकल LOW मौजूद होता है। जब कोई दबाव नहीं लगाया जाता है, तो ड्रम पैड स्विच खुला होता है और पावर लाइन के पुल-अप रेसिस्टर के कारण ड्रम पैड लाइन पर लॉजिकल हाई मौजूद होता है। क्योंकि परियोजना का उद्देश्य एक पूर्ण डिजिटल मिडी डिवाइस बनाना है, मुख्य पीसीबी पर सभी एनालॉग भागों की उपेक्षा की जा सकती है। यह ध्यान रखना महत्वपूर्ण है कि ड्रम किट में किक ड्रम और हाई-हैट के लिए दो पैडल होते हैं, जो पुल-अप रेसिस्टर्स से भी बंधे होते हैं और सभी ड्रम पैड के समान ऑपरेशन लॉजिक साझा करते हैं (हम इस पर थोड़ी देर बाद चर्चा करेंगे))
Arduino प्रो-माइक्रो
ड्रम किट का दिमाग। इसका उद्देश्य यह पता लगाना है कि क्या ड्रम पैड से कोई संकेत निकल रहा है और सभी आवश्यक मापदंडों के साथ उपयुक्त मिडी आउटपुट प्रदान करता है: नोट, वेग और सिग्नल की अवधि। ड्रम पैड की डिजिटल प्रकृति के कारण, उन्हें केवल arduino डिजिटल इनपुट (कुल 10 पिन) से जोड़ा जा सकता है। सभी वांछित सेटिंग्स और MIDI सूचनाओं को संग्रहीत करने के लिए, हम इसकी मेमोरी - EEPROM का उपयोग करने जा रहे हैं, इसलिए हर बार जब हम डिवाइस को पावर देते हैं, तो MIDI जानकारी को EEPROM से लोड किया जा रहा है, जिससे यह फिर से प्रोग्राम करने योग्य और पुन: कॉन्फ़िगर करने योग्य हो जाता है। साथ ही, Arduino Pro-Micro बहुत छोटे पैकेज में उपलब्ध है और ड्रम किट इनर केस में आसानी से आवंटित किया जा सकता है।
FTDI USB टू सीरियल कन्वर्टर
पीसी एप्लिकेशन की मदद से हमारे डिवाइस फीचर्स को प्रोग्राम और परिभाषित करने के लिए, यूएसबी इंटरफेस को सीरियल में बदलने की जरूरत है, क्योंकि Arduino Pro-Micro में USB नहीं है। चूंकि उपकरणों के बीच संचार यूएआरटी पर आधारित है, इसलिए इस परियोजना में एफटीडीआई डिवाइस का उपयोग किया जाता है, इसके अतिरिक्त गुणों की परवाह किए बिना उपयोग की सादगी के कारण।
पीसी एप्लीकेशन - पायथन
जब यूजर इंटरफेस और फास्ट-टू-बिल्ड प्रोजेक्ट्स के विकास की बात आती है, तो पायथन एक शानदार समाधान है। यूआई एप्लिकेशन का उद्देश्य हमारे ड्रम किट, स्टोर जानकारी, प्रोग्राम डिवाइस के लिए मिडी गुणों को फिर से परिभाषित करना और कोड को बार-बार संकलित करने की आवश्यकता के बिना सिस्टम के बीच संचार करना अधिक सुविधाजनक बनाना है। क्योंकि हम ड्रम किट के साथ संचार करने के लिए सीरियल इंटरफ़ेस का उपयोग कर रहे हैं, इंटरनेट के चारों ओर बहुत सारे मुफ्त मॉड्यूल हैं, जो किसी भी प्रकार के धारावाहिक संचार का समर्थन करते हैं। इसके अलावा, जैसा कि बाद में चर्चा की जाएगी, UART इंटरफ़ेस में कुल तीन पिन होते हैं: RXD, TXD और DTR। DTR का उपयोग Arduino मॉड्यूल पर रीसेट करने के लिए किया जाता है, इस प्रकार जब हम MIDI ऐप चलाने या UI को प्रोग्राम डिवाइस से कनेक्ट करने में रुचि रखते हैं, तो USB केबल या जो भी हो, को फिर से जोड़ने की कोई आवश्यकता नहीं है।
चरण 2: पुर्जे और उपकरण
पार्ट्स
- रोल-अप ड्रम किट
- 2 x सस्टेनेबल पेडल्स (आमतौर पर, डीके पैकेज में शामिल)।
- एफटीडीआई - यूएसबी टू सीरियल कन्वर्टर
- अरुडिनो प्रो माइक्रो
- माइक्रो-यूएसबी केबल
उपकरण
- सोल्डरिंग आयरन / स्टेशन
- सोल्डरिंग टिन
- पतला व्यास सिंगल कोर तार
- चिमटी
- काटने वाला
- Plier
- चाकू
- पेंचकस
- 3डी प्रिंटर (वैकल्पिक - अनुकूलित पेडल प्लेटफॉर्म के लिए)
सॉफ्टवेयर
- अरुडिनो आईडीई
- पायथन 3 या उच्चतर
- JetBrains Pycharm
- गंजा मिडी इंटरफ़ेस
- लूपमिडी
चरण 3: सोल्डरिंग और असेंबली
चूंकि तीन मॉड्यूल हैं जिन्हें संयोजित करना है, सोल्डरिंग और असेंबलिंग प्रक्रिया छोटी और सरल है:
-
Arduino Pro-Micro को FTDI डिवाइस के साथ संलग्न करें, सुनिश्चित करें कि कनेक्शन प्रत्येक डिवाइस पर परिभाषित I/O का अनुपालन करते हैं:
- वीबस-वीबस
- जीएनडी-जीएनडी
- डीटीआर-डीटीआर
- आरएक्सडी-TXD
- TXD-RXD
- ड्रम प्लास्टिक के बाड़े से सभी स्क्रू निकालें, सुनिश्चित करें कि आप पैड-टू-बोर्ड केबल और इसके पुल-अप प्रतिरोधों पर ध्यान केंद्रित कर सकते हैं
-
Arduino-FTDI मॉड्यूल के लिए सोल्डर पतले तार जो हमने पहले बनाए हैं:
- डिजिटल इनपुट: डी [२:११]
- वीबीयूएस
- डी+
- डी-
- जीएनडी
- मॉड्यूल को बैटरी केस के अंदर डालें ताकि तार पैड के पुल-अप रेसिस्टर्स की तरह उसी तरफ तैरें
- ड्रम पैड टर्मिनलों के लिए सभी डिजिटल इनपुट मिलाप करें जैसा कि अंतिम आंकड़े में दिखाया गया है।
- FTDI डिवाइस में मिलाप माइक्रो-यूएसबी बस (VBUS, D+, D-, GND), सुनिश्चित करें कि इन तारों को ट्रेस करने में कोई गलती नहीं है।
- Arduino-FTDI मॉड्यूल को बैटरी केस में हॉट-ग्लू के साथ संलग्न करें
- उपयुक्त स्क्रू अटैचमेंट के साथ डिवाइस को असेंबली करें
हमने इसे कर लिया है, डिवाइस को असेंबल किया गया है। आइए कोड जारी रखें …
चरण 4: प्रोग्रामिंग ए: Arduino
आइए हमारे स्केच का चरण-दर-चरण वर्णन करें:
सबसे पहले, उचित संचालन के लिए दो आवश्यक पुस्तकालयों को शामिल करने की आवश्यकता है। EEPROM पहले से ही Arduino IDE में पहले से स्थापित है, लेकिन किक ड्रम के लिए डिब्यूसर मॉड्यूल को अलग से स्थापित करना होगा।
#शामिल करें #शामिल करें
ये स्विच मुख्य रूप से डिबगिंग अनुक्रमों में उपयोग किए जाते हैं। यदि आप ड्रम पैड से Arduino टर्मिनलों के कनेक्शन को आज़माना चाहते हैं, और सभी डिजिटल इनपुट का निर्धारण करना चाहते हैं, तो इन स्विचों को परिभाषित किया जाना चाहिए।
/* डेवलपर स्विच: डिबगिंग या इनिशियलाइज़ करने के लिए वांछित मोड को असम्बद्ध करें *///# LOAD_DEFAULT_VALUES को परिभाषित करें // EEPROM के बजाय निरंतर मान लोड करें // # PRINT_PADS_PIN_NUMBERS परिभाषित करें // प्रिंट पिन नंबर जो एक पैड से जुड़ा है जो सीरियल पोर्ट के माध्यम से मारा गया था
स्थिर फ़ील्ड ड्रम पैड गणना सहित सभी डिफ़ॉल्ट मानों का प्रतिनिधित्व करते हैं। डिवाइस को पहली बार चलाने के लिए, हाई-हैट और किक पैडल के सटीक कनेक्शन को जानना आवश्यक है।
/* ड्रम प्रकार की गणना */
enum DRUM_POSITION { KICK = 0, SNARE, HIHAT, RIDE, CYMBAL1, CYMBAL2, TOM_HIGH, TOM_MID, TOM_LO, HIHAT_PEDAL};
/* डिफॉल्ट मान */
कास्ट uint8_t DRUM_NOTES[10] = { 36, 40, 42, 51, 49, 55, 47, 45, 43, 48}; const uint8_t DRUM_VELOCITIES[10] = { 110, 100, 100, 110, 110, 110, 110, 110, 110, 110}; कास्ट uint8_t DRUM_PINS[10] = {8, 6, 4, 3, 11, 9, 5, 10, 2, 7};
/* किक ड्रम डेब्यू अवधि */
कास्ट uint8_t KICK_DB_DURATION = 30;
EEPROM का उपयोग पीसी एप्लिकेशन से आने वाले सभी डेटा को स्टोर / लोड करने के लिए किया जाता है। ऊपर वर्णित पते की अवधि, प्रत्येक ड्रम पैड के लिए MIDI जानकारी के लिए सटीक स्थान दिखाती है
/* EEPROM एड्रेस मैपिंग
नोट: |0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09|
पिन: |0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13| वेग |0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23| */ const uint8_t Notes_ADDR = 0x00; कास्ट uint8_t VELOCITIES_ADDR = 0x14; कॉन्स्ट uint8_t PINS_ADDR = 0x0A;
वैश्विक चर का उपयोग प्रत्येक पैड की स्थिति को निर्धारित करने के लिए किया जाता है, और उसके अनुसार MIDI संचार करता है।
/* सार्वत्रिक चर */
uint8_t ड्रमनोट्स[10], ड्रमवेलोसिटीज[10], ड्रमपिन्स[10]; // मिडी चर
uint8_t uartBuffer[64]; // मिडी डेटा डेब्यूसर किक (DRUM_PINS [KICK], KICK_DB_DURATION) को इकट्ठा करने और संग्रहीत करने के लिए UART बफर; // किक ड्रम वोलेटाइल बूल पिछलेस्टेट [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0} के लिए डेब्यूसर ऑब्जेक्ट; // ड्रम पैड पिछला तर्क अस्थिर बूल करंट स्टेट [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0} बताता है; // ड्रम पैड वर्तमान तर्क बताता है
ईईपीरोम के कार्य।
/* EEPROM में सेटिंग स्टोर करें*/
शून्य स्टोरईईपीरोम () {
memcpy (ड्रमनोट्स, uartBuffer, 10); memcpy (ड्रमपिन, uartBuffer + 10, 10); memcpy (ड्रम वेग, uartBuffer + 20, 10); के लिए (uint8_t i = 0; i <10; i++) EEPROM.write(NOTES_ADDR + i, ड्रमनोट्स ); के लिए (uint8_t i = 0; i <10; i++) EEPROM.write(PINS_ADDR + i, ड्रमपिन्स ); के लिए (uint8_t i = 0; i <10; i++) EEPROM.write(VELOCITIES_ADDR + i, ड्रमवेलोसिटी); }
/* EEPROM से सेटिंग्स लोड करें*/
शून्य लोडईईपीरोम () { के लिए (uint8_t i = 0; i <10; i ++) ड्रमनोट्स = EEPROM.read (NOTES_ADDR + i); के लिए (uint8_t i = 0; i <10; i++) ड्रमपिन = EEPROM.read(PINS_ADDR + i); के लिए (uint8_t i = 0; i <10; i++) ड्रमवेलोसिटी = EEPROM.read(VELOCITIES_ADDR + i); }
पेडल और Arduino बूट के मामले में चर और प्रोग्रामिंग मोड का प्रारंभ एक साथ सक्रिय होता है।
शून्य एंटरप्रोग्रामिंग मोड () {
बूल कन्फर्मब्रेक = झूठा; uint8_t लाइनकंट = 0; uint8_t charCnt = 0; चार रीडचार = 0; जबकि (! कन्फर्मब्रेक) {अगर (सीरियल.उपलब्ध ()) {uartBuffer [charCnt] = Serial.read (); अगर (charCnt>= 29) पुष्टि करेंब्रेक = सच; अन्य charCnt++; } } सीरियल.प्रिंट्लन ("ओके"); स्टोरईईपीरोम (); }
शून्य initValues() {
#ifdef LOAD_DEFAULT_VALUES memcpy(drumNotes, DRUM_NOTES, 10); memcpy (ड्रम वेग, DRUM_VELOCITIES, 10); memcpy (ड्रमपिन, DRUM_PINS, 10); #else लोडईईपीरोम (); #अगर अंत }
1ms नोट होल्ड टाइम की देरी के साथ MIDI संचार हैंडलर
/* मिडी नोट फ़ंक्शन चलाएं */
शून्य मिडीऑट (enum DRUM_POSITION ड्रमइन) {
अगर (ड्रमइन == HIHAT) {// यदि HI-HAT मारा गया था, तो जांच करने की आवश्यकता है कि क्या पेडल दबाया गया है अगर (!digitalRead(drumPins[HIHAT_PEDAL])) {नोटऑन (0x90, ड्रमनोट्स [HIHAT_PEDAL], ड्रम वेलोसिटीज [HIHAT_PEDAL]); देरी(1); नोटऑन (0x90, ड्रमनोट्स[HIHAT_PEDAL], 0); } और { नोटऑन (0x90, ड्रमनोट्स [हिहाट], ड्रम वेलोसिटीज [हिहाट]); देरी(1); नोटऑन (0x90, ड्रमनोट्स [हिहाट], 0); } } और {// नियमित ड्रम मिडी ट्रांसमिशन नोटऑन (0x90, ड्रमनोट्स [ड्रमइन], ड्रम वेलोसिटीज [ड्रमइन]); देरी(1); नोटऑन (0x90, ड्रमनोट्स [ड्रमइन], 0); } }
शून्य नोटऑन (इंट सीएमडी, इंट पिच, इंट वेलोसिटी) { सीरियल.राइट (सीएमडी); सीरियल.राइट (पिच); सीरियल.राइट (वेग); }
सेटअप () और लूप () अनंत डिवाइस ऑपरेशन लूप के साथ कार्य करता है:
व्यर्थ व्यवस्था() {
सीरियल.बेगिन (115200);
के लिए (uint8_t i = 0; i <10; i++) {पिनमोड (i + 2, INPUT); } #ifdef PRINT_PADS_PIN_NUMBERS जबकि(true) {// के लिए अनंत डिबग लूप (uint8_t i = 0; i <10; i++) {if (!digitalRead(i + 2)) { Serial.print("Pin No: D"); सीरियल.प्रिंट (i + '0'); // संख्या को ASCII वर्ण में बदलें } } } #else initValues(); /* प्रोग्रामिंग मोड: यदि बूटिंग के दौरान दो पैडल दबाए जाते हैं - मोड सक्रिय होता है */ if (!digitalRead(drumPins[KICK]) && !digitalRead(drumPins[HIHAT_PEDAL])) enterProgrammingMode(); #अगर अंत }
शून्य लूप () { के लिए (uint8_t i = 1; i <9; i = i + 1) {currentState = digitalRead (drumPins); अगर (!currentState && पिछलास्टेट) midiOut(i); // राज्यों की तुलना करें और गिरने वाले किनारे का पता लगाएं पिछलास्टेट = करंटस्टेट ; } किक.अपडेट (); // किक ड्रम कस्टम डिबॉन्स एल्गोरिथम का उपयोग करता है अगर (kick.edge()) if (kick.falling()) midiOut(KICK); }
चरण 5: प्रोग्रामिंग बी: पायथन और यूजर इंटरफेस
पायथन यूजर इंटरफेस पहली नजर में समझने के लिए थोड़ा जटिल है, इसलिए हम इसकी मूल बातें समझाने की कोशिश करेंगे कि कैसे उपयोग करें, प्रत्येक बटन में क्या कार्य है और Arduino डिवाइस को ठीक से कैसे प्रोग्राम किया जाए।
यूजर इंटरफेस - एप्लीकेशन
UI हमारे ड्रम किट प्रोग्रामर के लिए एक ग्राफिकल प्रतिनिधित्व है, जिससे इसे उपयोग करना वास्तव में आसान हो जाता है और Arduino डिवाइस को कभी भी प्रोग्राम करना सुविधाजनक हो जाता है। UI में कई ग्राफिकल मॉड्यूल होते हैं जो उनके सुझाए गए ऑपरेशन से जुड़े होते हैं। आइए एक-एक करके उनकी समीक्षा करें:
- ड्रम सेट छवि: पायथन यूआई एक्स-वाई छवि निर्देशांक का उपयोग करता है यह निर्धारित करने के लिए कि कौन सा ड्रम प्रकार चुना गया था। यदि मान्य ड्रम क्षेत्र का चयन किया गया था, तो द्वितीयक IO संदेश दिखाई देता है, जिसमें समर्पित ड्रम पैड के लिए नोट, वेग और Arduino टर्मिनल के क्षेत्र होते हैं। इन मापदंडों को उपयोगकर्ता द्वारा सत्यापित और अनुमोदित किए जाने के बाद, इन मानों को सीधे Arduino डिवाइस पर प्रेषित किया जा सकता है।
- बाहरी नियंत्रक छवि: वीएसटी/संगीत निर्माण वातावरण के साथ मिडी ड्रम किट का उपयोग करने में सक्षम होने के लिए, सीरियल-टू-मिडी दुभाषिया चलाने की आवश्यकता है। मैंने हेयरलेस का उपयोग किया है, जो मुफ्त में उपलब्ध है और इसे सीधे हमारे यूआई से चलाया जा सकता है, बस इसकी छवि को दबाकर।
- COM पोर्ट सूची: Arduino के साथ संचार करने के लिए, इसके संलग्न COM पोर्ट को निर्दिष्ट करने की आवश्यकता है। ताज़ा करें बटन दबाकर सूची को ताज़ा किया जा रहा है।
- लोड/सहेजें कॉन्फ़िगरेशन: कोड में परिभाषित डिफ़ॉल्ट MIDI मान हैं, जिन्हें उपयोगकर्ता द्वारा UI के साथ बातचीत करके संशोधित किया जा सकता है। कॉन्फ़िगरेशन को एक विशिष्ट प्रारूप में config.txt फ़ाइल में परिभाषित किया गया है, जिसे उपयोगकर्ता द्वारा सहेजा या लोड किया जा सकता है।
- प्रोग्राम डिवाइस बटन: Arduino EEPROM में सभी संशोधित MIDI मानों को संग्रहीत करने के लिए, दो फुट पैडल (किक ड्रम और हाई-हैट पेडल) को दबाने की आवश्यकता है, इसके बाद डेटा के प्रसारण के पूरा होने की प्रतीक्षा करें। यदि कोई संचार समस्याएँ थीं, तो उचित पॉप-अप दिखाया जाएगा। यदि ट्रांसमिशन सफल होता है, तो UI अपना सफल संदेश दिखाएगा।
- बाहर निकलें बटन: उपयोगकर्ता की अनुमति के साथ बस एप्लिकेशन से बाहर निकलें।
पायथन कोड हाइलाइट्स
कोड में बहुत सी चीजें चल रही हैं, इसलिए हम पूरे कोड के बजाय लिखित कार्यों पर विस्तार करेंगे।
सबसे पहले, यूआई का उपयोग करने के लिए, कोड को काम करने के लिए, कई मॉड्यूल डाउनलोड करने की आवश्यकता है:
आयात osimport सूत्रण आयात tkinter tk के रूप में tkinter से आयात tkinter आयात से संदेश बॉक्स * जनहित याचिका से आयात ImageTk, छवि आयात numpy के रूप में np आयात सीरियल आयात ग्लोब
कुछ मॉड्यूल डिफ़ॉल्ट पायथन पैकेज में शामिल हैं। पीआईपी उपकरण के माध्यम से कई मॉड्यूल स्थापित किए जाने चाहिए:
पिप स्थापित तकिया
पिप इंस्टॉल numpy pip इंस्टॉल ScreenInfo
PyCharm के माध्यम से एप्लिकेशन चलाने की दृढ़ता से अनुशंसा की जाती है। भविष्य के रिलीज में, मैं परियोजना के लिए एक निष्पादन योग्य निर्यात करने की योजना बना रहा हूं।
संक्षिप्त कोड स्पष्टीकरण
यदि हम कार्यों और वर्गों के दृष्टिकोण से इसकी पंक्तियों को देखेंगे तो कोड को समझना बहुत आसान हो जाएगा:
1. मुख्य कार्य - यहाँ कोड शुरू होता है
अगर _name_ == '_main_': ड्रमकिट_गुई ()
2. ड्रम किट स्थिरांक, निर्देशांक और डिफ़ॉल्ट MIDI जानकारी
क्लास ड्रम: DRUM_TYPES = ["किक", "हिहाट", "स्नेयर", "क्रैश 1", "क्रैश 2", "टॉम हाई", "टॉम मिड", "टॉम लो", "राइड", "हिहत पेडल "," नियंत्रक "]
COORDINATES_X = [323, 117, 205, 173, 565, 271, 386, 488, 487, 135, 79]
COORDINATES_Y = [268, 115, 192, 40, 29, 107, 104, 190, 71, 408, 208] DIMS_WIDTH = [60, 145, 130, 120, 120, 70, 70, 130, 120, 70, 145] DIMS_LENGTH = [६०, ६०, ८०, ३५, ३५, ४०, ४०, ७०, ३५, १००, ५०]
DRUM_ENUM = ["किक", "स्नेयर", "हिहाट", "राइड", "क्रैश 1", "क्रैश 2", "टॉम हाई", "टॉम मिड", "टॉम लो", "हिहत पेडल"]
DRUM_NOTES = [३६, ४०, ४२, ५१, ४९, ५५, ४७, ४५, ४३, ४८] DRUM_VELOCITIES = [११०, १००, १००, ११०, ११०, ११०, ११०, ११०, ११०, ११०] DRUM_PINS = [८], ६, ४, ३, ११, ९, ५, १०, २, ७]
3. यूआई फंक्शंस - यूजर इंटरफेस और ग्राफिकल ऑब्जेक्ट्स को संभालना
डीईएफ़ सेट_एक्टिव (यूआई)
डीईएफ़ सेकेंडरी_यूई (ड्रम_टाइप)
वर्ग चयन यूआई (टीके फ्रेम)
कक्षा आवेदन (tk. Frame)
डीईएफ़ ड्रमकिट_गुई ()
def event_ui_clicked(ईवेंट)
डीईएफ़ गेटोरिजिन (स्वयं, घटना)
4. सीरियल संचार
डीईएफ़ get_serial_ports ()
def संचार_with_arduino (पोर्ट)
5. फाइलों के साथ काम करना: txt फाइल से सेटिंग्स को स्टोर/लोड करें
def save_config ()
def load_config ()
6. पायथन थ्रेडिंग क्षमताओं का उपयोग करके कोड से बाहरी एप्लिकेशन hairless.exe चलाना
कक्षा बाहरी निष्पादन योग्य थ्रेड (थ्रेडिंग। थ्रेड)
def run_hairless_executable ()
कोड को चलाने के लिए, फाइलों की एक सूची है जिसे प्रोजेक्ट फ़ोल्डर में संलग्न करना होगा:
- config.txt: सेटिंग्स फ़ाइल
- hairless.exe: गंजा मिडी कनवर्टर
- ड्रमकिट.पीएनजी: छवि जो हमारे यूआई पर सभी क्लिक करने योग्य ड्रम पैड को परिभाषित करती है (इस चरण से डाउनलोड की जानी चाहिए 'छवियां सेट)
- ड्रमगुई.पीई: प्रोजेक्ट कोड
यह वह सब कुछ है जिस पर हमें काम करने के लिए जोर देने की जरूरत है। प्रोजेक्ट में फ़ाइलें जोड़ना बहुत महत्वपूर्ण है: ड्रम सेट छवि, hairless.exe निष्पादन योग्य और सेटिंग्स फ़ाइल config.txt।
और.. यहाँ हमने किया है!:)
आशा है कि आपको यह निर्देश योग्य उपयोगी लगेगा।
पढ़ने के लिए धन्यवाद!:)
सिफारिश की:
Arduino Mega2560 के साथ घर का बना इलेक्ट्रॉनिक ड्रम किट: 10 कदम (चित्रों के साथ)
Arduino Mega2560 के साथ होममेड इलेक्ट्रॉनिक ड्रम किट: यह मेरा Arduino प्रोजेक्ट है। Arduino के साथ ई-ड्रम किट कैसे बनाएं?नमस्कार प्रिय पाठक!-ऐसा प्रोजेक्ट क्यों कर रहे हैं?सबसे पहले क्योंकि अगर आपको इस तरह की चीजें पसंद हैं, तो आप वास्तव में काम करने की प्रक्रिया का आनंद लेंगे। दूसरा, क्योंकि यह वास्तव में सस्ता सह
एक्स-बॉक्स रॉक बैंड ड्रम को मिडी स्टैंड अलोन इलेक्ट्रॉनिक ड्रम में बदलें: 4 कदम (चित्रों के साथ)
एक्स-बॉक्स रॉक बैंड ड्रम को मिडी स्टैंड अलोन इलेक्ट्रॉनिक ड्रम में बदल दें। इसे एक स्टैंडअलोन इलेक्ट्रिक ड्रम सेट में बदल दें। पीजो सेंसर से एनालॉग वैल्यू को पढ़ना और उसे मिडी कॉमन में बदलना
मेकी मेकी इलेक्ट्रिक ड्रम / ड्रम मशीन: 8 कदम
मेकी मेकी इलेक्ट्रिक ड्रम / ड्रम मशीन: इलेक्ट्रिक ड्रम का एक सेट बनाने के तरीके पर यह ट्यूटोरियल, मेकी मेकी प्रतियोगिता में एक प्रविष्टि है। सामग्री, उपलब्धता और व्यक्तिगत विकल्पों पर भिन्न होगी। कार्डबोर्ड को अधिक टिकाऊ सामग्री के साथ बदला जा सकता है, और स्तरित किया जा सकता है फोम के साथ/टेक्स के लिए अन्य
DIY इलेक्ट्रॉनिक ड्रम (ड्रम मॉड्यूल अनुरोधित): 4 कदम
DIY इलेक्ट्रॉनिक ड्रम (ड्रम मॉड्यूल अनुरोध): इसलिए पिछले साल मुझे अपने गृहणियों के लिए चीजों को शांत रखने की जरूरत थी, और एक ड्रमर के रूप में जिसने थोड़ा संयम बरता। मैंने इंटरनेट पर चारों ओर सर्फ किया और हैक-ए-डे पर एक DIY ड्रम सेट के बारे में पढ़ने के बाद कुछ बेहतरीन वेब साइट मिलीं, और आप क्या जानते हैं, एक सोम
ड्रम पहनें: आपके कपड़ों में ड्रम!: 7 कदम
ड्रम पहनें: आपके कपड़ों में ड्रम!: किसी भी सिटी बस के सवारों को देखें। उनमें से कई अपने संगीत खिलाड़ियों में शामिल हैं, ताल के साथ टैप करते हुए, यह दिखाते हुए कि उनके पास उनके निपटान में ड्रम हैं। अब दिखावा करने की कोई जरूरत नहीं है! ड्रम पहनने से आकांक्षी ड्रमर पूरी तरह से पोर्टेबल और फू