Как стать автором
Обновить

Комментарии 11

Могу поспорить, что вы сами цифровой обработкой сигналов не занимались никогда. Потому что выбрать фреймворк для обработки сигналов — это проблема уровня выбора цвета носков — таких библиотек миллион, их пишут все, кому не лень (да, и я тоже писал), но функционал их совершенно однообразный и примитивный.

В реальных задачах возникают проблемы, которые ни один из этих фреймворков не решает. Ну есть там поддержка биквад фильтров, ну ок. А как получить коэффициенты для этих фильтров из заданного АЧХ/ФЧХ? Нужно использовать метод наименьших квадратов и факторизацию полиномов. Есть такое? Нет там такого. Потому что это задача совершенно другого уровня сложности, реализация которой требует совсем другого уровня квалификации.

С FIR ситуация получше — можно нарисовать АЧХ мышкой и сделать обратное БПФ с оконной функцией. Однако такой подход не прокатит с ФЧХ, и с таким подходом фазо-корректирующий фильтр с линейной АЧХ не построить. Можно найти вспомогательный инструментал типа Rephase — но и там всё те же стандартные фильтры с ручной подгонкой параметров, а для кроссоверов вы по-прежнему не найдёте ничего сложнее Линквитца-Рейли.

Помимо фильтров, есть и другие задачи в обработке сигналов — например, извлечения центра из стерео сигнала. С этим тоже всё печально и во всех этих фреймворках подобные возможности отсутствуют. Или синтез/обработка ЛЧМ, или AM/FM/QAM и прочие (де)модуляции. Да даже банальное преобразование Гильберта, корректно реализованное — ни разу не попадалось.

Ну а задача коррекции акустики помещения — так и вообще математически не решаема, и об этом полезно знать перед тем, как за неё браться.

Получается, нужна библиотека, которая решает все возможные задачи? Или выпускать и использовать библиотеки не стоит вообще, пока они не достигнут идеального состояния?

Нет. Получается, что содержание обзора библиотек сильно зависит от того, имел человек опыт работы с ними или нет. Вот допустим, вам потребовалась самая популярная операция — свёртка сигнала с импульсной характеристикой, то бишь FIR-фильтрация. А теперь из этого обзора найдите ответ на следующие вопросы:

1) какая из этих библиотек даёт наиболее удобный интерфейс для этого?
2) какая из этих библиотек поддерживает Dataflow (как наиболее естественный для DSP) интерфейс?
3) какая из этих библиотек поддерживает быструю свёртку с нулевой задержкой?
4) какая из этих библиотек поддерживает (ли) загрузку импульса из .wav, какая из .txt?
5) какой в этих библиотеках предельный размер импульса?
6) какая из этих библиотек поддерживает произвольный размер импульса, а не только степени 2?
7) какая у этих библиотек точность вычислений?
8) какая у этих библиотек производительность?
9) какие из них поддерживают VST, DirectX и прочие плагины?
10) какие из этих библиотек поддерживают многоканальную, а не только стерео, обработку?

Плюс в обзор почему-то не попали намного более популярные библиотеки — NAudio и BASS.dll.

Мне кажется, что если чего-то определённого нет в посте, это не означает, что продолжения не последует в очередной публикации. Здесь нет заявки на всеобъемлющий разбор всех существующих/популярных/лучших библиотек.

Кстати, вывод о том, что много кто из их разработчиков ерундой занимается, это тоже преувеличение с вашей стороны. А вот формат и подача материала для знакомства с темой и для опытных специалистов правда могут отличаться, хотя тут никто и не делал замах на какой-то определённый заход.

Однако всегда можно показать класс самостоятельно, если такое желание у вас будет.

Кстати, вывод о том, что много кто из их разработчиков ерундой занимается, это тоже преувеличение с вашей стороны.
Это не вывод, а лишь впечатление от прочитанного. И не вижу ничего плохого в желании обсудить тему чуть более конкретно — вроде бы комментарии для этого и существуют.

Однако всегда можно показать класс самостоятельно, если такое желание у вас будет.
Стоит ли это понимать как официальное предложение писать в блоге Аудиомании?

Тему можно обсуждать и комментариях, и публиковаться в профильных хабах вроде Звука, Программирования, Алгоритмов и других на Хабре. Думаю, это логично. Да и опыт написания материалов у вас есть.

Мое мнение заключается в том, что разработчики библиотек в этой области имеют право развивать свои продукты в своём темпе. И они могут обладать своими особенностями. Означает ли это, что о библиотеках не стоит говорить — не думаю. Как именно это делать — вопрос открытый. Ваши аргументы мне понятны, как и стремление к максимально детальному разбору возможностей отдельных библиотек. Это только поприветствовать можно

Ну а задача коррекции акустики помещения — так и вообще математически не решаема

Не подскажете, почему?

Потому, что даже в одномерном случае корректирующий фильтр в общем случае является неустойчивым, амплитуда импульса которого увеличивается со временем. Точно так же вы не сможете посчитать значение функции 1/(1+x) для x>=1 через его разложение в ряд — математика процесса здесь идентична. Ну а одномерным сигналом невозможно скорректировать 3-мерную интерференционную картину просто из-за нехватки степеней свободы — также, как и нельзя решить систему из 3-х уравнений с одной переменной.

Спасибо. Позвольте уточню, речь ведь не про корректировку во всём помещении, а только в одной точке прослушивания. Эта задача также не имеет (устойчивого) решения?

Здесь основная проблема — это корректно снять замер в точке из-за наличия интерференционных провалов. Вот в одномерном случае:


Если мерить посередине — амплитуда синей частоты будет околонулевой, если на 1/3 — жёлтой, хотя их амплитуды по факту равны. Сейчас это решают просто сглаживанием АЧХ — хотя понятно, что оно ничем не обусловлено. Нужно делать несколько замеров и усреднять опираясь на математическое обоснование. Как именно — у меня готового решения пока нет, но уверен, что оно должно решаться через вейвлет-преобразование.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий