svf scaledResonance

master
zetaPRIME 2022-03-17 06:48:43 -04:00
parent b8f9664f7c
commit e5c664a5ad
2 changed files with 8 additions and 3 deletions

View File

@ -1,6 +1,7 @@
#pragma once
#include <cstring>
#include <cmath>
#include "data/audioframe.h"
@ -24,5 +25,7 @@ namespace Xybrid::NodeLib {
void process(Data::AudioFrame in, double freq, double res, int oversamp = DEFAULT_OVERSAMP);
inline void reset() { low = 0.0; high = 0.0; band = 0.0; notch = 0.0; }
static inline double scaledResonance(double r) { return std::pow(10, r*5); }
};
}

View File

@ -74,11 +74,13 @@ void SVF::process() {
in->pull();
out->pull();
auto r = filter.scaledResonance(resonance);
size_t ts = audioEngine->curTickSize();
for (size_t f = 0; f < ts; f++) {
AudioFrame inp = (*in)[f];
filter.process(inp, frequency, resonance);
filter.process(inp, frequency, r);
switch (mode) {
case Low:
@ -132,7 +134,7 @@ void SVF::onGadgetCreated() {
return qs("?");
};
(new KnobGadget(l))->bind(frequency)->setLabel(qs("Freq"))->setRange(0.0, 16000.0, 50.0, KnobGadget::NoStep)->setDefault(6400.0);
(new KnobGadget(l))->bind(resonance)->setLabel(qs("Res"))->setRange(0.0, 100.0, 1.0)->setDefault(0.0);
(new KnobGadget(l))->bind(frequency)->setLabel(qs("Freq"))->setRange(0.0, 16000.0, 25.0, KnobGadget::NoStep)->setDefault(6400.0);
(new KnobGadget(l))->bind(resonance)->setLabel(qs("Res"))->setRange(0.0, 1.0, 0.01)->setDefault(0.0);
(new KnobGadget(l))->bind(mode)->setLabel(qs("Mode"))->setTextFunc(modetxt)->setRange(0, Notch, 1, KnobGadget::BigStep)->setDefault(0);
}