Взять и заняться цифровой обработкой сигналов — какие библиотеки стоит попробовать в деле
В прошлый раз мы рассказали о библиотеках для аудиосинтеза на C++. Сегодня поговорим об альтернативных инструментах, которые заточены под работу с объемным звуком и подходят для коррекции акустики помещения, — библиотеках CamillaDSP и DaisySP, а также фреймворке Spatial Audio.
CamillaDSP
Это — открытая rust-библиотека, предназначеннаядля разработки цифровых кроссоверов и акустических фильтров. Её представил программист Хенрик Энквист, который долгое время использовал утилиту BruteFIR для обработки многоканального аудио, но устал от регулярных вылетов и ограничений — в частности, программа умела работать только с КИХ-фильтрами. Собственное решение Хенрика поддерживает цифровые биквадратные (рекурсивные) и нерекурсивные фильтры, использующие свертку в реальном времени методом БПФ. Также присутствует поддержка миксеров для передачи звука между акустическими каналами.
CamillaDSP — это кроссплатформенное решение, которое можно запустить на Windows, Linux и macOS. Пайплайн обработки звука состоит из трех потоков. Первый отвечает за захват аудио и конвертирует семплы в 64-битные файлы с плавающей точкой, второй содержит необходимые фильтры, а третий — передает информацию в буфер звуковоспроизводящего устройства (например, ALSA, PulseAudio, WASAPI или CoreAudio). Также в составе библиотеки присутствует python-скрипт, визуализирующий сформированный пайплайн.
Проект развивается всего пару лет, и в его работе встречаются баги, однако автор быстро исправляет недостатки и добавляет функциональность — обновления выходят примерно раз в месяц. Если вы хотите познакомиться с библиотекой поближе, обратите внимание на документацию. Там есть не только гайды по быстрому старту, но и рекомендации по настройке утилиты для работы на слабых устройствах.
Spatial Audio Framework
Фреймворк представили инженеры из финского университета Аалто. Изначально он предназначался для разработки алгоритмов имитации пространственного звучания, однако со временем функциональность расширили. Сегодня Spatial Audio Framework совместными усилиями развивают не только разработчики, но и специалисты в области пространственных аудиотехнологий.
Среди ключевых модулей в составе фреймворка можно выделить функции векторного амплитудного панорамирования (saf_vbap), а также наборы алгоритмов реверберации для акустического моделирования помещения (saf_reverb) и работы со сферическими антенными решётками (saf_sh). Стоит отметить, что в основу фреймворка положены библиотеки MKL, Apple Accelerate и OpenBLAS, которые содержат методы для решения задач линейной алгебры и используются в высокопроизводительных вычислениях, а также наборы инструкций SIMD вроде SSE, AVX и AVX-512.
Разработчики Spatial Audio Framework рекомендуют начинать знакомство с инструментом на примерах — они собраны в репозитории на GitHub. Например, там представлен код, реализующий кодировщик для работы с амбиофоническим звуком (ambi_enc), или генератор виртуального микрофонного массива с изменяемой диаграммой направленности (beamformer).
DaisySP
Библиотека цифровой обработки сигналов, заточенная под платы Daisy (или Arduino). Это — многофункциональная платформа, которую можно использовать как настольный синтезатор, гитарную педаль или коммутационную плату. Девайс разработала команда программистов из компании Electrosmith, проектирующей софт и инструменты для музыкантов. Платы Daisy можно или приобрести на официальном сайте (стоит $30), или спаять самостоятельно, так как все необходимые схематики и даташиты переданы в open source. В частности, в репозитории на GitHub можно найти файлы для проектировочных программ EAGLE и Fritzing.
Инструмент поддерживает достаточно большое количество синтезаторов звука и фильтров — например, биквадратный, переменного состояния и с гребнеобразным частотным спектром. Из доступных эффект-процессоров можно выделить реверберацию, задержку и децимацию. В то же время DaisySP совместим с фреймворком JUCE для разработки плагинов и GUI-приложений. Кстати, автор JUCE также создал предметно-ориентированный язык для цифровой обработки сигналов, который называется SOUL. О нем мы рассказывали в прошлом материале.
В целом вокруг инструмента формируется активное сообщество. Его участники ведут обсуждение на официальном форуме и в Slack-канале, где делятся собственными проектами на базе DaisySP. Например, один энтузиаст смоделировал монофонический генератор переменной частоты с MIDI-входом.
Дополнительное чтение из нашего «Мира Hi-Fi»: