Ищу библиотеку для обработки звука

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

Я использую библиотеку PortAudio для ввода/вывода аудио, функции Iowa Hills для полосовой фильтрации, LAME MP3 Encoder для кодирования mp3. Мне также нужны функции для эффекта вибрато ( https://en.wikipedia.org/wiki/Vibrato ) и сжатия динамического диапазона Soft-Knee ( https://en.wikipedia.org/wiki/Dynamic_range_compression#Soft_and_hard_knees ). А в исходниках Chaotic-DAW нашел нужные функции .

Это пример того, как я его использую:

#include "daw/effects/rosic_Vibrato.h"
using namespace rosic;
Vibrato Vbr;

Vbr.setAverageDelayTime(1.0); // for the lowest delay

Vbr.setDepth(vibrato_depth);
Vbr.setCycleLength(vibrato_period);
Vbr.setDryWetRatio(vibrato_drywet);
//...

int MyClass::process( const void *input, void *output, 
                  unsigned long, 
                  const PaStreamCallbackTimeInfo *, 
                  PaStreamCallbackFlags, 
                  void * )
{
    //...

    for(int i=0; i<BufferSize; i++)
        Vbr.getSampleFrame(&output[i]); // process a sample

    //...
}

Функции Chaotic-DAW работают нормально.
Проблема в том, что Chaotic-DAW имеет очень большую и разветвленную иерархию классов. Поэтому я не могу портировать свою программу на микроконтроллер , а после добавления эффекта Вибрато даже не могу портировать на Mac OS X.

Итак, я ищу облегченное и независимое от платформы решение для добавления в программу эффекта Vibarto и сжатия динамического диапазона Soft-Knee (и, возможно, чего-то подобного).

Ответы (1)

После долгих поисков и вопросов я написал собственную реализацию эффекта вибрато: https://github.com/Bershov/Vibrato-effect . Код не сложный для понимания и отлично работает. По сути, вибрато — это разновидность частотной модуляции. Его ключевые понятия: переменная задержка, низкочастотное колебание и интерполяция.