add wavefolder

This commit is contained in:
2024-09-30 07:03:51 +02:00
parent 1220c8dba5
commit 9485c74961
2 changed files with 42 additions and 2 deletions

38
clip/wavefolder.h Normal file
View File

@@ -0,0 +1,38 @@
#pragma once
namespace trnr {
class wavefolder {
public:
float amount = 1.f;
float process_sample(float& _sample)
{
if (amount > 1.f) { return fold(_sample * amount); }
return 0.f;
}
private:
float fold(float _sample)
{
// fold positive values
if (_sample > 1.0) {
_sample = 2.0 - _sample;
if (_sample < 0.0) { _sample = -_sample; }
return fold(_sample);
}
// fold negative values
else if (_sample < -1.0) {
_sample = -2.0 - _sample;
if (_sample > 0.0) { _sample = -_sample; }
return fold(_sample);
} else {
return _sample;
}
}
};
}; // namespace trnr