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;
|
float normalized = (in / clip_) * 0.75f;
|
||||||
return std::tanh(normalized) * clip_;
|
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 {
|
class Clipper {
|
||||||
public:
|
public:
|
||||||
enum ClipperMode { kClipperModeSoft, kClipperModeHard, kClipperModeCount };
|
enum ClipperMode {
|
||||||
|
kClipperModeSoft,
|
||||||
|
kClipperModeHard,
|
||||||
|
kClipperModeFold,
|
||||||
|
kClipperModeCount
|
||||||
|
};
|
||||||
|
|
||||||
Clipper(float init_clip = 1.0f, ClipperMode mode = kClipperModeSoft);
|
Clipper(float init_clip = 1.0f, ClipperMode mode = kClipperModeSoft);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@ protected:
|
||||||
parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
|
parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
|
||||||
parameter.enumValues.count = Clipper::kClipperModeCount;
|
parameter.enumValues.count = Clipper::kClipperModeCount;
|
||||||
parameter.enumValues.restrictedMode = true;
|
parameter.enumValues.restrictedMode = true;
|
||||||
parameter.enumValues.values =
|
parameter.enumValues.values = new ParameterEnumerationValue[3]{
|
||||||
new ParameterEnumerationValue[2]{{0.0f, "Soft"}, {1.0f, "Hard"}};
|
{0.0f, "Soft"}, {1.0f, "Hard"}, {2.0f, "Fold"}};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue