Tak, właśnie o to chodzi w FFT! Aby podać Ci spektrum częstotliwości karmionych danych. Jak wspomniałeś, trudną częścią są szczegóły implementacji.
W zależności od tego, co chcesz zrobić, dokładnie zmienia odpowiedź.
Jeśli chcesz po prostu przeanalizować własną muzykę, istnieje już oprogramowanie, które to umożliwia. Możesz spojrzeć na korektory, które pokazują odpowiedź (w zasadzie FFT), lub uzyskać „muzyczny korektor”, który pokazuje również wysokości. Możesz uzyskać dźwięk do VST midi, które konwertują to, co grasz na właściwe nuty midi. Jeśli twoja klawiatura to midi, po prostu pomiń VST i bezpośrednio nagraj midi.
Jeśli chcesz nauczyć się FFT i tego, jak odnosi się on do muzyki, lepiej zdobyć coś takiego jak Matlab, w którym możesz obliczyć FFT dowolnych danych. Ma możliwość nagrywania, a także odtwarzania wraz z czytaniem plików wav i tym podobnych. Będą one naprawdę łatwe w użyciu. Jeśli znasz składnię, możesz wykreślić wykresy audio i dość szybko przeprowadzić wszelkiego rodzaju analizy.
Jeśli chcesz zbudować takie urządzenie, jest to dość skomplikowane. Do wykonania obliczeń będziesz potrzebować uC / dsp / fpga / etc. Najpopularniejsze urządzenia mają już kod FFT, więc nie musisz go kodować samodzielnie (również skomplikowane).
Musisz zbudować zespół obwodów i tak dalej. Nie jest to trudne, ale w zależności od twojego doświadczenia / wiedzy może to zająć sporo czasu i ma stromą krzywą uczenia się. Zależy to również od jakości produktu końcowego.
Matematycznie idealna nuta składa się z geometrycznej serii „fundamentalnej”.
Załóżmy, że F0 jest częstotliwością podstawową, wówczas większość nut zostanie przybliżona przez F (t) + F0 * suma (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 +. ...
A_k to tylko siła tych wyższych częstotliwości F_k, a F_k to tylko pewna wielokrotność F0. Jeśli a_k = 0 dla wszystkich k, mamy czystą sinusoidę. Skok tego jest łatwy do wykrycia. Wystarczy znaleźć maksimum FFT, a ta częstotliwość jest podstawą tonu = nuty.
Kiedy bierzesz FFT, dostajesz dane i po prostu wykonujesz matematykę. Zasadniczo jest to rachunek różniczkowy.
Wszystko to jest stosunkowo łatwe.
Niektóre problemy, z którymi będziesz musiał sobie poradzić. Pamiętaj, że nie wszystkie z nich są „rozwiązane”.
Opóźnienie - jeśli zamierzasz robić rzeczy w czasie rzeczywistym, może to stanowić problem.
Wiele nut - Trudno jest określić grupę nut z powodu wszystkich dodatkowych harmonicznych. Jeśli odtwarzanie A = 440 Hz i A '= 880 Hz, większość harmonicznych będzie się nakładać. Możesz łatwo uzyskać A = 440 Hz, ale uzyskanie A '= 880 Hz jest trudniejsze. Kiedy myślisz o akordach, szybkich biegach itp., Może być bardzo trudno dokładnie uzyskać wszystkie informacje (notatki). Podczas gdy wszystko jest ogólnie matematycznie możliwe, same dane zawierają błędy i aberracje, aw niektórych przypadkach równania są niedokładnie zdefiniowane.
Hałas - Hałas w sygnale może dawać fałszywe wyniki. Jeśli pojawi się dźwięk muzyczny, może to popsuć wyniki. Wymagane byłyby wtedy lepsze algorytmy = czas + pieniądze + wiedza.