Satura rādītājs:

Tuner: 9 soļi
Tuner: 9 soļi

Video: Tuner: 9 soļi

Video: Tuner: 9 soļi
Video: Perfect Guitar Tuner (9 String Standard = C# F# B E A D G B E) 2024, Jūlijs
Anonim
Image
Image
Aprīkojuma saraksts (uzņemiet tāfeles attēlu un Kevina Comp)
Aprīkojuma saraksts (uzņemiet tāfeles attēlu un Kevina Comp)

Šis projekts tika izstrādāts, lai izveidotu ģitāras skaņotāju, izmantojot Vivado un 7 segmentu displeju. Kad skaņotājs atradīs ievadītās skaņas frekvenci, skaņotājs salīdzinās šo vērtību ar cieto kodu sarakstu ar precīzām frekvencēm, kas pazīstamas kā standarta frekvence pareizai notis. Pēc tam uztvērējs parādīs, cik tuvu vai tālu jūsu ievadītā skaņa ir no vēlamās piezīmes. Interesanti ir tas, ka skaņas vilnis ir vairāku sinusoidālu viļņu formu kombinācija ar reāliem un iedomātiem komponentiem. Lai gan nepazīstamiem cilvēkiem ar to var šķist grūti strādāt, ir daži veidi, kā mēs joprojām varam analizēt vilni ar reālām un iedomātām vērtībām.

Demo:

1. solis: aprīkojuma saraksts (uzņemiet tāfeles attēlu un Kevina Comp)

Vispirms mums ir nepieciešama Basys 3 plate un dators, kas atbalsta šādas programmas. Garageband/Audacity vai cits DAW - lai ierakstītu caur mikrofonu un eksportētu wavfiles

Python - var izmantot pylab un scipy paraugu ņemšanai un fft

Vivado - lai izveidotu savienojumu ar Basys 3 dēli un vizuāli redzētu rezultātus

2. darbība. Pārskats

Pārskats
Pārskats

Uztvērēju veido daži svarīgi komponenti: mikrofons, paraugu ņemšanas ierīce, FFT (ātrā Furjē transformācija), salīdzinātājs, dekodētājs un displejs. Mikrofona mērķis ir uztvert ievades viļņu formu. Paraugu ņemšanas ierīce uztver mikrofona izejas signālu un izmanto FFT, lai signālu pārvērstu par frekvences izvadi. Tad, izmantojot FFT izvadi un atrodot maksimālo lielumu un ar to saistīto frekvenci dalot ar 2, var atrast frekvenci, kas saistīta ar viļņu formas piķi. Pēc tam šī vērtība var nonākt salīdzinājumā. Pēc tam to salīdzina ar uzmeklēšanas tabulu, kurā jau ir noteiktas frekvenču vērtības visu notu perfektiem augstumiem. Salīdzinātājam tiek ievadīta vēlamās piezīmes ievade, kas pēc tam no uzmeklēšanas tabulas var saskaņot vēlamo piezīmi ar pareizo frekvenci. Tad salīdzinātājs izvēlēsies piezīmi ar maksimālajai frekvencei vistuvāko frekvenci. Salīdzinātājs salīdzinās abas vērtības un redzēs, vai frekvences vērtība ir tuvu vēlamajai, un pēc tam šos datus ievieto signālā. Salīdzinātājs nosūtīs šo signālu dekodētājam, kur dekodētājs izvēlēsies ieejas 7 segmentu displeja anodiem, lai parādītu piezīmes precizitāti.

3. darbība: Wav fails

Wav fails
Wav fails

Šajā solī mēs ņemsim piķa wav failu un mēģināsim izvadīt šī piķa frekvenci.

Vispirms jums ir nepieciešams piezīmes wav fails. Šajā piemērā mēs izmantosim 16 bitu stereo wav failu ar izlases frekvenci 44,1 kHz. To var izveidot DAW, piemēram, Garageband, vai lejupielādēt. Šajā piemērā šeit lejupielādējams A4 440 Hz sinusa vilnis, ko esam izveidojuši vietnē Garageband.

4. solis: Python- Pylab un Scipy lietojumi

Python- Pylab un Scipy lietojumi
Python- Pylab un Scipy lietojumi

Mēs izmantojām Python bibliotēku, lai veiktu “ātro Furjē pārveidošanu”. Tiešsaistes resurss ļāva mums atdarināt un redzēt, kas ir noderīgs pylab un scipy.

1. Ja neesat instalējis pylab vai scipy, jums tas jādara. Vai arī Pycharm ir ļoti laba iezīme: mēģinot importēt pylab vai scipy, tiek parādīts nelāgs pasvītrojums, kas norāda, ka bibliotēka vēl nav instalēta. Pēc tam tos var instalēt tieši, nospiežot sarkano spuldzi (tā parādīsies, novietojot kursoru netālu no pasvītrotā pasvītrojuma).

2. Izmantojot funkciju scipy.io.wavfile.read, izlasiet un izvelciet datus no parauga wav faila. Pārlūkojiet datus, izmantojot pylab.fft, tas atgriezīs jums jaudas lieluma sarakstu.

3. Pēc tam atrodiet sarakstā maksimāli izstaroto jaudu. Meklējiet saraksta indeksu, kurā notiek maksimālā jauda, jo ātrākais veids, kā noteikt frekvenci, kas saistīta ar šo jaudu. Visbeidzot atgrieziet maksimālo frekvenci. Tā kā vēlāk mums ir jāievada binārā frekvences signāls VHDL kodā, mēs varam pārvērst frekvenci pludiņā par bināru un atgriezt to.

5. darbība: Python paraugu ņemšana un FFT (rādīt kodu un tā rezultātus)

Šajā solī izlases iegūšanai un FFT ir pieejami visi tālāk norādītie saiti.

samcarcagno.altervista.org/blog/basic-sound…Mūsu kods:

Pēc Pylab un Scipy instalēšanas wav failus var importēt un lasīt.

no pylab importa*no scipy.io importa wavfile

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

Tad snd.shape attēlo izlases punktus un kanālu skaitu. Mūsu gadījumā izlases punkti ir atkarīgi no tā, cik ilgs ir wavfile, un kanālu # ir 2, jo tas ir stereo.

Tad snd = snd / (2. ** 15) …… xlabel ('Laiks (ms)')

sakārto laika signālu masīvā.

Tad FFT izveido masīvu frekvencē un lielumā (jauda)

Tad ar kādu laiku tiek atrasts maksimālais lielums un ar to saistītā frekvence. Šī frekvence/2 apzīmē wavfile piķi.

Tad, izmantojot mūsu pašu kodu, vesels skaitlis, kas attēlo frekvenci, tika pārvērsts 12 bitu binārajā skaitlī, un tika izveidots teksta fails ar šo numuru.

6. darbība: Vivado (salīdzinātājs)

Vivado (salīdzinātājs)
Vivado (salīdzinātājs)

Šajā procesa daļā mums ir nepieciešams salīdzinātājs, lai salīdzinātu divas ievades frekvences.

1. Izveidoja salīdzinātāju, lai salīdzinātu, vai ieejas (uztvērēja) frekvence ir augstāka, zemāka vai 2 Hz robežas definētajā piezīmē. (tipisks ģitāras uztvērējs svārstās no e2 līdz g5, 82 Hz līdz 784 Hz).

2. Veidojot 2 Hz rezervi, mēs izmantojām RCA, lai uztvērēja frekvencei pievienotu “000000000010” un pārbaudītu, kur tā joprojām ir pārāk zema lietotāja ievadīšanai. Ja tas tā ir, viena bita signāls “augsts” <= ‘0’, “zems” <= ‘1’. Pēc tam lietotāja ievadei pievienojam “000000000010”, lai redzētu, vai uztvērēja ievade ir vēl augstāka. Ja tas tā ir, “augsts” <= ‘1’, “zems” <= ‘0’. Abi gadījumi neatgriezīs “0”.

3. Tā kā nākamajai moduļa daļai ir nepieciešami īpaši 4 bitu dati, lai pateiktu, kāda ir uztvērēja piezīme, ne tikai atgriežot 2 salīdzinošos izvadus (zemo un augsto), mums ir jāatgriež piezīmes kods, kas saistīts ar frekvence. Lūdzu, skatiet tālāk redzamo diagrammu:

C | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

A | 0001

A# | 1001

B | 0010

Izmantojot vairākus paziņojumus, lai tos klasificētu piezīmēs un iekodētu tajā, kas nepieciešams septiņu segmentu dekodētājam.

7. solis: BASYS 3 attēli

BASYS BILTURES 3 Tāfele
BASYS BILTURES 3 Tāfele

8. darbība: Vivado (7 segmentu dekodētājs ar multipleksēšanu)

Vivado (7 segmentu dekodētājs ar multipleksēšanu)
Vivado (7 segmentu dekodētājs ar multipleksēšanu)

Visam nepieciešams displejs. Tas ir svarīgs faktors, kas nosaka dizaina vērtību. Tāpēc mums ir jāizveido displejs, izmantojot septiņu segmentu dekodētāju, kas ļautu mums parādīt savu spēju veidot skaņotāju B panelī. Turklāt tas mums palīdzētu testēšanā un atkļūdošanā.

Septiņu segmentu dekodētājs satur ievadi ar nosaukumu Note, low, high un CLK, vienlaikus izvadot SSEG, AN un Fiz_Hz. Iepriekš ir blokshēmas attēls, lai palīdzētu mums izprast dizainu.

Divas atsevišķas zemas un augstas ieejas mērķis ir nodrošināt salīdzinātāja izstrādātājam iespēju manipulēt ar to, vai skaņas (viļņu) frekvence ir augstāka vai zemāka par ievades frekvenci (Fix_Hz), ko lietotājs vēlas salīdzināt. Turklāt izejas SSEG attēlo septiņu segmentu displeju un punktu blakus, bet AN - anodus, kuriem iedegas septiņu segmentu kopa.

Šajā septiņu segmentu dekodētājā pulkstenim (CLK) ir svarīga loma, parādot divas dažādas vērtības divos vai vairākos dažādos anodos. Tā kā padome neļauj mums vienlaikus parādīt divas dažādas vērtības, mums ir jāizmanto multipleksēšana, lai parādītu vērtību pa vienai, vienlaikus pārejot uz citu vērtību pietiekami ātri, lai mūsu acis to nevarētu uztvert. Šeit parādās CLK ievade.

Lai iegūtu vairāk informācijas, lūdzu, skatiet avota kodu.

9. darbība: Vivado (komponentu apvienošana)

Kad visi moduļi (python uztvērējs, salīdzinātājs, septiņu segmentu dekodētājs utt.) Ir pabeigti, mēs saliekam kopā, izmantojot lielāku moduli. Tāpat kā attēlā sadaļā "Pārskats", mēs attiecīgi savienojam katru signālu. Lai uzzinātu, lūdzu, pārbaudiet mūsu avota kodu "SW_Hz.vhd".

Paldies. Ceru, ka jums patiks.

Ieteicams: