हाय दोस्तों, पिछले कुछ हफ्तों के दौरान, मैं गिटार के लिए अपने प्यार के साथ फिर से जुड़ने पर काम कर रहा हूं। बॉक्स गिटार बजाना मैं कैसे कुछ साल पहले आराम कर रहा था इससे पहले कि सैक्सोफोन ने संभाली। गिटार पर वापस जाने के बाद, 3 साल के बाद शायद ही कभी एक राग को मारते हुए, मैंने अन्य चीजों के बीच खोजा कि मुझे नहीं पता था कि प्रत्येक स्ट्रिंग को कैसे ध्वनि चाहिए, इसे अपने दोस्त के शब्दों में कहें, "मेरी सुनवाई अब नहीं हुई थी" इसके परिणामस्वरूप, मैं कीबोर्ड या मोबाइल ऐप की सहायता के बिना गिटार को ट्यून करने में सक्षम नहीं था, जिसे मैंने बाद में डाउनलोड किया था। सप्ताह कुछ दिनों पहले तक चले गए जब मुझ में निर्माता प्रेरित हो गया और मैंने एक Arduino आधारित गिटार ट्यूनर बनाने का फैसला किया । आज के ट्यूटोरियल में, मैं आपको अपने स्वयं के DIY Arduino गिटार ट्यूनर बनाने का तरीका बताऊंगा ।
गिटार ट्यूनर कैसे काम करता है
इससे पहले कि हम इलेक्ट्रॉनिक्स की ओर बढ़ें, निर्माण के पीछे के सिद्धांत को समझना महत्वपूर्ण है। वर्णमाला द्वारा दर्शाए गए 7 प्रमुख संगीत नोट हैं; ए, बी, सी, डी, ई, एफ, जी और आमतौर पर एक और ए के साथ समाप्त होता है जो हमेशा पहले ए की तुलना में एक सप्तक पर होता है। संगीत में इन नोटों के कई संस्करण पहले ए और अंतिम ए की तरह मौजूद होते हैं। ये नोट पिच के रूप में जानी जाने वाली ध्वनि की विशेषताओं में से हर एक को उनकी भिन्नता और एक दूसरे से अलग किया जाता है। पिच को ध्वनि की उच्चता या नीचता के रूप में परिभाषित किया गया है और इसके संकेत उस ध्वनि की आवृत्ति द्वारा दिए गए हैं। चूंकि इन नोटों की आवृत्ति ज्ञात है, इसलिए यह निर्धारित करने के लिए कि गिटार ट्यून है या नहीं, हमें केवल विशेष स्ट्रिंग के नोट की आवृत्ति की तुलना उस नोट की वास्तविक आवृत्ति से करने की आवश्यकता है जो स्ट्रिंग का प्रतिनिधित्व करती है।
7 संगीत नोटों की आवृत्ति हैं:
ए = 27.50 हर्ट्ज
बी = 30.87 हर्ट्ज
सी = 16.35 हर्ट्ज
डी = 18.35 हर्ट्ज
ई = 20.60 हर्ट्ज
एफ = 21.83 हर्ट्ज
जी = 24.50 हर्ट्ज
इन नोटों की प्रत्येक भिन्नता हमेशा FxM के बराबर पिच पर होती है जहाँ F आवृत्ति है और M एक गैर-शून्य पूर्णांक है। इस प्रकार पिछले ए के लिए जो पहले वर्णित है, पहले ए की तुलना में एक सप्तक पर है, आवृत्ति है;
27.50 x 2 = 55 हर्ट्ज।
गिटार (लीड / बॉक्स गिटार) में आमतौर पर खुले स्ट्रिंग पर ई, ए, डी, जी, बी, ई के नोटों के 6 तार होते हैं। हमेशा की तरह, अंतिम ई पहले ई की तुलना में एक सप्तक पर होगा। हम इन नोटों की आवृत्तियों का उपयोग करके गिटार को ट्यून करने में मदद करने के लिए अपने गिटार ट्यूनर को डिजाइन करेंगे।
मानक गिटार ट्यूनिंग के अनुसार, प्रत्येक स्ट्रिंग का नोट और संबंधित आवृत्ति नीचे दी गई तालिका में दिखाई गई है।
स्ट्रिंग्स |
आवृत्ति |
नोटेशन |
1 (ई) |
329.63 हर्ट्ज |
ई 4 |
2 (बी) |
246.94 हर्ट्ज |
बी 3 |
3 (जी) |
196.00 हर्ट्ज |
जी 3 |
4 (D) |
146.83 हर्ट्ज |
डी 3 |
5 (ए) |
110.00 हर्ट्ज |
ए 2 |
6 (ई) |
82.41 हर्ट्ज |
ई २ |
परियोजना प्रवाह काफी सरल है; हम गिटार द्वारा उत्पन्न ध्वनि संकेत को एक आवृत्ति में परिवर्तित करते हैं, फिर ट्यून किए जा रहे स्ट्रिंग के सटीक आवृत्ति मूल्य के साथ तुलना करते हैं। गिटारवादक एक एलईडी का उपयोग करते हुए अधिसूचित किया जाता है जब मूल्य सहसंबद्ध होता है।
आवृत्ति का पता लगाने / रूपांतरण में 3 मुख्य चरण शामिल हैं;
- amplifying
- offsetting
- डिजिटल रूपांतरण के अनुरूप (नमूनाकरण)
उत्पादित ध्वनि संकेत Arduino के ADC को पहचानने के लिए बहुत कमजोर होगा, इसलिए हमें संकेत को बढ़ाना होगा। प्रवर्धन के बाद, सिग्नल की क्लिपिंग को रोकने के लिए Arduino के ADC द्वारा पहचानने योग्य सीमा के भीतर सिग्नल को रखने के लिए, हम सिग्नल के वोल्टेज को ऑफसेट करते हैं। ऑफसेट करने के बाद, सिग्नल को फिर Arduino ADC में भेजा जाता है, जहां इसका नमूना लिया जाता है और उस ध्वनि की आवृत्ति प्राप्त की जाती है।
आवश्यक घटक
इस परियोजना के निर्माण के लिए निम्नलिखित घटकों की आवश्यकता होती है;
- Arduino Uno X1
- LM386 एक्स 1
- संघनित्र Mic X1
- माइक्रोफोन / ऑडियो जैक X1
- 10k पोटेंशियोमीटर एक्स 1
- O.1uf संधारित्र x2
- 100ohms रोकनेवाला x4
- 10ohms रोकनेवाला X1
- 10uf संधारित्र x3
- 5 मिमी पीले एलईडी एक्स 2
- 5 मिमी हरी एलईडी X1
- सामान्य रूप से पुश बटन x6 खोलें
- जम्पर के तार
- ब्रेड बोर्ड
schematics
नीचे दिए गए गिटार ट्यूनर सर्किट आरेख में दिखाए गए घटकों को कनेक्ट करें ।
पुश बटन पुल अप / डाउन रेसिस्टर्स के बिना जुड़े हुए हैं क्योंकि अरूडिनो इन बिल्ट पुलअप रेसिस्टर्स का उपयोग किया जाएगा। यह सुनिश्चित करना है कि सर्किट यथासंभव सरल है।
गिटार ट्यूनर के लिए Arduino कोड
इस गिटार ट्यूनर प्रोजेक्ट के लिए कोड के पीछे एल्गोरिदम सरल है। किसी विशेष स्ट्रिंग को ट्यून करने के लिए, गिटारवादक इसी पुशबटन को दबाकर स्ट्रिंग का चयन करता है और नाटकों को एक खुली स्ट्रिंग देता है। ध्वनि को प्रवर्धन चरण द्वारा एकत्र किया जाता है और Arduino ADC पर पारित किया जाता है। आवृत्ति को डिकोड और तुलना की जाती है। जब स्ट्रिंग से इनपुट आवृत्ति निर्दिष्ट आवृत्ति से कम होती है, तो उस स्ट्रिंग के लिए पीले एल ई डी में से एक यह दर्शाता है कि स्ट्रिंग को कड़ा किया जाना चाहिए। जब मापा आवृत्ति उस स्ट्रिंग के लिए निर्धारित आवृत्ति से अधिक होती है, तो एक और एलईडी आती है। जब आवृत्ति उस स्ट्रिंग के लिए निर्धारित सीमा के भीतर होती है तो गिटारवादक का मार्गदर्शन करने के लिए हरी एलईडी आती है ।
पूरा Arduino कोड अंत में दिया गया है, यहां हमने कोड के महत्वपूर्ण भागों के बारे में संक्षेप में बताया है।
हम स्विच को पकड़ने के लिए एक सरणी बनाकर शुरू करते हैं।
int buttonarray = {13, 12, 11, 10, 9, 8}; //
इसके बाद, हम स्ट्रिंग्स में से प्रत्येक के लिए इसी आवृत्ति को रखने के लिए एक सरणी बनाते हैं।
फ्लोट फ्रीकार्रे = {82.41, 110.00, 146.83, 196.00, 246.94, 329.63}, // सभी हर्ट्ज में;
ऐसा किए जाने के बाद, हम फिर उन पिनों की घोषणा करते हैं जिनसे एल ई डी जुड़े हुए हैं और अन्य चर जिनका उपयोग एडीसी से आवृत्ति प्राप्त करने के लिए किया जाएगा।
int लोलेड = 7; int highLed = 6; int justRight = 5; #define LENGTH 512 बाइट रॉडेटा; इंट काउंट;
अगला शून्य सेटअप () फ़ंक्शन है।
यहां हम प्रत्येक पिन के लिए Arduino पर आंतरिक खींच को सक्षम करने से शुरू करते हैं जिसमें स्विच जुड़ा हुआ है। जिसके बाद हम पिन सेट करते हैं जिससे एलईड आउटपुट के रूप में जुड़े होते हैं और डेटा को प्रदर्शित करने के लिए सीरियल मॉनिटर लॉन्च करते हैं।
शून्य सेटअप () { for (int i = 0; मैं <= 5; i ++) { pinMode (buttonarray, INPUT_PULLUP); } पिनमोड (निचला, OUTPUT); पिनमोड (उच्चतर, OUTPUT); पिनमोड (justRight, OUTPUT); सीरियल.बेगिन (115200); }
अगला, शून्य लूप फ़ंक्शन है, हम आवृत्ति का पता लगाने और तुलना को लागू करते हैं ।
शून्य लूप () { if (गिनती <LENGTH) { गिनती ++; रॉडेटा = एनालॉगरेड (ए ०) >> २; } और { योग = 0; pd_state = 0; int period = 0; for (i = 0; i <len; i ++) { // स्वतःसंबंध योग__ = योग; योग = 0; for (k = 0; k <len-i; k ++) sum + = (rawData-128) * (rawData-128) / 256; // Serial.println (sum); // पीक डिटेक्ट स्टेट मशीन अगर (pd_state == 2 && (sum-sum_old) <= 0) { period = i; pd_state = 3; } अगर (pd_state == 1 && (sum> थ्रेश) && (sum-sum_old)> 0) pd_state = 2; if (i) { थ्रू = योग * 0.5; pd_state = 1; } } // Hz में पहचान की आवृत्ति ( थ्रू > 100) { freq_per = sample_freq / period; सिरियल.प्रिंटल (फ्रीक_पर); for (int s = 0; s <= 5; s ++) { if (digitalRead (buttonarray) == High) { if (freq_per - freqarray <0) { digitalWrite (lowerLed, HIGH); } और अगर (freq_per - freqarray> 10) { digitalWrite (highLed, HIGH); } और { digitalWrite (justRight, HIGH); } } } } गिनती = 0; } }
एक प्रदर्शन वीडियो के साथ पूरा कोड नीचे दी गई है। कोड को अपने Arduino बोर्ड में अपलोड करें और दूर भाग जाएं।