feat: adding wave folding distortion

This commit is contained in:
Liam Kerr 2026-08-02 23:13:42 +01:00
parent e7ff4fcc18
commit b8f0211f4b
3 changed files with 19 additions and 3 deletions

View file

@ -33,5 +33,16 @@ float Clipper::clip(const float in) {
float normalized = (in / clip_) * 0.75f;
return std::tanh(normalized) * clip_;
}
case kClipperModeFold: {
float x = in;
while (x > clip_ || x < -clip_) {
if (x > clip_) {
x = 2.0f * clip_ - x;
} else if (x < -clip_) {
x = -2.0f * clip_ - x;
}
}
return x;
}
}
}

View file

@ -5,7 +5,12 @@
class Clipper {
public:
enum ClipperMode { kClipperModeSoft, kClipperModeHard, kClipperModeCount };
enum ClipperMode {
kClipperModeSoft,
kClipperModeHard,
kClipperModeFold,
kClipperModeCount
};
Clipper(float init_clip = 1.0f, ClipperMode mode = kClipperModeSoft);

View file

@ -45,8 +45,8 @@ protected:
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"}};
parameter.enumValues.values = new ParameterEnumerationValue[3]{
{0.0f, "Soft"}, {1.0f, "Hard"}, {2.0f, "Fold"}};
break;
}
}