feat: add soft clipping mode

This commit is contained in:
Liam Kerr 2026-08-02 22:58:56 +01:00
parent 556519a750
commit e7ff4fcc18
5 changed files with 45 additions and 13 deletions

View file

@ -9,7 +9,7 @@
#define DISTRHO_PLUGIN_NUM_INPUTS 2
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2
#define DISTRHO_PLUGIN_NUM_PARAMETERS 1
#define DISTRHO_PLUGIN_NUM_PARAMETERS 2
#define DISTRHO_PLUGIN_WANT_PROGRAMS 0
#define DISTRHO_PLUGIN_WANT_STATE 0

View file

@ -11,6 +11,7 @@ class SquidgeDistortion : public Plugin {
public:
enum Parameters {
kParamGain,
kParamClipMode,
kParameterCount // must be last
};
SquidgeDistortion() : Plugin(kParameterCount, 0, 0), gain_(2.0f) {}
@ -26,7 +27,6 @@ protected:
int64_t getUniqueId() const override { return d_cconst('S', 'Q', 'D', 'T'); }
void initParameter(uint32_t index, Parameter &parameter) override {
parameter.unit = "!";
switch (index) {
case kParamGain:
parameter.name = "Gain";
@ -35,7 +35,18 @@ protected:
parameter.ranges.def = 2.0f;
parameter.ranges.max = 10.0f;
parameter.hints = kParameterIsAutomatable;
break;
case kParamClipMode:
parameter.name = "Clip Mode";
parameter.symbol = "clipmode";
parameter.ranges.min = 0.0f;
parameter.ranges.def = 0.0f;
parameter.ranges.max = Clipper::kClipperModeCount - 1;
parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
parameter.enumValues.count = Clipper::kClipperModeCount;
parameter.enumValues.restrictedMode = true;
parameter.enumValues.values =
new ParameterEnumerationValue[2]{{0.0f, "Soft"}, {1.0f, "Hard"}};
break;
}
}
@ -44,6 +55,8 @@ protected:
switch (index) {
case kParamGain:
return gain_.getGain();
case kParamClipMode:
return (float)clipper_.getMode();
}
return 0.0f;
}
@ -53,6 +66,9 @@ protected:
case kParamGain:
gain_.setGain(value);
break;
case kParamClipMode:
clipper_.setMode((Clipper::ClipperMode)value);
break;
}
}