![]() |
Deluge Firmware 1.3.0
Build date: 2026.10.14
|

Classes | |
| class | Context |
| struct | DelayLine |
| struct | AllPass |
Public Member Functions | |
| FxEngine (std::span< float > signal, std::array< float, 2 > lfo_freqs) | |
| void | Clear () |
| void | SetLFOFrequency (LFOIndex index, float frequency) |
| void | Advance () |
| float & | at (size_t index) |
| float | LFO (LFOIndex lfo) |
Static Public Member Functions | |
| static void | ConstructTopology (FxEngine &e, std::initializer_list< DelayLine * > delays) |
Static Public Attributes | |
| static constexpr float | kLFOStride = 32.0f |
Private Member Functions | |
| void | StepLFO () |
Private Attributes | |
| int32_t | write_ptr_ = 0 |
| std::span< float > | buffer_ |
| DualCosineOscillator | lfo_ |
| size_t | mask |
|
inline |
Reads the current value; stepping is Advance()'s job, so that a topology with several modulated delay lines still only advances the oscillators once per frame.
|
staticconstexpr |
The LFOs only step once every 32 frames, so a configured frequency has to be scaled up to compensate. Skip this and the normalised frequency stays small enough that the approximate cosine's 2 - 32f^2 coefficient rounds to exactly 2.0f – at which point both lanes collapse onto one much slower oscillation and the modulation stops being two independent voices.