Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::host::modulation::phaser Namespace Reference

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

Typedef Documentation

◆ Engine

Function Documentation

◆ make_phaser_node()

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.

◆ phaser_type_id()

std::string pulp::host::modulation::phaser::phaser_type_id ( int stages)

◆ phaser_worst_case_gain()

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.

◆ wave_from_param()

signal::LfoWave pulp::host::modulation::phaser::wave_from_param ( float value)
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.

Variable Documentation

◆ kCenterHz

state::ParamID pulp::host::modulation::phaser::kCenterHz = 3
inlineconstexpr

◆ kCenterMaxHz

double pulp::host::modulation::phaser::kCenterMaxHz = 5000.0
inlineconstexpr

◆ kCenterMinHz

double pulp::host::modulation::phaser::kCenterMinHz = 20.0
inlineconstexpr

The registered centre-frequency span, in Hz.

◆ kDepth

state::ParamID pulp::host::modulation::phaser::kDepth = 2
inlineconstexpr

◆ kFeedback

state::ParamID pulp::host::modulation::phaser::kFeedback = 4
inlineconstexpr

◆ kMix

state::ParamID pulp::host::modulation::phaser::kMix = 5
inlineconstexpr

◆ kRateHz

state::ParamID pulp::host::modulation::phaser::kRateHz = 1
inlineconstexpr

◆ kRateMaxHz

double pulp::host::modulation::phaser::kRateMaxHz = 10.0
inlineconstexpr

◆ kRateMinHz

double pulp::host::modulation::phaser::kRateMinHz = 0.02
inlineconstexpr

The registered rate span, in Hz — the DSP's documented single-pot range.

◆ kStaggerRatio

state::ParamID pulp::host::modulation::phaser::kStaggerRatio = 7
inlineconstexpr

◆ kStereoSpread

state::ParamID pulp::host::modulation::phaser::kStereoSpread = 6
inlineconstexpr

◆ kWave

state::ParamID pulp::host::modulation::phaser::kWave = 8
inlineconstexpr

◆ kWaveSampleHold

float pulp::host::modulation::phaser::kWaveSampleHold = 5.0f
inlineconstexpr

◆ kWaveSawDown

float pulp::host::modulation::phaser::kWaveSawDown = 3.0f
inlineconstexpr

◆ kWaveSawUp

float pulp::host::modulation::phaser::kWaveSawUp = 2.0f
inlineconstexpr

◆ kWaveSine

float pulp::host::modulation::phaser::kWaveSine = 0.0f
inlineconstexpr

The wave param's stepped encoding, in LfoWave's own declaration order so the two cannot drift apart.

◆ kWaveSmoothRandom

float pulp::host::modulation::phaser::kWaveSmoothRandom = 6.0f
inlineconstexpr

◆ kWaveSquare

float pulp::host::modulation::phaser::kWaveSquare = 4.0f
inlineconstexpr

◆ kWaveTriangle

float pulp::host::modulation::phaser::kWaveTriangle = 1.0f
inlineconstexpr