Evet, FFT bununla ilgili! Beslediğiniz verilerin frekans spektrumunu vermek için. Zor kısmı, bahsettiğiniz gibi uygulama detaylarıdır.
Ne yapmak istediğinize bağlı olarak, cevabı tam olarak değiştirir.
Sadece kendi müziğinizi analiz etmek istiyorsanız, bunu yapmak için zaten yazılım var. Yanıtı gösteren EQ'lara (temelde FFT) bakabilir veya sahaları da gösteren bir "müzikal EQ" alabilirsiniz. Oynadıklarınızı doğru midi notalarına dönüştüren midi VST'lere ses alabilirsiniz. Klavyeniz midi ise, VST'leri atlayın ve midi'yi doğrudan kaydedin.
Kendinize FFT'yi ve bunun müzikle nasıl ilişkili olduğunu öğretmek istiyorsanız, Matlab gibi herhangi bir verinin FFT'sini hesaplayabileceğiniz bir şey elde etmek daha iyidir. Wav dosyalarını ve benzerlerini okuma ile birlikte kaydetme ve oynatma yeteneğine sahiptir. Bunlar daha sonra kullanımı kolay olacak. Sözdizimini biliyorsanız, sesi grafiklendirebilir ve her türlü analizi oldukça hızlı yapabilirsiniz.
Böyle bir şey yapmak için bir cihaz oluşturmak istiyorsanız oldukça karmaşıktır. Hesaplamaları yapmak için bir uC / dsp / fpga / etc'ye ihtiyacınız olacak. Çoğu popüler cihaz zaten FFT koduyla birlikte gelir, bu yüzden kendiniz kodlamanız gerekmez (ayrıca karmaşık).
Devreyi ve tüm bunları inşa etmeniz gerekecek. Zor değil ama deneyiminize / bilginize bağlı olarak biraz zaman alabilir ve dik bir öğrenme eğrisi vardır. Aynı zamanda nihai ürünün kalitesine de bağlıdır.
Matematiksel olarak, ideal bir nota "temel" in geometrik bir serisinden oluşur.
F0'ın temel frekans olduğunu varsayalım, o zaman çoğu nota F (t) + F0 * toplamıyla (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 + ile yaklaşacaktır. ...
A_k, F_k'nin bu yüksek frekanslarının gücüdür ve F_k, F0'ın sadece birkaç katıdır. Tüm k için a_k = 0 ise, saf bir sinüzoid var. Bunun perdesini tespit etmek kolaydır. Sadece FFT'nin maksimum değerini bulun ve bu frekans tonun temelidir = nota.
FFT'yi aldığınızda, sonuç veren veriler elde edersiniz ve sadece matematik yaparsınız. Temel olarak kalkülüs.
Tüm bunlar nispeten kolaydır.
Başa çıkmanız gereken bazı problemler. Bunların hepsinin "çözülmediğini" unutmayın.
Gecikme - Herhangi bir tür gerçek zamanlı iş yapacaksanız, bu bir sorun haline gelebilir.
Çoklu notalar - Tüm ekstra harmonikler nedeniyle nota grubunu belirlemek zordur. Oyun A = 440hz ve A '= 880hz ise, harmoniklerin çoğu üst üste binecektir. Kolayca A = 440hz elde edebilirsiniz, ancak A '= 880hz elde etmek daha zordur. Akorları, hızlı koşuları vb. Düşündüğünüzde, tüm bilgileri (notları) tam olarak almak çok zor olabilir. Her şey genellikle matematiksel olarak olası olsa da, verilerin kendisinde hatalar ve sapmalar vardır ve bazı durumlarda denklemler az tanımlanmıştır.
Gürültü - Sinyaldeki gürültü size sahte sonuçlar verebilir. Müzikal bir gürültü meydana gelirse sonuçlarınızı bozabilir. Daha iyi algoritmalar gerekli olacaktır = zaman + para + bilgi.