Вычислить powerspectrum с скользящего окна FFT: Возьмите 1024 образцов:
double[] signal = stream.Take(1024);
Поток его алгоритма FFT:
double[] real = new double[signal.Length];
double[] imag = new double[signal.Length);
FFT(signal, out real, out imag);
Вы получит реальную часть и мнимую часть. НЕ выбрасывайте мнимую часть. Сделайте то же самое с реальной частью, что и воображаемая. Хотя верно, что мнимая часть pi/2 не соответствует фазе реального, она все еще содержит 50% информации о спектре.
EDIT:
Расчет мощности в отличие от амплитуды, так что у вас есть большое количество, когда он громко и близко к нулю, когда она тихо:
for (i=0; i < real.Length; i++) real[i] = real[i] * real[i];
Аналогично для мнимой части ,
for (i=0; i < imag.Length; i++) imag[i] = imag[i] * imag[i];
Теперь у вас есть спектр мощности для последних 1024 образцов. Где первая часть спектра - это низкие частоты, а последняя часть спектра - это высокие частоты .
Если вы хотите найти BPM в популярной музыке, вы, вероятно, должны сосредоточиться на басе. Вы можете поднять интенсивность баса, суммируя нижнюю часть спектра мощности. Какие номера для использования зависит от частоты дискретизации:
double bassIntensity = 0;
for (i=8; i < 96; i++) bassIntensity += real[i];
Теперь сделать то же самое еще раз, но переместить окно 256 образцов, прежде чем вычислить новый спектр. Теперь вы закончите вычисление bassIntensity для каждых 256 выборок.
Это хороший ввод для анализа BPM. Когда бас тихий, у вас нет удара, и когда он громкий, у вас есть удар.
Удачи вам!
Другая статья, которая может быть интересна для вас ... [http://werner.yellowcouch.org/Papers/bpm04/](http://werner.yellowcouch.org/Papers/bpm04/) Вы можете найти существующие Библиотеки обнаружения BPM: [http://www.mmartins.com/mmartins/bpmdetection/bpmdetection.asp](http://www.mmartins.com/mmartins/bpmdetection/bpmdetection.asp) ... и C# BPM здесь: [http://adionsoft.net/bpm/](http://adionsoft.net/bpm/) – sachaa 2008-09-20 18:31:01
2 названия: Эрик Д. Шейер Масатака. Получите их в Google, они написали об обнаружении биений (в реальном времени и в автономном режиме). Очень интересный материал. Кроме того, как побочный элемент, я думаю, помимо обнаружения биений вас может заинтересовать бит-предсказание *. – Led 2009-05-30 23:58:41
Я считаю, что у вас есть необходимые алгоритмы. также, много интересных алограмм для машинного обучения для большего удовольствия! есть пример в учебных программах/примерах, если я правильно помню. accord.net – user3791372 2017-05-23 23:52:42