विषयसूची:

ट्यूनर: 9 कदम
ट्यूनर: 9 कदम

वीडियो: ट्यूनर: 9 कदम

वीडियो: ट्यूनर: 9 कदम
वीडियो: Chalti Hai Kya 9 Se 12 Full Song | Judwaa 2 | Varun | Jacqueline | Taapsee | David Dhawan |Anu Malik 2024, नवंबर
Anonim
Image
Image
उपकरण सूची (बोर्ड और केविन के COMP की एक तस्वीर लें)
उपकरण सूची (बोर्ड और केविन के COMP की एक तस्वीर लें)

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

डेमो:

चरण 1: उपकरण सूची (बोर्ड और केविन के COMP की एक तस्वीर लें)

सबसे पहले हमें एक बेसिस 3 बोर्ड और एक कंप्यूटर चाहिए जो निम्नलिखित कार्यक्रमों का समर्थन करता है। गैरेजबैंड/ऑडेसिटी या अन्य डीएडब्ल्यू - एक माइक्रोफोन के माध्यम से रिकॉर्ड करने और वावफाइल निर्यात करने के लिए

पायथन - नमूनाकरण और fft. के लिए पाइलैब और scipy का उपयोग करने में सक्षम

विवाडो - बेसिस 3 बोर्ड से जुड़ने और परिणाम देखने के लिए

चरण 2: अवलोकन

अवलोकन
अवलोकन

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

चरण 3: WAV फ़ाइल

WAV फ़ाइल
WAV फ़ाइल

इस चरण में, हम एक पिच की एक wav फ़ाइल लेंगे और उस पिच की आवृत्ति को आउटपुट करने का प्रयास करेंगे।

सबसे पहले आपको नोट की एक wav फाइल चाहिए। इस उदाहरण में हम 44.1kHz की नमूना दर के साथ 16 बिट स्टीरियो WAV फ़ाइल का उपयोग करेंगे। इसे या तो गैराजबैंड जैसे डीएडब्ल्यू में बनाया जा सकता है या डाउनलोड किया जा सकता है। इस उदाहरण के लिए, गैराजबैंड पर हमारे द्वारा उत्पन्न A4 440Hz साइन वेव को यहां डाउनलोड किया जा सकता है।

चरण 4: पायथन- पाइलैब और स्किपी का उपयोग

पायथन- पाइलैब और स्किपी के उपयोग
पायथन- पाइलैब और स्किपी के उपयोग

हमने "फास्ट फूरियर ट्रांसफॉर्म" करने के लिए पायथन लाइब्रेरी का इस्तेमाल किया। ऑनलाइन संसाधन ने हमें नकल करने और यह देखने की अनुमति दी कि पाइलैब और स्सिपी में क्या उपयोगी है।

1. यदि आपने pylab या scipy स्थापित नहीं किया है, तो आपको ऐसा करने की आवश्यकता है। या, Pycharm में एक बहुत अच्छी विशेषता है, जब pylab या scipy को आयात करने का प्रयास किया जाता है, तो एक स्क्विगली अंडरलाइन आपको बता रही है कि आपने अभी तक लाइब्रेरी स्थापित नहीं की है। फिर आप उन्हें सीधे लाल बत्ती-बल्ब दबाकर स्थापित कर सकते हैं (यह तब दिखाई देगा जब आप अपने कर्सर को स्क्विगली अंडरलाइन के पास रखेंगे)।

2. scipy.io.wavfile.read फ़ंक्शन का उपयोग करके, नमूना wav फ़ाइल से डेटा पढ़ें और निकालें। pylab.fft द्वारा डेटा के माध्यम से चलाएं, यह आपको शक्ति के लिए परिमाण की एक सूची लौटाएगा।

3. फिर सूची से उत्सर्जित अधिकतम शक्ति ज्ञात कीजिए। सूची सूचकांक की तलाश करें जहां अधिकतम शक्ति होती है क्योंकि उस शक्ति के साथ कौन सी आवृत्ति संबद्ध होती है, इसे खोजने का तेज़ तरीका। अंत में अधिकतम आवृत्ति लौटाएं। चूंकि हमें बाद में वीएचडीएल कोड में बाइनरी फ़्रीक्वेंसी सिग्नल इनपुट करने की आवश्यकता होती है, इसलिए हम फ्लोट में फ़्रीक्वेंसी को बाइनरी में बदल सकते हैं, और इसे वापस कर सकते हैं।

चरण 5: पायथन-सैंपलिंग और एफएफटी (कोड और उसके परिणाम दिखाएं)

इस चरण में, नमूना और एफएफटी के लिए नीचे दिए गए इस लिंक पर पूरा क्रेडिट जाता है।

samcarcagno.altervista.org/blog/basic-sound…हमारा कोड:

pylab और scipy स्थापित होने के बाद, wav फ़ाइलें आयात और पढ़ने में सक्षम हैं।

पाइलैब से आयात * scipy.io से आयात wavfile

sampFreq, snd = wavfile.read ('440_sine.wav')

फिर snd.shape नमूना बिंदुओं और चैनलों की संख्या का प्रतिनिधित्व करता है। हमारे मामले में, नमूना बिंदु इस बात पर निर्भर करता है कि वावफाइल कितना लंबा है और चैनलों का # 2 है क्योंकि यह स्टीरियो है।

फिर snd = snd / (2.**15)…… xlabel('समय (ms)')

समय संकेत को एक सरणी में व्यवस्थित करता है।

फिर एफएफटी आवृत्ति और परिमाण (पावर) में एक सरणी बनाता है

फिर थोड़ी देर के लूप के माध्यम से अधिकतम परिमाण और उससे जुड़ी आवृत्ति पाई जाती है। वह आवृत्ति / 2 वावफाइल की पिच का प्रतिनिधित्व करती है।

फिर हमारे अपने कोड का उपयोग करते हुए, आवृत्ति का प्रतिनिधित्व करने वाले पूर्णांक को 12 बिट बाइनरी नंबर में बदल दिया गया और उसमें उस नंबर के साथ एक टेक्स्ट फ़ाइल बनाई गई।

चरण 6: विवाडो (तुलनित्र)

विवाडो (तुलनित्र)
विवाडो (तुलनित्र)

प्रक्रिया के इस भाग में, हमें दो इनपुट आवृत्तियों की तुलना करने के लिए एक तुलनित्र की आवश्यकता होती है।

1. तुलना करने के लिए एक तुलनित्र बनाया गया कि इनपुट (रिसीवर) आवृत्ति अधिक है, कम है या 2 हर्ट्ज मार्जिन रेंज परिभाषित नोट के भीतर है। (सामान्य गिटार ट्यूनर e2 से g5, 82 Hz से 784 Hz तक होता है)।

2. 2 हर्ट्ज का मार्जिन बनाते समय, हमने रिसीवर आवृत्ति में "000000000010" जोड़ने के लिए आरसीए का उपयोग किया, और जांच की कि यह उपयोगकर्ता इनपुट के लिए अभी भी बहुत कम है। यदि ऐसा है, तो सिंगल बिट सिग्नल "हाई" <= '0', "लो" <= '1'। फिर हम उपयोगकर्ता इनपुट में "000000000010" जोड़ते हैं, देखते हैं कि रिसीवर इनपुट उससे भी अधिक है या नहीं। यदि ऐसा है, तो "उच्च" <= '1', "निम्न" <= '0'। न तो मामला दोनों '0' लौटाएगा।

3. चूंकि मॉड्यूल के अगले भाग को यह बताने के लिए एक विशिष्ट 4-बिट डेटा की आवश्यकता होती है कि रिसीवर नोट क्या है, न केवल 2 तुलनात्मक आउटपुट (निम्न और उच्च) लौटा रहा है, हमें कोड सहयोगी को नोट करने के लिए वापस करने की आवश्यकता है, जिसके साथ संबद्ध है आवृत्ति। कृपया नीचे दिए गए चार्ट को देखें:

सी | 0011

सी# | १०११

डी | 0100

डी# | ११००

ई | 0101

एफ | 0110

एफ # | १११०

जी | 0111

जी# | ११११

ए | 0001

ए# | 1001

बी | 0010

नोट में वर्गीकृत करने के लिए कई if कथनों का उपयोग करना और उन्हें सात खंड डिकोडर के लिए आवश्यक चीज़ों में एन्कोड करना।

चरण 7: आधार 3 बोर्ड के चित्र

आधार 3 बोर्ड के चित्र
आधार 3 बोर्ड के चित्र

चरण 8: विवाडो (मल्टीप्लेक्सिंग के साथ 7 सेगमेंट डिकोडर)

विवाडो (मल्टीप्लेक्सिंग के साथ 7 सेगमेंट डिकोडर)
विवाडो (मल्टीप्लेक्सिंग के साथ 7 सेगमेंट डिकोडर)

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

एक सात-खंड डिकोडर में SSEG, AN और Fiz_Hz को आउटपुट करते हुए Note, Low, High और CLK नाम के इनपुट होते हैं। डिजाइन को समझने में हमारी मदद करने के लिए ऊपर ब्लॉक आरेख की एक तस्वीर है।

कम और उच्च इनपुट के दो अलग-अलग होने का उद्देश्य तुलनित्र के डिजाइनर को यह हेरफेर करने की स्वतंत्रता प्रदान करना है कि क्या ध्वनि (लहर) आवृत्ति इनपुट आवृत्ति (फिक्स_एचजेड) से अधिक या कम है जिसे उपयोगकर्ता तुलना करना चाहता है। इसके अलावा, आउटपुट SSEG सात खंडों के प्रदर्शन और अगले बिंदु का प्रतिनिधित्व करता है जबकि AN एनोड का प्रतिनिधित्व करता है जिसके लिए सात खंडों का सेट प्रकाश में आता है।

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

अधिक जानकारी के लिए कृपया स्रोत कोड देखें।

चरण 9: विवाडो (घटकों का संयोजन)

प्रत्येक मॉड्यूल (पायथन रिसीवर, तुलनित्र, सात खंड डिकोडर, आदि) के पूरा होने के बाद, हम एक बड़े मॉड्यूल का उपयोग करके एक साथ रखते हैं। दिखाए गए "ओवर व्यू" सेक्शन के तहत चित्र की तरह, हम प्रत्येक सिग्नल को उसी के अनुसार जोड़ते हैं। संदर्भ के लिए, कृपया हमारा स्रोत कोड "SW_Hz.vhd" देखें।

धन्यवाद। उम्मीद है तुम्हें मजा आया होगा।

सिफारिश की: