Obsah:

Tuner: 9 krokov
Tuner: 9 krokov

Video: Tuner: 9 krokov

Video: Tuner: 9 krokov
Video: Научу тебя играть на гитаре за 10 минут 2024, November
Anonim
Image
Image
Zoznam vybavenia (vyfoťte predstavenstvo a Kevinovu súťaž)
Zoznam vybavenia (vyfoťte predstavenstvo a Kevinovu súťaž)

Tento projekt bol navrhnutý na výrobu gitarového tunera pomocou Vivado a 7-segmentového displeja. Akonáhle tuner nájde frekvenciu vstupného zvuku, tuner porovná túto hodnotu so zoznamom pevne zakódovaných hodnôt pre presné frekvencie, ktoré sú známe ako štandardná frekvencia pre správnu výšku tónu. Potom tuner zobrazí, ako blízko alebo ako ďaleko je váš zvuk od požadovanej noty. Je zaujímavé, že zvuková vlna je kombináciou viacerých sínusových priebehov so skutočnými a imaginárnymi zložkami. Aj keď sa to neznámym ľuďom môže zdať ťažké pracovať, existuje niekoľko spôsobov, ktorými môžeme vlnu analyzovať so skutočnými a imaginárnymi hodnotami.

Demo:

Krok 1: Zoznam vybavenia (vyfoťte predstavenstvo a Kevinovu súťaž)

Najprv potrebujeme dosku Basys 3 a počítač, ktorý podporuje nasledujúce programy. Garageband/Audacity alebo iný DAW - nahrávanie cez mikrofón a export súborov wav

Python - schopný používať pylab a scipy na vzorkovanie a fft

Vivado - pripojiť sa k doske Basys 3 a vizuálne vidieť výsledky

Krok 2: Prehľad

Prehľad
Prehľad

Tuner sa skladá z niekoľkých dôležitých komponentov: mikrofón, sampler, FFT (Fast Fourierova transformácia), komparátor, dekodér a displej. Účelom mikrofónu je zachytiť vstupný priebeh. Vzorkovač prijíma výstupný signál mikrofónu a pomocou FFT prevádza signál na výstup vo veľkostiach vo frekvenciách. Potom pomocou výstupu FFT a zistenia maximálnej veľkosti a frekvencie s ňou spojenej vydelenej 2 je možné nájsť frekvenciu spojenú s výškou priebehu vlny. Táto hodnota potom môže ísť do komparátora. Potom sa porovná s vyhľadávacou tabuľkou, ktorá už má nastavené frekvenčné hodnoty pre perfektné výšky všetkých tónov. Komparátor dostane vstup pre požadovanú notu, ktorú potom môže z vyhľadávacej tabuľky priradiť k požadovanej note k jej správnej frekvencii. Potom komparátor vyberie notu s najbližšou frekvenciou k maximálnej frekvencii. Komparátor porovná tieto dve hodnoty a zblízka uvidí, že hodnota frekvencie je na požadovanej úrovni, a potom tieto údaje vloží do signálu. Komparátor pošle tento signál do dekodéra, kde dekodér vyberie vstupy pre anódy 7-segmentového displeja, aby ukázal presnosť noty.

Krok 3: Súbor Wav

Súbor Wav
Súbor Wav

V tomto kroku vezmeme wav súbor výšky tónu a pokúsime sa vydať frekvenciu tohto tónu.

Najprv potrebujete súbor wav poznámky. V tomto prípade použijeme 16 -bitový stereofónny súbor wav so vzorkovacou frekvenciou 44,1 kHz. Môžete to vytvoriť v DAW, ako napríklad Garageband, alebo stiahnuť. V tomto prípade si môžete stiahnuť sínusovú vlnu A4 440 Hz, ktorú sme vytvorili na Garageband, tu.

Krok 4: Python- Použitie Pylabu a Scipy

Python- Použitie Pylabu a Scipy
Python- Použitie Pylabu a Scipy

Na vykonanie „rýchlej Fourierovej transformácie“sme použili knižnicu Python. Online zdroj nám umožnil napodobniť a zistiť, čo je užitočné v jazyku pylab a scipy.

1. Ak ste nenainštalovali pylab alebo scipy, musíte to urobiť. Alebo má Pycharm veľmi dobrú vlastnosť, keď sa pokúšate importovať pylab alebo scipy, je tu podčiarknuté podčiarknutie, ktoré vám hovorí, že ste ešte nenainštalovali knižnicu. Potom ich môžete nainštalovať priamo stlačením červenej žiarovky (zobrazí sa, keď umiestnite kurzor do blízkosti vlnitého podčiarknutia).

2. Pomocou funkcie scipy.io.wavfile.read načítajte a vytiahnite údaje zo vzorového súboru wav. Prejdite údajmi na stránke pylab.fft a vráti vám zoznam veľkostí výkonu.

3. Potom nájdite maximum energie vyžarovanej zo zoznamu. Vyhľadajte index zoznamu, kde sa vyskytuje maximálny výkon, pretože je to najrýchlejší spôsob, ako zistiť, aká frekvencia je spojená s týmto výkonom. Nakoniec vráťte maximálnu frekvenciu. Pretože neskôr potrebujeme zadať binárny frekvenčný signál do kódu VHDL, môžeme frekvenciu v floate previesť na binárnu a vrátiť ju.

Krok 5: Vzorkovanie v Pythone a FFT (Zobraziť kód a jeho výsledky)

V tomto kroku prejdite na nasledujúci odkaz na odber vzoriek a FFT.

samcarcagno.altervista.org/blog/basic-sound… Náš kód:

Po inštalácii pylab a scipy je možné importovať a čítať súbory wav.

z pylab import*zo scipy.io import wavfile

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

Potom snd.shape predstavuje vzorové body a počet kanálov. V našom prípade vzorkovacie body závisia od toho, ako dlho je súbor wav a počet kanálov 2, pretože je stereofónny.

Potom snd = snd / (2. ** 15) …… xlabel („čas (ms)“)

organizuje časový signál do poľa.

Potom FFT vytvorí pole vo frekvencii a veľkosti (výkon)

Potom sa pomocou slučky cyklu zistí maximálna veľkosť a frekvencia s ňou spojená. Táto frekvencia/2 predstavuje výšku vlnového súboru.

Potom pomocou nášho vlastného kódu bolo celé číslo predstavujúce frekvenciu prevedené na 12 -bitové binárne číslo a bol v ňom vytvorený textový súbor.

Krok 6: Vivado (komparátor)

Vivado (porovnávač)
Vivado (porovnávač)

V tejto časti procesu potrebujeme komparátor na porovnanie dvoch vstupných frekvencií.

1. Vytvoril komparátor na porovnanie, či je vstupná (prijímacia) frekvencia vyššia, nižšia alebo v medziach definovaných v rozpätí 2 Hz. (typický gitarový tuner sa pohybuje od e2 do g5, 82 Hz až 784 Hz).

2. Pri vytváraní rezervy 2 Hz sme použili RCA na pridanie „000000000010“k frekvencii prijímača a skontrolovali, kde je stále príliš nízka na vstup užívateľa. Ak je to tak, jednobitový signál „vysoký“<= „0“, „nízky“<= „1“. Potom do užívateľského vstupu pridáme „000000000010“, aby sme zistili, či je vstup prijímača ešte vyšší. V takom prípade „vysoká“<= „1“, „nízka“<= „0“. Ani jeden prípad nevráti „0“.

3. Pretože ďalšia časť modulu potrebuje konkrétne 4-bitové údaje na zistenie, čo je poznámka príjemcu, nielen vrátenie 2 porovnateľných výstupov (nízky a vysoký), musíme vrátiť kódový sprievodca do poznámky, ktorý je spojený s frekvencia. Pozrite sa na tabuľku nižšie:

C | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

A | 0001

A# | 1001

B | 0010

Použitie niekoľkých príkazov if na ich kategorizáciu do poznámky a ich zakódovanie do toho, čo je potrebné pre sedemsegmentový dekodér.

Krok 7: OBRAZY ZÁKLADOV 3 doska

OBRAZY ZÁKLADOV 3 doska
OBRAZY ZÁKLADOV 3 doska

Krok 8: Vivado (7 -segmentový dekodér s multiplexovaním)

Vivado (7 -segmentový dekodér s multiplexovaním)
Vivado (7 -segmentový dekodér s multiplexovaním)

Všetko potrebuje displej. Je to dôležitý faktor, ktorý určuje hodnotu dizajnu. Preto musíme vytvoriť displej pomocou sedemsegmentového dekodéra, ktorý by nám umožnil predviesť našu schopnosť navrhnúť tuner na doske B. Pomohlo by nám to aj pri testovaní a ladení.

Sedemsegmentový dekodér obsahuje vstupy s názvom Note, Low, High a CLK pri výstupe SSEG, AN a Fiz_Hz. Vyššie je uvedený obrázok blokového diagramu, ktorý nám pomáha porozumieť návrhu.

Účelom dvoch oddelených nízkych a vysokých vstupov je poskytnúť návrhárovi komparátora voľnosť pri manipulácii s tým, či je zvuková (vlnová) frekvencia vyššia alebo nižšia ako vstupná frekvencia (Fix_Hz), ktorú chce používateľ porovnávať. Výstup SSEG navyše predstavuje zobrazenie siedmich segmentov a bodku vedľa, zatiaľ čo AN predstavuje anódy, pre ktoré sa rozsvieti sada siedmich segmentov displeja.

V tomto sedemsegmentovom dekodéri hrajú hodiny (CLK) dôležitú úlohu pri zobrazovaní dvoch rôznych hodnôt na dvoch alebo viacerých rôznych anódach. Pretože nám doska neumožňuje zobrazovať dve rôzne hodnoty súčasne, musíme použiť multiplexovanie na zobrazenie hodnoty po jednej, pričom prepíname na inú hodnotu dostatočne rýchlo, aby ju naše oči nedokázali zachytiť. Tu vstupuje do hry vstup CLK.

Viac informácií nájdete v zdrojovom kóde.

Krok 9: Vivado (kombinácia komponentov)

Po dokončení všetkých modulov (prijímač pythonu, komparátor, sedemsegmentový dekodér atď.) Sme ich potom spojili pomocou väčšieho modulu. Rovnako ako na obrázku v časti „Prehľad“, každý signál zodpovedajúcim spôsobom prepojíme. Pre informáciu si pozrite náš zdrojový kód "SW_Hz.vhd".

Ďakujem. Dúfam, že sa vám bude páčiť.

Odporúča: