feat: adding wave folding distortion
This commit is contained in:
parent
e7ff4fcc18
commit
b8f0211f4b
3 changed files with 19 additions and 3 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue