
Vari-Mu Bus Compressor + EQ
Lake Ontario
A 2-channel Vari-Mu bus compressor with a full 4-band EQ per channel - glue and tone-shaping in the same signal path.
A catalog of working audio interfaces spanning dynamics, EQ, saturation, channel strips, spatial effects, and mastering. Each design gives the sound its own visual identity.
Catalog snapshot: September 4, 2026

Vari-Mu Bus Compressor + EQ
A 2-channel Vari-Mu bus compressor with a full 4-band EQ per channel - glue and tone-shaping in the same signal path.

Kick Drum Channel Strip
A complete kick drum channel strip - gate, EQ, transient shaping, compression, saturation, and a blendable sub generator.

Opto Leveling Amplifier
A dual-channel opto leveling amplifier - two fully independent channels, Auto Level, and a genuine Comp/Limit switch.

Class A Tape Preamp
Dual-channel Class A tape-preamp character that sounds better than bypass before you touch a knob. Character EQ recolors the whole plugin at once.

Opto Leveling Amplifier
An opto-style leveler with Auto Gain Match - flip it on and the output holds steady while you dial in Peak Reduction, so you hear the compression, not the volume.

Mic Pre, Compressor, EQ
A dual-channel tube mic pre and compressor with a beefy Vari-Mu gain stage and a built-in 2-band EQ. Push the Input, feel the tube stage wake up.

31-Band Tube Graphic EQ
A tube-driven stereo 31-band 1/3-octave graphic EQ with ±24 dB per band and a COLOR knob that recolors the whole plugin live.

Vari-Mu Compressor
The gluiest mix glue you've ever heard. Dual-channel Vari-Mu compression with Stereo, Dual, and Mid-Side modes, built-in saturation, and real VU ballistics.

American Tube Preamp
Flip it on. It already sounds better. Two independent channels of American tube preamp character. Grit on the drums. Teeth in the low end.

Tape Machine Strip
Let's Rock. Two independent tape machine channels. REC hits the iron, REP brings it back. The glue your tracks have been missing - free.

Channel Strip
Gate, compressor, grind, doubler, delay, reverb, limiter - complete chain in one insert.

3D Autopanner
Circular autopanner with ITD, front-back EQ, and volume shaping. Real depth, not just left-right.

Mix & Mastering EQ
Dual-channel mastering EQ. Twelve bands, M/S mode, hardware weight, and Delta monitoring.

Vocal Channel Strip
Opto comp, parametric EQ, dual de-esser, and doubler - one insert, every stage.

FET Compressor
Dual-channel FET compression. Fast, punchy, forward.

Bus Compressor
Three compressors. One chain. FET punch, VCA glue, Vari-Mu warmth - in any order.

Parallel Compressor
Parallel RMS compression. Input-driven saturation. Steamdriven dynamics.

Mastering Limiter
Measure. Target. Deliver. True-peak limiting with one-click loudness targeting.


High-Frequency Balance
Six-band presence control. Air without the edge.

Low-End Balance
Five-band spectral correction. Keep your low end honest.

Mastering
Six decades of mastering character. Pick the era, set the blend.
A screenshot proves visual design. It does not prove the plugin actually processes audio correctly. Below is real, unedited C++ from Magic Buss’s six-band parametric EQ: production source, currently shipping, not a demo written for this portfolio.
DSP/ParametricEQ.hPeaking, shelf, highpass, and lowpass coefficient derivations, plus the direct-form-I process step.
struct Biquad
{
float b0 = 1.f, b1 = 0.f, b2 = 0.f, a1 = 0.f, a2 = 0.f;
float z1 = 0.f, z2 = 0.f;
void reset() { z1 = z2 = 0.f; }
inline float process(float x)
{
const float y = b0 * x + z1;
z1 = b1 * x + z2 - a1 * y;
z2 = b2 * x - a2 * y;
return y;
}
void setBypass() { b0 = 1.f; b1 = b2 = a1 = a2 = 0.f; }
void setPeaking(double sr, float freq, float q, float gainDb)
{
const double A = std::pow(10.0, gainDb / 40.0);
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double alpha = std::sin(w0) / (2.0 * juce::jmax(0.05, (double)q));
const double cosw0 = std::cos(w0);
const double a0 = 1.0 + alpha / A;
b0 = (float)((1.0 + alpha * A) / a0);
b1 = (float)((-2.0 * cosw0) / a0);
b2 = (float)((1.0 - alpha * A) / a0);
a1 = (float)((-2.0 * cosw0) / a0);
a2 = (float)((1.0 - alpha / A) / a0);
}
void setLowShelf(double sr, float freq, float q, float gainDb)
{
const double A = std::pow(10.0, gainDb / 40.0);
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double cosw0 = std::cos(w0);
const double sinw0 = std::sin(w0);
const double alpha = sinw0 / 2.0 * (1.0 / juce::jmax(0.05, (double)q));
const double twoSqrtAalpha = 2.0 * std::sqrt(A) * alpha;
const double a0 = (A + 1.0) + (A - 1.0) * cosw0 + twoSqrtAalpha;
b0 = (float)(A * ((A + 1.0) - (A - 1.0) * cosw0 + twoSqrtAalpha) / a0);
b1 = (float)(2.0 * A * ((A - 1.0) - (A + 1.0) * cosw0) / a0);
b2 = (float)(A * ((A + 1.0) - (A - 1.0) * cosw0 - twoSqrtAalpha) / a0);
a1 = (float)(-2.0 * ((A - 1.0) + (A + 1.0) * cosw0) / a0);
a2 = (float)(((A + 1.0) + (A - 1.0) * cosw0 - twoSqrtAalpha) / a0);
}
void setHighShelf(double sr, float freq, float q, float gainDb)
{
const double A = std::pow(10.0, gainDb / 40.0);
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double cosw0 = std::cos(w0);
const double sinw0 = std::sin(w0);
const double alpha = sinw0 / 2.0 * (1.0 / juce::jmax(0.05, (double)q));
const double twoSqrtAalpha = 2.0 * std::sqrt(A) * alpha;
const double a0 = (A + 1.0) - (A - 1.0) * cosw0 + twoSqrtAalpha;
b0 = (float)(A * ((A + 1.0) + (A - 1.0) * cosw0 + twoSqrtAalpha) / a0);
b1 = (float)(-2.0 * A * ((A - 1.0) + (A + 1.0) * cosw0) / a0);
b2 = (float)(A * ((A + 1.0) + (A - 1.0) * cosw0 - twoSqrtAalpha) / a0);
a1 = (float)(2.0 * ((A - 1.0) - (A + 1.0) * cosw0) / a0);
a2 = (float)(((A + 1.0) - (A - 1.0) * cosw0 - twoSqrtAalpha) / a0);
}
void setHighpass(double sr, float freq, float q)
{
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double cosw0 = std::cos(w0);
const double alpha = std::sin(w0) / (2.0 * juce::jmax(0.05, (double)q));
const double a0 = 1.0 + alpha;
b0 = (float)(((1.0 + cosw0) / 2.0) / a0);
b1 = (float)((-(1.0 + cosw0)) / a0);
b2 = (float)(((1.0 + cosw0) / 2.0) / a0);
a1 = (float)((-2.0 * cosw0) / a0);
a2 = (float)((1.0 - alpha) / a0);
}
void setLowpass(double sr, float freq, float q)
{
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double cosw0 = std::cos(w0);
const double alpha = std::sin(w0) / (2.0 * juce::jmax(0.05, (double)q));
const double a0 = 1.0 + alpha;
b0 = (float)(((1.0 - cosw0) / 2.0) / a0);
b1 = (float)((1.0 - cosw0) / a0);
b2 = (float)(((1.0 - cosw0) / 2.0) / a0);
a1 = (float)((-2.0 * cosw0) / a0);
a2 = (float)((1.0 - alpha) / a0);
}
// One-pole, used for the 6dB/oct slope option.
void setOnePoleHighpass(double sr, float freq)
{
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double k = std::tan(w0 / 2.0);
const double a0 = 1.0 + k;
b0 = (float)( 1.0 / a0);
b1 = (float)(-1.0 / a0);
b2 = 0.f;
a1 = (float)(-(1.0 - k) / a0);
a2 = 0.f;
}
void setOnePoleLowpass(double sr, float freq)
{
const double w0 = 2.0 * juce::MathConstants<double>::pi * freq / sr;
const double k = std::tan(w0 / 2.0);
const double a0 = 1.0 + k;
b0 = (float)(k / a0);
b1 = (float)(k / a0);
b2 = 0.f;
a1 = (float)(-(1.0 - k) / a0);
a2 = 0.f;
}
};DSP/ParametricEQ.hConfigurable HP/LP slopes (6/12/18/24 dB per octave via cascaded one-pole and biquad sections), per-band enable, and the per-sample signal path.
class StereoChannelEQ
{
public:
void prepare(double sampleRate) { sr = sampleRate; reset(); }
void reset()
{
for (auto* f : { &hp1, &hp2, &lp1, &lp2, &low, &loMid, &hiMid, &high })
f->reset();
}
struct Settings
{
int hpSlope = 0; float hpFreq = 20.f;
int lpSlope = 0; float lpFreq = 20000.f;
bool lowShelf = true; float lowFreq = 100.f; float lowGain = 0.f; float lowQ = 0.7f; bool lowEnabled = true;
float loMidFreq = 300.f; float loMidGain = 0.f; float loMidQ = 0.7f; bool loMidEnabled = true;
float hiMidFreq = 3000.f; float hiMidGain = 0.f; float hiMidQ = 0.7f; bool hiMidEnabled = true;
bool highShelf = true; float highFreq = 8000.f; float highGain = 0.f; float highQ = 0.7f; bool highEnabled = true;
};
void update(const Settings& s)
{
hpSlope = s.hpSlope;
lpSlope = s.lpSlope;
if (s.hpSlope >= 1) hp1.setOnePoleHighpass(sr, s.hpFreq); else hp1.setBypass();
if (s.hpSlope >= 2) hp2.setHighpass(sr, s.hpFreq, 0.7071f); else hp2.setBypass();
// slopes 3 and 4 reuse hp2 as a second 2nd-order section for steeper roll-off
hp2b.setBypass();
if (s.hpSlope == 3) hp2b.setOnePoleHighpass(sr, s.hpFreq);
if (s.hpSlope == 4) hp2b.setHighpass(sr, s.hpFreq, 1.3066f);
if (s.lpSlope >= 1) lp1.setOnePoleLowpass(sr, s.lpFreq); else lp1.setBypass();
if (s.lpSlope >= 2) lp2.setLowpass(sr, s.lpFreq, 0.7071f); else lp2.setBypass();
lp2b.setBypass();
if (s.lpSlope == 3) lp2b.setOnePoleLowpass(sr, s.lpFreq);
if (s.lpSlope == 4) lp2b.setLowpass(sr, s.lpFreq, 1.3066f);
if (!s.lowEnabled) low.setBypass();
else if (s.lowShelf) low.setLowShelf(sr, s.lowFreq, s.lowQ, s.lowGain);
else low.setPeaking(sr, s.lowFreq, s.lowQ, s.lowGain);
if (!s.loMidEnabled) loMid.setBypass();
else loMid.setPeaking(sr, s.loMidFreq, s.loMidQ, s.loMidGain);
if (!s.hiMidEnabled) hiMid.setBypass();
else hiMid.setPeaking(sr, s.hiMidFreq, s.hiMidQ, s.hiMidGain);
if (!s.highEnabled) high.setBypass();
else if (s.highShelf) high.setHighShelf(sr, s.highFreq, s.highQ, s.highGain);
else high.setPeaking(sr, s.highFreq, s.highQ, s.highGain);
}
inline float process(float x)
{
if (hpSlope >= 1) x = hp1.process(x);
if (hpSlope >= 2) x = hp2.process(x);
if (hpSlope >= 3) x = hp2b.process(x);
x = low.process(x);
x = loMid.process(x);
x = hiMid.process(x);
x = high.process(x);
if (lpSlope >= 1) x = lp1.process(x);
if (lpSlope >= 2) x = lp2.process(x);
if (lpSlope >= 3) x = lp2b.process(x);
return x;
}
private:
double sr = 44100.0;
int hpSlope = 0, lpSlope = 0;
Biquad hp1, hp2, hp2b, lp1, lp2, lp2b;
Biquad low, loMid, hiMid, high;
};Magic Buss · channel-independent opto, VCA, and tube compressors with a six-band parametric EQ. This EQ stage runs identically regardless of which compressor character is selected.