Да, это то, что представляет собой БПФ! Чтобы дать вам частотный спектр данных, которые вы вводите. Сложная часть - это детали реализации, как вы уже упоминали.
В зависимости от того, что вы хотите сделать, точно меняется ответ.
Если вы просто хотите проанализировать свою собственную музыку, уже есть программное обеспечение для этого. Вы можете посмотреть на эквалайзеры, которые показывают ответ (в основном, FFT), или получить «музыкальный эквалайзер», который также показывает высоту тона. Вы можете получить аудио в миди VST, которые преобразуют то, что вы играете, в правильные ноты миди. Если у вас клавиатура midi, просто пропустите VST и запишите midi напрямую.
Если вы хотите научить себя БПФ и тому, как оно относится к музыке, то лучше взять что-то вроде Matlab, где вы можете вычислить БПФ любых данных. Он имеет возможность записи, а также воспроизведения наряду с чтением файлов WAV и тому подобное. Этим потом будет действительно легко пользоваться. Вы можете составить график аудио и выполнить все виды анализа довольно быстро, если вы знаете синтаксис.
Если вы хотите создать устройство, чтобы сделать такую вещь, то это довольно сложно. Вам понадобится uC / dsp / fpga / etc для расчетов. Большинство популярных устройств уже поставляются с FFT-кодом, поэтому вам не придется кодировать его самостоятельно (также сложно).
Вам нужно будет построить схему и все такое. Это не сложно, но в зависимости от вашего опыта / знаний это может занять довольно много времени и имеет крутой кривой обучения. Это также зависит от качества конечного продукта.
Математически идеальная музыкальная нота состоит из геометрической серии «фундаментальных».
Предположим, что F0 является основной частотой, тогда большинство музыкальных нот будут аппроксимированы как F (t) + F0 * sum (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, то мы имеем чистую синусоиду. Шаг этого легко обнаружить. Просто найдите максимум БПФ, и эта частота является основой тона = музыкальной ноты.
Когда вы берете БПФ, вы в конечном итоге с данными, и просто делать математику. Это в основном исчисление.
Все это относительно просто.
Некоторые проблемы, с которыми вам придется иметь дело. Обратите внимание, что не все из них «решены».
Задержка - если вы собираетесь делать какие-либо вещи в реальном времени, это может стать проблемой.
Несколько нот - Сложно определить группу нот из-за всех дополнительных гармоник. Если играть A = 440 Гц и A '= 880 Гц, большинство гармоник будут перекрываться. Вы можете легко получить A = 440 Гц, но получить A '= 880 Гц сложнее. Когда вы думаете о аккордах, быстрых пробегах и т. Д., Тогда может быть очень трудно точно получить всю информацию (примечания). Хотя все, как правило, возможно математически, сами данные имеют ошибки и аберрации, а в некоторых случаях уравнения недостаточно определены.
Шум - Шум в сигнале может дать ложные результаты. Если возникает музыкальный шум, это может испортить ваши результаты. Тогда потребуются лучшие алгоритмы = время + деньги + знания.