Самый простой способ реализовать функцию задержки модуля Z-1 для аудио / DSP?

Я работаю над восстановлением некоторых искажающих единиц из Reaktor на основе Infinite Linear Oversampling, который является техникой для уменьшения алиасинга. Он включает в себя интегралы уравнений искажения с единичными задержками. Вот пример схемы:
https://www.native-instruments.com/forum/attachments/ilo-tanh-png.54931/

Мне интересно, как проще всего написать функцию, которая задерживает вывод на одну единицу (Z-1).

Я читаю посты Джордана Харриса Вот, но я не уверен, что следую его методике.

Вот что мне интересно, если бы была та же идея:

double output = nullptr;

inline double getUnitDelay(float& input) {
return output;
input = output;
}

В принципе, он принимает входные данные, но не возвращает их. Он копирует его в другую переменную с именем output, которую, я думаю, нужно инициализировать как nullptr, чтобы в ней было что-то (т.е. nullptr) для первого примера запроса. Не уверен, как это можно сложить в функцию.

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

Тогда, например, его можно использовать в уравнениях, подобных этому:

integral - getUnitDelay(integral) ... ;

Будет ли это работать? Есть ли лучший способ сделать это?

Спасибо как всегда

-1

Решение

В основном проблема заключается в том, что функция задержки устройства не связана с использованием integral данные, как только вы получили это работает.

 int delay1(int input) {
static int previous=0;
int outp = previous;
previous= input;
return outp;
}

Вы должны как-то добавить контекст к задержке, которую вы предоставите функции, которая будет использоваться с этой конкретной переменной.

  int delay_better(int inp, int *context){
int out=*context;
*context=inp;
return out;
}

Общий подход для задержки N-единиц обычно использует кольцевой буфер, который часто даже поддерживается на уровне команд в DSP.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector