|
- #pragma once
-
- #include "WaveShaper.hpp"
- #include "HQTrig.hpp"
-
- // constants for Lockhart waveshaper model
- #define LOCKHART_RL 7.5e3
- #define LOCKHART_R 15e3
- #define LOCKHART_VT 25.864e-3
- #define LOCKHART_Is 10e-16
- #define LOCKHART_THRESHOLD 10e-10
-
-
- namespace dsp {
-
- /**
- * @brief Represents one stage of the Lockhart Wavefolder
- */
- struct LockhartWFStage {
- private:
-
- double fn1, xn1;
- double a, b, d;
-
- public:
-
- LockhartWFStage();
-
- double compute(double x);
- };
-
-
- /**
- * Lockhart Wavefolder class
- */
- struct LockhartWavefolder : WaveShaper {
-
- private:
- LockhartWFStage lh1, lh2, lh3, lh4;
-
- public:
- explicit LockhartWavefolder(float sr);
-
- void init() override;
- void invalidate() override;
- void process() override;
- double compute(double x) override;
- };
-
- }
|