Cov txheej txheem:

Arduino Music Notes Detector: 3 Kauj Ruam
Arduino Music Notes Detector: 3 Kauj Ruam

Video: Arduino Music Notes Detector: 3 Kauj Ruam

Video: Arduino Music Notes Detector: 3 Kauj Ruam
Video: Introduction to Machine Learning 2024, Hlis ntuj nqeg
Anonim
Image
Image

Txheeb xyuas cov ntawv sau nkauj los ntawm lub teeb liab yog qhov nyuaj ua tshwj xeeb ntawm Arduino vim muaj lub cim xeeb tsawg thiab ua lub zog. Feem ntau, daim ntawv tsis yog lub suab sine ntshiab uas ua rau pom qhov nyuaj. Yog tias peb siv qhov hloov pauv ntawm ntau yam twj paj nruas, nws yuav muaj ntau yam kev sib haum xeeb raws li daim ntawv ua si. Txhua qhov ntsuas nws muaj nws tus kheej kos npe ua ke ntawm ntau yam kev sib haum xeeb. Hauv txoj cai no, kuv tau sim ua qhov program uas tuaj yeem npog ntau yam twj paj nruag ntau li ntau tau. Koj tuaj yeem xa cov vis dis aus txuas nrog uas kuv tau sim ntsuas ntau yam ntawm cov twj paj nruag, ntau hom suab nrov uas tsim los ntawm cov keyboard, thiab txawm tias lub suab nrov tau raug tshuaj xyuas. Qhov tseeb ntawm kev txheeb xyuas sib txawv ntawm qhov ntsuas rau ntsuas. Rau qee qhov ntsuas (piv txwv li piano) hauv qhov txwv (200-500Hz) nws yog qhov tseeb, thaum qee qhov ntsuas nws muaj qhov raug tsawg (piv txwv li Harmonica).

Txoj cai no ua rau siv tus lej FFT uas tau tsim yav dhau los hu ua EasyFFT.

Kev ua qauv qhia ntawm txoj cai tau qhia hauv cov vis dis aus saum toj no nrog ntau hom cuab yeej suab nrog rau suab nrov.

Khoom siv

- Arduino Nano/Uno lossis siab dua

- Microphone module rau Arduino

Kauj Ruam 1: Algorithm rau Kev Tshawb Fawb Cim

Raws li tau hais hauv qib dhau los, kev kuaj pom yog qhov nyuaj vim tias muaj ntau zaus nyob hauv cov qauv suab.

Qhov kev zov me nyuam ua haujlwm raws li hauv qab no:

1. Cov ntaub ntawv tau txais:

- ntu no yuav siv 128 qhov piv txwv los ntawm cov ntaub ntawv suab, kev sib cais ntawm ob qhov piv txwv (piv txwv piv txwv) nyob ntawm qhov ntau zaus ntawm kev txaus siab. Hauv qhov no, peb tab tom siv qhov sib nrug nruab nrab ntawm ob qhov piv txwv yog siv los thov Hann lub qhov rais ua haujlwm nrog rau qhov dav/RMS xam. Txoj cai no tseem ua rau xoom xoom los ntawm kev rho tawm 500 los ntawm tus nqi sib piv. Tus nqi no tuaj yeem hloov pauv yog xav tau. Rau qhov xwm txheej ib txwm muaj, qhov txiaj ntsig no ua haujlwm tau zoo. Ntxiv mus, qee qhov kev ncua yuav tsum tau ntxiv kom muaj qhov piv txwv nyob ib puag ncig 1200Hz. nyob rau hauv rooj plaub ntawm 1200Hz kev ntsuas ua piv txwv siab tshaj ntawm 600 HZ zaus tuaj yeem kuaj pom.

rau (int i = 0; i <128; i ++) {a = analogRead (Mic_pin) -500; // ntxhib xoom hloov pauv sum1 = sum1+a; // rau qhov nruab nrab tus nqi sum2 = sum2+a*a; // rau RMS tus nqi a = a*(sin (i*3.14/128)*sin (i*3.14/128)); // Hann qhov rai hauv = 4*a; // scaling rau ntab rau int hloov pauv qeebMicroseconds (195); // raws li kev ua haujlwm ntau zaus}

2. FFT:

Thaum cov ntaub ntawv tau npaj tiav, FFT tau ua tiav siv EasyFFT. Qhov haujlwm EasyFFT no tau hloov kho FFT rau 128 qhov qauv. Txoj cai tseem raug hloov kho kom txo kev nco. Thawj qhov haujlwm EasyFFT tsim los kom muaj txog 1028 cov qauv (nrog rau pawg thawj coj saib tau), thaum peb tsuas xav tau 128 qhov qauv. txoj cai no txo qis kev nco ntawm ib ncig 20% piv rau thawj qhov haujlwm EasyFFT.

Thaum FFT ua tiav, txoj cai rov qab los rau saum 5 qhov tseem ceeb tshaj plaws peaks rau kev tshuaj xyuas ntxiv. Qhov zaus no tau teeb tsa nyob rau qhov kev txiav txim ntawm qhov dav.

3. Rau txhua qhov ncov, txoj cai pom tias cov ntawv sau tau cuam tshuam nrog nws. tus lej no tsuas yog ntsuas txog 1200 Hz. Nws tsis yog qhov tsim nyog yuav tsum tau ceeb toom tib yam li qhov zaus nrog max amplitude.

Txhua qhov zaus tau teeb tsa ntawm 0 txog 255, nov yog thawj lub octave raug kuaj pom, piv txwv li, 65.4 Hz txog 130.8 sawv cev rau ib lub octave, 130.8 Hz txog 261.6 Hz sawv cev rau lwm tus. Rau txhua lub octave, cov zaus tau teeb tsa los ntawm 0 txog 255. ntawm no daim duab pib los ntawm C rau C '.

yog (f_peaks > 1040) {f_peaks = 0;} yog (f_peaks > = 65.4 && f_peaks = 130.8 && f_peaks = 261.6 && f_peaks = 523.25 && f_peaks = 1046 && f_peaks <= 2093) {f_peaks = 255*((f_peaks /1046) -1);}

NoteV array qhov tseem ceeb tau siv los muab daim ntawv ceeb toom rau qhov ntsuas pom.

byte NoteV [13] = {8, 23, 40, 57, 76, 96, 116, 138, 162, 187, 213, 241, 255};

4. Tom qab xam cov ntawv rau txhua zaus nws yuav yog qhov xwm txheej uas muaj ntau zaus uas muaj uas qhia txog tib qho kev ceeb toom. Kom muaj qhov tseeb tso tawm cov lej kuj tseem xav txog kev rov ua dua. Txoj cai ntxiv txhua qhov txiaj ntsig zaus raws li kev txiav txim siab qhov ntau thiab qhov rov ua dua thiab nce qhov kev ceeb toom nrog qhov siab tshaj plaws.

Kauj ruam 2: Daim ntawv thov

Siv cov cai yog ncaj nraim rau tom ntej, txawm li cas los xij, kuj tseem muaj ntau yam kev txwv uas yuav tsum tau khaws cia hauv siab thaum nws. Cov cai tuaj yeem theej raws li nws tau siv rau kev ceeb toom pom. Cov ntsiab lus hauv qab no yuav tsum tau txiav txim siab thaum siv nws.

1. Pin Assignment:

Raws li daim ntawv Pin txuas nrog yuav tsum tau hloov kho. Rau kuv qhov kev sim, Kuv khaws nws rau Analog tus pin 7, teeb tsa tsis muaj dab tsi () {Serial.begin (250000); Mic_pin = A7; }

2. Microphone rhiab heev:

Microphone rhiab heev yuav tsum tau hloov kho xws li cov yoj yoj yoj tuaj yeem tsim nrog qhov dav zoo. Feem ntau, Microphone module los nrog kev nkag siab yooj yim. tsim nyog rhiab heev yuav tsum tau xaiv xws li lub teeb liab tsis yog ib qho me me thiab tseem tsis tau txiav tawm vim qhov siab dua.

3. Amplitude pib:

Txoj cai no ua haujlwm tsuas yog tias lub teeb liab loj yog siab txaus. qhov kev teeb tsa no yuav tsum tau teeb tsa los ntawm tus neeg siv. tus nqi no nyob ntawm lub microphone rhiab heev nrog rau daim ntawv thov.

yog (sum2-sum1> 5) {

..

hauv cov cai saum toj no, sum2 muab tus nqi RMS thaum suav 1 muab tus nqi nruab nrab. yog li qhov sib txawv ntawm ob qhov txiaj ntsig no muab lub suab nrov ntawm lub teeb liab. hauv kuv qhov xwm txheej, nws ua haujlwm tau zoo nrog qhov txiaj ntsig ntawm ib puag ncig 5.

4. Los ntawm lub neej ntawd, txoj cai no yuav luam tawm cov ntawv ceeb toom. txawm li cas los xij, yog tias koj tab tom npaj yuav siv daim ntawv ceeb toom rau qee lub hom phiaj, tus lej uas tau muab ncaj qha yuav tsum siv. piv txwv C = 0; C#= 1, D = 2, D#= 3 thiab ntxiv mus.

5. Yog tias cov cuab yeej muaj ntau zaus ntau dua, cov cai yuav muab tso tawm tsis raug. qhov siab tshaj plaws tau txwv los ntawm kev ntsuas tus qauv. yog li koj tuaj yeem ua si ib puag ncig qis dua qhov txiaj ntsig kom tau txais cov txiaj ntsig zoo tshaj. hauv qab txoj cai ncua ntawm 195 microseconds. uas tej zaum yuav raug kho kom tau txais cov txiaj ntsig zoo tshaj plaws. Qhov no yuav cuam tshuam rau lub sijhawm ua tiav tag nrho.

{a = analogRead (Mic_pin) -500; // ntxhib xoom ua haujlwm

sum1 = sum1+ua; // rau qhov nruab nrab tus nqi sum2 = sum2+a*a; // rau RMS tus nqi a = a*(sin (i*3.14/128)*sin (i*3.14/128)); // Hann qhov rai hauv = 4*a; // scaling rau ntab rau int hloov pauv qeebMicroseconds (195); // raws li kev ua haujlwm ntau zaus}

6. txoj cai no tsuas ua haujlwm txog 2000Hz zaus. los ntawm kev tshem tawm qhov ncua ntawm kev ntsuas ib puag ncig 3-4 kHz ntawm kev ntsuas ua piv txwv tuaj yeem tau txais.

Cov kev ceev faj:

  • Raws li tau hais hauv EasyFFT nyeem, FFT noj ntau ntau ntawm kev nco ntawm Arduino. Yog li yog tias koj muaj qhov haujlwm uas xav tau khaws qee qhov txiaj ntsig nws tau pom zoo kom siv pawg thawj coj saib nrog lub cim xeeb siab dua.
  • Txoj cai no tuaj yeem ua haujlwm zoo rau ib qho cuab yeej/tus hu nkauj thiab tsis zoo rau lwm tus. Kev txheeb xyuas qhov tseeb ntawm lub sijhawm tiag tiag tsis muaj peev xwm ua tau vim suav nrog cov kev txwv.

Kauj ruam 3: Summery

Kev ceeb toom nrhiav pom yog kev ua haujlwm hnyav, tau txais lub sijhawm tiag tiag yog qhov nyuaj tshwj xeeb tshaj yog ntawm Arduino. Txoj cai no tuaj yeem muab kwv yees li 6.6 cov qauv /vib nas this (rau 195 microseconds ncua ntxiv). txoj cai no ua haujlwm tau zoo nrog piano thiab qee yam twj paj nruag.

Kuv vam tias txoj cai no thiab kev qhia yuav pab tau koj txoj haujlwm ntsig txog suab paj nruag. nyob rau hauv cov ntaub ntawv ntawm kev ua xyem xyav los yog kev tawm tswv yim thov tawm tswv yim lossis lus.

Hauv qhov kev qhia tom ntej no, Kuv yuav hloov kho qhov chaws no rau kev tshawb pom cov nkauj chord. yog li nyob twj ywm.

Pom zoo: