Задача: сделать устройство обработки звука в реальном времени (то есть с минимальной, незаметной задержкой).
Сама обработка довольно простая - наложение эквалайзера в определенные моменты времени.
Пробовал сделать на компьютере - в Windows задержка очень большая (ну грубо говоря ~0.4 сек). В Linux (Ubuntu 14.04) после удаления pulseaudio задержка намного меньше, но всё равно недопустима большая (~0.1-0.2 сек). В операционных системах делал т.к. хотел в конечном итоге в качестве устройства использовать одноплатный компьютер.
Вопрос: есть ли смысл разбираться с
1. realtime версией Linux'a
или
2. установкой и настройкой драйвера JACK на Linux?
Или стоит разобраться с каким-то контроллером + АЦП-ЦАП (или + звуковая карта)?
Замечание: устройство для развития слуха музыкантов, т.е. нужен более-менее нормальный звук. А алгоритм обработки еще точно неизвестен, но известно что вычислительно он простой.
Решение есть: можно работать со звуком в реальном времени в обычных операционных системах. Как выяснилось, для realtime работы со звуком особое ядро не требуется. Достаточно кроссплатформенного инструмента Jack (Jack audio connection kit) jackaudio.org/faq/realtime_vs_realtime_kernel.html
В Linux, например, достаточно разрешить риалтаймовый приоритет для Jack'a: jackaudio.org/faq/linux_rt_config.html
и использовать минимальный размер буфера, который заработает. У меня звук работает на длине буфера от 64, его и использую.
На самом деле, есть специальные процессоры - эквалайзеры в виде отдельной микросхемы. Расскажите более подробно о задаче - диапазон частот, глубина эквализации, количество полос. А то окажется что вам - в музыкальный магазин за педалькой.
Надо сделать устройство для развития музыкального слуха. По принципу работы устройств аудио-психо-фонологии. То есть, сам алгоритм еще надо откопать где-то в литературе.
А, вы про параметрическую эквализацию, тогда да, эьто цифровой фильтр (второго вроде порядка, я забыл уже, давно это было). Я думал - 1/3 октавная непрерывная.