stereo channel strip

This commit is contained in:
chriskiefer 2026-01-13 08:23:01 +00:00
parent 75166e85d8
commit 43fae9a915

View file

@ -494,30 +494,43 @@ public:
__attribute__((hot)) stereosample_t __force_inline Process(const stereosample_t x) override __attribute__((hot)) stereosample_t __force_inline Process(const stereosample_t x) override
{ {
float y = x[0]; float y = x[0];
float y1 = x[1];
if (!bypassAll) { if (!bypassAll) {
if (!bypassPrePostGain) { if (!bypassPrePostGain) {
y = tanhf(y * preGain); y = tanhf(y * preGain);
y1 = tanhf(y1 * preGain);
} }
if (!bypassInFilters) if (!bypassInFilters)
{ {
y = inLowPass.loresChamberlain(y, inLowPassCutoff, 1.f); y = inLowPass.loresChamberlain(y, inLowPassCutoff, 1.f);
y = inHighPass.hiresChamberlain(y, inHighPassCutoff, 1.f); y = inHighPass.hiresChamberlain(y, inHighPassCutoff, 1.f);
y1 = inLowPass1.loresChamberlain(y1, inLowPassCutoff, 1.f);
y1 = inHighPass1.hiresChamberlain(y1, inHighPassCutoff, 1.f);
} }
if (!bypassEQ) { if (!bypassEQ) {
y = peak0.play(y); y = peak0.play(y);
y = peak1.play(y); y = peak1.play(y);
y = lowshelf.play(y); y = lowshelf.play(y);
y = highshelf.play(y); y = highshelf.play(y);
y1 = peak0_1.play(y1);
y1 = peak1_1.play(y1);
y1 = lowshelf1.play(y1);
// y1 = highshelf1.play(y1);
} }
if (!bypassComp) { if (!bypassComp) {
y = dyn.compress(y, compThreshold, compRatio, 0.f); y = dyn.compress(y, compThreshold, compRatio, 0.f);
y1 = dyn1.compress(y1, compThreshold, compRatio, 0.f);
} }
if (!bypassPrePostGain) { if (!bypassPrePostGain) {
y = tanhf(y * postGain); y = tanhf(y * postGain);
y1 = tanhf(y1 * postGain);
} }
} }
stereosample_t ret { y, y}; stereosample_t ret { y, y1};
return ret; return ret;
} }
@ -562,6 +575,13 @@ public:
peak1.set(maxiBiquad::PEAK, peak1Freq, peak1Q, peak1Gain); peak1.set(maxiBiquad::PEAK, peak1Freq, peak1Q, peak1Gain);
lowshelf.set(maxiBiquad::LOWSHELF, 100.f, 2.f, 3.f); lowshelf.set(maxiBiquad::LOWSHELF, 100.f, 2.f, 3.f);
highshelf.set(maxiBiquad::HIGHSHELF, 1000.f, 2.f, 3.f); highshelf.set(maxiBiquad::HIGHSHELF, 1000.f, 2.f, 3.f);
dyn1.setAttackHigh(compAttack);
dyn1.setReleaseHigh(compRelease);
peak0_1.set(maxiBiquad::PEAK, peak0Freq, peak0Q, peak0Gain);
peak1_1.set(maxiBiquad::PEAK, peak1Freq, peak1Q, peak1Gain);
lowshelf1.set(maxiBiquad::LOWSHELF, 100.f, 2.f, 3.f);
highshelf1.set(maxiBiquad::HIGHSHELF, 1000.f, 2.f, 3.f);
} }
@ -573,6 +593,7 @@ protected:
float postGain=1.f; float postGain=1.f;
maxiFilter inHighPass, inLowPass; maxiFilter inHighPass, inLowPass;
maxiFilter inHighPass1, inLowPass1;
float inLowPassCutoff=200.f; float inLowPassCutoff=200.f;
float inHighPassCutoff=2000.f; float inHighPassCutoff=2000.f;
@ -604,13 +625,17 @@ protected:
bool bypassPrePostGain = false; bool bypassPrePostGain = false;
bool bypassInFilters = false; bool bypassInFilters = false;
maxiDynamicsLite dyn; maxiDynamicsLite dyn, dyn1;
maxiBiquad lowshelf; maxiBiquad lowshelf;
maxiBiquad peak0; maxiBiquad peak0;
maxiBiquad peak1; maxiBiquad peak1;
maxiBiquad highshelf; maxiBiquad highshelf;
maxiBiquad lowshelf1;
maxiBiquad peak0_1;
maxiBiquad peak1_1;
maxiBiquad highshelf1;
}; };
#endif #endif