Sadržaj:

Tuner: 9 koraka
Tuner: 9 koraka

Video: Tuner: 9 koraka

Video: Tuner: 9 koraka
Video: Как настроить гитару с помощью дешевого тюнера. Инструкция | Гитарный Клуб 2024, Juli
Anonim
Image
Image
Lista opreme (slikajte ploču i Kevinov komp)
Lista opreme (slikajte ploču i Kevinov komp)

Ovaj je projekt osmišljen za izradu gitarskog tunera koristeći Vivado i 7-segmentni zaslon. Kada tjuner pronađe frekvenciju unesenog zvuka, tjuner će tu vrijednost uporediti sa listom tvrdo kodiranih vrijednosti za tačne frekvencije koje su poznate kao standardna frekvencija za ispravnu visinu note. Tada će tjuner prikazati koliko je vaš zvuk blizu ili daleko od vaše željene note. Ono što je zanimljivo je da je zvučni val kombinacija više sinusoidnih valnih oblika sa stvarnim i imaginarnim komponentama. Iako se nepoznatima ovo može činiti teškim za rad, postoji nekoliko načina na koje još uvijek možemo analizirati val sa stvarnim i zamišljenim vrijednostima.

Demo:

Korak 1: Lista opreme (slikajte ploču i Kevinov komp)

Prvo nam je potrebna ploča Basys 3 i računar koji podržava sljedeće programe. Garageband/Audacity ili neki drugi DAW - za snimanje putem mikrofona i izvoz wav datoteka

Python - može koristiti pylab i scipy za uzorkovanje i fft

Vivado - za povezivanje s Basys 3 pločom i vizualno vidjeti rezultate

Korak 2: Pregled

Pregled
Pregled

Tjuner se sastoji od nekoliko važnih komponenti: mikrofona, uzorkivača, FFT (brza Furijeova transformacija), komparatora, dekodera i ekrana. Svrha mikrofona je snimiti ulazni valni oblik. Sempler prima izlazni signal mikrofona i koristi FFT za pretvaranje signala u izlaz veličine u frekvencijama. Zatim se pomoću izlaza FFT -a i pronalaženjem maksimalne veličine i frekvencije povezane s njom podijeljeno s 2 može pronaći frekvencija povezana s visinom valnog oblika. Ta vrijednost tada može ići u usporedbu. Zatim se uspoređuje s tražilicom koja je već postavila vrijednosti frekvencije za savršene tonove svih nota. Komparator dobija ulaz za željenu notu, koju zatim može uporediti sa željenom notom sa njenom ispravnom frekvencijom iz tabele za pretraživanje. Zatim će komparator izabrati notu koja je frekvencija najbliža maksimalnoj frekvenciji. Komparator će uporediti dvije vrijednosti i vidjeti kako je vrijednost frekvencije blizu željene, a zatim će te podatke staviti u signal. Komparator će poslati taj signal dekoderu, gdje će dekoder odabrati ulaze za anode 7-segmentnog ekrana kako bi pokazao tačnost bilješke.

Korak 3: Wav datoteka

Wav datoteka
Wav datoteka

U ovom koraku ćemo uzeti wav datoteku tona i pokušati prikazati frekvenciju tog tona.

Prvo vam je potrebna wav datoteka bilješke. U ovom primjeru koristit ćemo 16 -bitnu stereo wav datoteku sa frekvencijom uzorkovanja od 44,1 kHz. Ovo se može stvoriti u DAW -u kao što je Garageband ili preuzeti. Za ovaj primjer, A4 440Hz sinusni val koji smo generirali na Garagebandu možete preuzeti ovdje.

Korak 4: Python- upotreba programa Pylab i Scipy

Python- upotreba Pylaba i Scipy-a
Python- upotreba Pylaba i Scipy-a

Biblioteku Python smo koristili za „brzu Furijeovu transformaciju“. Mrežni izvori omogućili su nam da oponašamo i vidimo šta je korisno u pylabu i scipyju.

1. Ako niste instalirali pylab ili scipy, morate to učiniti. Ili, Pycharm ima vrlo dobru značajku, kada pokušate uvesti pylab ili scipy, postoji podvučeno podvlačenje koje vam govori da još niste instalirali biblioteku. Zatim ih možete instalirati izravno pritiskom na crvenu žarulju (pojavit će se kada postavite kursor blizu iscrtanog podcrtavanja).

2. Pomoću funkcije scipy.io.wavfile.read pročitajte i izvucite podatke iz uzorka wav datoteke. Prođite kroz podatke pomoću pylab.fft, vratit će vam popis veličine za snagu.

3. Zatim pronađite maksimalnu snagu koju emituje lista. Potražite indeks liste gdje se javlja maksimalna snaga jer je brži način da pronađete frekvenciju povezanu s tom snagom. Na kraju vratite maksimalnu frekvenciju. Budući da kasnije moramo unijeti binarni frekvencijski signal u VHDL kôd, možemo pretvoriti frekvenciju u float u binarnu i vratiti je.

Korak 5: Python-Sampling i FFT (Prikaži kôd i njegove rezultate)

U ovom koraku, puni krediti idu na donju vezu za uzorkovanje i FFT.

samcarcagno.altervista.org/blog/basic-sound…Naš kod:

Nakon što su instalirani pylab i scipy, wav datoteke se mogu uvesti i čitati.

iz pylab import*iz scipy.io import wavfile

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

Tada snd.shape predstavlja uzorke i broj kanala. U našem slučaju, uzorci ovise o tome koliko je duga wavfile i # kanala 2 jer je stereo.

Tada je snd = snd / (2. ** 15) …… xlabel ('Vrijeme (ms)')

organizira vremenski signal u niz.

Zatim FFT stvara niz u frekvenciji i veličini (Snaga)

Zatim se kroz petlju while pronađe najveća veličina i frekvencija povezana s njom. Ta frekvencija/2 predstavlja visinu wav datoteke.

Zatim je pomoću našeg vlastitog koda cijeli broj koji predstavlja frekvenciju pretvoren u 12 -bitni binarni broj i kreirana je tekstualna datoteka s tim brojem.

Korak 6: Vivado (Komparator)

Vivado (Komparator)
Vivado (Komparator)

U ovom dijelu procesa potreban nam je komparator za usporedbu dvije ulazne frekvencije.

1. Napravio komparator za usporedbu je li ulazna (prijemna) frekvencija veća, niža ili unutar opsega margine definiranog rasponom od 2 Hz. (tipični gitarski štimer se kreće od e2 do g5, 82 Hz do 784 Hz).

2. Prilikom stvaranja marže od 2 Hz, koristili smo RCA za dodavanje “000000000010” frekvenciji prijemnika i provjerili gdje je još uvijek premala za korisnički unos. U tom slučaju, jednobitni signal “visoko” <= ‘0’, ‘nisko’ <= ‘1’. Zatim korisničkom unosu dodajemo “000000000010” da vidimo je li ulaz prijemnika još veći od toga. U tom slučaju, „visoko“<= ‘1’, „nisko“<= ‘0’. Niti slučaj ne bi vratio "0".

3. Budući da je za sljedeći dio modula potrebni određeni 4-bitni podaci da bi se utvrdilo što je prijemna nota, a ne samo da se vrate 2 uporedna izlaza (niski i visoki), moramo vratiti kodni suradnik na notu, koji se povezuje sa frekvenciju. Molimo pogledajte donji grafikon:

C | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

A | 0001

A# | 1001

B | 0010

Korištenje nekoliko if naredbi za njihovu kategorizaciju u bilješku i njihovo kodiranje u ono što je potrebno za dekoder sa sedam segmenata.

Korak 7: SLIKE BASYS 3 ploče

SLIKE OSNOVA 3 Tabla
SLIKE OSNOVA 3 Tabla

Korak 8: Vivado (7 -segmentni dekoder sa multipleksiranjem)

Vivado (7 -segmentni dekoder sa multipleksiranjem)
Vivado (7 -segmentni dekoder sa multipleksiranjem)

Za sve je potreban ekran. To je važan faktor koji određuje vrijednost dizajna. Stoga moramo stvoriti zaslon pomoću dekodera sa sedam segmenata, koji bi nam omogućio da pokažemo svoju sposobnost dizajniranja tjunera na B ploči. Takođe, pomoglo bi nam u testiranju i otklanjanju grešaka.

Dekoder sa sedam segmenata sadrži ulaze pod imenom Note, low, high i CLK, dok izlazi SSEG, AN i Fiz_Hz. Gore je prikazana slika blok dijagrama koja nam pomaže da razumijemo dizajn.

Svrha postojanja dva odvojena niskog i visokog ulaza je pružiti dizajneru komparatora slobodu da manipulira je li frekvencija zvuka (vala) veća ili niža od ulazne frekvencije (Fix_Hz) koju korisnik želi uporediti. Osim toga, izlazni SSEG predstavlja prikaz sedam segmenata i sljedeću točku, dok AN predstavlja anode za koje se prikazuje skup od sedam segmenata koji će zasvijetliti.

U ovom sedam-segmentnom dekoderu, sat (CLK) igra važnu ulogu u prikazivanju dvije različite vrijednosti na dvije ili više različitih anoda. Kako nam ploča ne dopušta prikazivanje dvije različite vrijednosti istovremeno, moramo koristiti multipleksiranje za prikaz vrijednosti jednu po jednu, dok se prebacujemo na drugu vrijednost dovoljno brzo da je naše oči ne mogu uhvatiti. Ovdje CLK ulaz ulazi u igru.

Za više informacija pogledajte izvorni kod.

Korak 9: Vivado (kombiniranje komponenti)

Sa završenim svakim modulima (python prijemnik, komparator, sedmosegmentni dekoder itd.), Sastavljamo zajedno koristeći veći modul. Baš kao što je prikazano na slici ispod odjeljka "Over view", povezujemo svaki signal u skladu s tim. Za referencu, provjerite naš izvorni kod "SW_Hz.vhd".

Hvala ti. Nadam se da ćete uživati.

Preporučuje se: