Kyllä, FFT on kyse tästä! Antaa sinulle syöttämiesi tietojen taajuusspektri. Vaikea osa on toteutuksen yksityiskohdat, kuten mainitsit.
Muuttaa vastausta tarkalleen mitä haluat tehdä.
Jos haluat vain analysoida omaa musiikkiasi , siellä on jo ohjelmistoja siihen. Voit tarkastella taajuuskorjaimia, jotka osoittavat vastauksen (pohjimmiltaan FFT), tai hankkia "musiikillinen taajuuskorjain", joka näyttää myös sävelkorkeudet. Voit saada ääntä midi VST -soittimiin, jotka muuntavat soittamasi sisällön oikeiksi midi-nuotteiksi. Jos näppäimistösi on midi, ohita vain VST: t ja tallenna midi suoraan.
Jos haluat opettaa itsellesi FFT: n ja miten se liittyy musiikkiin, hanki parempi jotain Matlabia, josta voit laskea tietojen FFT. Sillä on kyky tallentaa ja toistaa sekä lukea wav-tiedostoja ja vastaavia. Nämä ovat sitten todella helppoja käyttää. Voit piirtää äänen ja tehdä kaikenlaisia analyysejä melko nopeasti, jos tiedät syntaksin.
Jos haluat rakentaa laitteen tekemään niin, se on melko monimutkaista. Tarvitset uC / dsp / fpga / etc-laskelmat. Suosituimmissa laitteissa on jo FFT-koodi, joten sinun ei tarvitse koodata sitä itse (myös monimutkainen).
Sinun on rakennettava piiri ja kaikki muu. Se ei ole vaikeaa, mutta kokemuksestasi / tiedostasi riippuen se voi viedä jonkin aikaa ja sillä on jyrkkä oppimiskäyrä. Se riippuu myös lopputuotteen laadusta.
Matemaattisesti ihanteellinen nuotti koostuu geometrisesta sarjasta "perus".
Oletetaan, että F0 on perustaajuus, silloin suurin osa nuotteista on likimääräisiä arvolla F (t). + F0 * summa (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 + ....
A_k: t ovat vain näiden korkeammien taajuuksien F_k vahvuus ja F_k on vain jokin F0: n kerrannaisista. Jos a_k = 0 kaikille k: lle, niin meillä on puhdas sinimuoto. Tämän sävelkorkeus on helppo havaita. Löydä vain FFT: n maksimimäärä, ja tämä taajuus on sävyn = nuotin perusta.
Kun otat FFT: n, päädyt siihen saatuihin tietoihin ja teet vain matematiikkaa. Se on periaatteessa laskenta.
Kaikki, mikä on suhteellisen helppoa.
Joitakin ongelmia, joita sinun on käsiteltävä. Huomaa, että kaikki nämä eivät ole "ratkaistu".
-
Viive - jos aiot tehdä kaikenlaisia reaaliaikaisia juttuja, tästä voi tulla ongelma.
-
Useita nuotteja - Nuottien ryhmää on vaikea määrittää kaikkien ylimääräisten yliaaltojen vuoksi. Jos toisto A = 440 Hz ja A '= 880 Hz, suurin osa yliaaltoista menee päällekkäin. Voit helposti saada A = 440 Hz, mutta A '= 880 Hz on hankalampi. Kun ajattelet sointuja, nopeita juoksuja jne., Kaikkien tietojen (muistiinpanojen) tarkka saaminen voi olla erittäin vaikeaa. Vaikka kaikki on yleensä matemaattisesti mahdollista, tiedoissa itsessään on virheitä ja poikkeamia, ja yhtälöt on määritelty joissakin tapauksissa.
-
Melu - signaalin kohina voi antaa sinulle vääriä tuloksia . Jos esiintyy musiikillista melua, se voi heikentää tuloksia. Tällöin tarvitaan parempia algoritmeja = aika + raha + tieto.