Так, це все, що стосується FFT! Дати вам частотний спектр даних, які ви живите. Важкою частиною є деталі реалізації, як ви вже згадували.
В залежності від того, що ви хочете зробити, точно змінюється відповідь.
Якщо ви просто хочете проаналізувати власну музику, для цього вже є програмне забезпечення. Ви можете подивитися на еквалайзери, які показують реакцію (в основному на FFT), або отримати "музичний еквалайзер", який також показує пітчі. Ви можете отримувати аудіо в VST, що перетворюють те, що ви відтворюєте, у правильні нотатки міді. Якщо ваша клавіатура міді, просто пропустіть VST та запишіть міді безпосередньо.
Якщо ви хочете навчити себе FFT і як це стосується музики, тоді краще придбайте щось на зразок Matlab, де ви можете обчислити FFT будь-яких даних. Він має можливість записувати, а також відтворювати разом з читанням WAV-файлів тощо. Потім вони будуть просто продати. Ви можете графікувати звук і робити всілякий аналіз досить швидко, якщо знаєте синтаксис.
Якщо ви хочете побудувати пристрій для подібних дій, то це досить складно. Для розрахунків вам знадобиться uC / dsp / fpga / тощо. Більшість популярних пристроїв уже мають FFT-код, тому вам не доведеться кодувати його самостійно (також складно).
Вам потрібно буде побудувати схему і все таке. Це не складно, але залежно від вашого досвіду / знань це може зайняти досить багато часу і має круту криву навчання. Це також залежить від якості кінцевого продукту.
Математично ідеальна музична нота складається з геометричного ряду «основоположних».
Припустимо, що F0 - основна частота, тоді більшість музичних нот буде наближено до суми F (t) + F0 * (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 +. ...
A_k - це сила цих високих частот F_k, а F_k - лише кілька кратних F0. Якщо a_k = 0 для всіх k, то маємо чисту синусоїду. Крок цього легко виявити. Просто знайдіть максимум FFT, і ця частота є основою тону = музична нота.
Коли ви берете FFT, ви отримуєте ці дані і просто займаєтеся математикою. Це в основному обчислення.
Все це порівняно просто.
Деякі проблеми, з якими вам доведеться зіткнутися. Зауважте, що не всі з них "вирішені".
Затримка - якщо ви збираєтеся робити будь-які види реального часу, це може стати проблемою.
Кілька нот - важко визначити групу нот через усі зайві гармоніки. Якщо грати A = 440 Гц і A '= 880 Гц, більшість гармонік будуть перетинатися. Ви можете легко отримати A = 440 Гц, але отримати A '= 880 Гц складніше. Якщо ви думаєте про акорди, швидкі пробіжки тощо, то точно отримати всю інформацію (ноти) може бути дуже важко. Хоча в цілому все можливо математично, самі дані мають помилки та відхилення, а рівняння в деяких випадках є недостатньо визначеними.
Шум - шум в сигналі може дати помилкові результати. Якщо виникає музичний шум, він може зіпсувати ваші результати. Тоді потрібні кращі алгоритми = час + гроші + знання.