Сигналы с частотным разделением

Я хотел бы сгенерировать формы волны, которые отображают вместе низкие, средние и высокие частоты: ala traktor for ipad http://www.dawsons.co.uk/blog/wp-content/uploads/2013/02/TRAKTOR_DJ_main-2_L.jpg

Мне удалось получить частотные данные звука с помощью fft, а затем суммировать амплитуды в ячейках на основе частотных диапазонов (низкий: 0–300 Гц, средний: 300–2000 Гц, высокий: 2000 Гц +), но при построении они не похожи обычный график RMS того же звука.

Может кто-нибудь подсказать, как генерируются сигналы Traktor? Большое спасибо!


person Val    schedule 29.04.2013    source источник
comment
@learnvst прав, что фильтрация - лучший способ сделать это. Но если вам понадобится БПФ в будущем, я настоятельно рекомендую Kiss FFT (sourceforge.net/ Projects/kissfft/files/kissfft) Марка Боргердинга. С ним гораздо проще работать, чем с FFTW, и он более чем достаточно быстр для любого возможного аудиоприложения.   -  person mtrw    schedule 29.04.2013
comment
Вы уверены, что это то, что показывает трактор? Мне кажется, что он показывает пик, среднеквадратичное значение и что-то еще (абс-среднее).   -  person Bjorn Roche    schedule 29.04.2013
comment
Я почти уверен, что толстая нижняя линия - это бас, а самая крайняя выглядит как RMS. Я предполагаю, что средний - это частоты выше баса, но это предположение, поскольку я никогда не использовал версию для iPad :)   -  person Val    schedule 29.04.2013
comment
Предположение о трех полосах является правильным (довольно очевидным) - плюс некоторые специальные ингредиенты и настройка для более приятного внешнего вида, но это секрет ;)   -  person André Bergner    schedule 05.05.2013
comment
О, Андрей, очень интересно! Возможно, вы сглаживаете ситуацию только в том случае, если изменение ниже порогового значения?   -  person Val    schedule 09.05.2013


Ответы (1)


Я бы не стал использовать данные БПФ для такой простой работы. Вместо этого рассмотрите возможность прохождения входного сигнала через 3 простых БИХ-фильтра во временной области, которые разделяют информацию на низкие, средние и высокие сигналы. Это приводит к 3 сигналам во временной области, которые легко построить. Преимущество этого подхода заключается в том, что вам не нужно беспокоиться об обратном процессе БПФ, который даст вам формы сигналов во временной области для каждого диапазона. Это также должно быть менее интенсивным процессором, поскольку вы делаете все во временной области.

Существует простой код для полосового фильтра Баттерворта 2-го порядка, содержащийся в одном из моих репозиториев github примерно в строке 120 этого файла, который вы можете использовать в качестве отправной точки.

person learnvst    schedule 29.04.2013
comment
Спасибо, Ник, я попробую реализовать это :) - person Val; 29.04.2013
comment
Подробнее о том, почему БПФ не подходит: blog.bjornroche.com/2012/08/why-eq-is-done-in-time-domain.html и руководство по основам аудиоэквалайзера: blog.bjornroche.com/2012/08/basic-audio-eqs.html - person Bjorn Roche; 29.04.2013
comment
Хороший пост в блоге, Бьорн, жаль, что я не нашел его раньше! - person Val; 29.04.2013