Classes | |
| struct | Instance |
Typedefs | |
| using | Engine = signal::PhaserStages |
Functions | |
| signal::LfoWave | wave_from_param (float value) |
| Decodes the stepped wave param. | |
| std::string | phaser_type_id (int stages) |
| float | phaser_worst_case_gain () |
| Worst-case linear gain for the Forge registry (series law 8). | |
| CustomNodeType | make_phaser_node (int stages=Engine::kStageCountDefault) |
| A swept allpass cascade as a lowerable custom node. | |
Variables | |
| constexpr state::ParamID | kRateHz = 1 |
| constexpr state::ParamID | kDepth = 2 |
| constexpr state::ParamID | kCenterHz = 3 |
| constexpr state::ParamID | kFeedback = 4 |
| constexpr state::ParamID | kMix = 5 |
| constexpr state::ParamID | kStereoSpread = 6 |
| constexpr state::ParamID | kStaggerRatio = 7 |
| constexpr state::ParamID | kWave = 8 |
| constexpr double | kRateMinHz = 0.02 |
| The registered rate span, in Hz — the DSP's documented single-pot range. | |
| constexpr double | kRateMaxHz = 10.0 |
| constexpr double | kCenterMinHz = 20.0 |
| The registered centre-frequency span, in Hz. | |
| constexpr double | kCenterMaxHz = 5000.0 |
| constexpr float | kWaveSine = 0.0f |
| The wave param's stepped encoding, in LfoWave's own declaration order so the two cannot drift apart. | |
| constexpr float | kWaveTriangle = 1.0f |
| constexpr float | kWaveSawUp = 2.0f |
| constexpr float | kWaveSawDown = 3.0f |
| constexpr float | kWaveSquare = 4.0f |
| constexpr float | kWaveSampleHold = 5.0f |
| constexpr float | kWaveSmoothRandom = 6.0f |
| CustomNodeType pulp::host::modulation::phaser::make_phaser_node | ( | int | stages = Engine::kStageCountDefault | ) |
A swept allpass cascade as a lowerable custom node.
stages is a REGISTRATION-TIME REALIZATION. Latency is zero at every count, so — as with the chorus — the latency rule is not what forces it. The notch law is: the module publishes notch_frequency_hz(k, stages, fc, fs) and notch_count(stages), both taking the stage count as an ARGUMENT, which is the same shape as the diode-bridge compressor's separate static_curve_feedback_db() — the measured response is a different function per count, not a different value of one function. Automating it would move the number of notches under a user who is listening to them.
The count is also rounded down to even inside the DSP, so half the values a param would accept are not distinct settings.
wave DOES inject, including the two stochastic shapes: it selects which shape one unchanged LFO evaluates, changes no state and no latency, and is a front-panel switch on several of the units this models.
| std::string pulp::host::modulation::phaser::phaser_type_id | ( | int | stages | ) |
| float pulp::host::modulation::phaser::phaser_worst_case_gain | ( | ) |
Worst-case linear gain for the Forge registry (series law 8).
The topology has a feedback path, so this is a loop bound rather than a constructive sum: 1/(1 − kFeedbackMax). The DSP publishes it as a constexpr and its suite asserts realised gain stays under it, so this reports rather than re-derives — and it is independent of stage count, because the cascade inside the loop is allpass.
|
inline |
Decodes the stepped wave param.
Rounds rather than truncates, so a host ramping to a stepped value lands on the nearest step instead of sitting on the one below it for the whole ramp.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
The registered centre-frequency span, in Hz.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
The registered rate span, in Hz — the DSP's documented single-pot range.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
The wave param's stepped encoding, in LfoWave's own declaration order so the two cannot drift apart.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |