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

Namespaces

namespace  chorus
namespace  phaser
namespace  vibrato

Functions

float ssb_frequency_shifter_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
signal::FrequencyShiftMode mode_from_param (float value)
 Decodes the stepped mode param.
CustomNodeType make_frequency_shifter_node ()
 The Bode/Moog single-sideband frequency shifter as a lowerable custom node.

Variables

constexpr const char * kSsbFrequencyShifterTypeId = "modulation.frequency_shifter_ssb"
constexpr state::ParamID kShiftHz = 1
constexpr state::ParamID kFeedback = 2
constexpr state::ParamID kFeedbackDelayMs = 3
constexpr state::ParamID kMix = 4
constexpr state::ParamID kShiftMode = 5
constexpr state::ParamID kStereoSpread = 6
constexpr float kModeUp = 0.0f
 The mode param's stepped encoding.
constexpr float kModeDown = 1.0f
constexpr float kModeDualMono = 2.0f
constexpr float kModeStereoSplit = 3.0f

Function Documentation

◆ make_frequency_shifter_node()

CustomNodeType pulp::host::modulation::make_frequency_shifter_node ( )

The Bode/Moog single-sideband frequency shifter as a lowerable custom node.

◆ mode_from_param()

signal::FrequencyShiftMode pulp::host::modulation::mode_from_param ( float value)
inline

Decodes the stepped mode param.

Rounds rather than truncates, so a host that ramps to a stepped value lands on the nearest step instead of the one below it for the whole ramp.

◆ ssb_frequency_shifter_worst_case_gain()

float pulp::host::modulation::ssb_frequency_shifter_worst_case_gain ( )

Worst-case linear gain for the Forge registry (series law 8).

The topology HAS a feedback loop, so unlike the feedforward compressor there is a bound to argue rather than a ceiling to read off. The argument is in the DSP header: every element in the loop is allpass, a convex interpolation, or the combine (whose retained-sideband gain is at most 1), leaving the DC blocker's 2/(1 + p) as the only element above unity. The module budgets kGshiftBudget for it, so per-pass loop gain is at most kMaxFeedback · kGshiftBudget and the steady-state envelope is 1/(1 − that). Both factors and the resulting peak are measured by the DSP suite; this function only restates the arithmetic they confirm.

Variable Documentation

◆ kFeedback

state::ParamID pulp::host::modulation::kFeedback = 2
inlineconstexpr

◆ kFeedbackDelayMs

state::ParamID pulp::host::modulation::kFeedbackDelayMs = 3
inlineconstexpr

◆ kMix

state::ParamID pulp::host::modulation::kMix = 4
inlineconstexpr

◆ kModeDown

float pulp::host::modulation::kModeDown = 1.0f
inlineconstexpr

◆ kModeDualMono

float pulp::host::modulation::kModeDualMono = 2.0f
inlineconstexpr

◆ kModeStereoSplit

float pulp::host::modulation::kModeStereoSplit = 3.0f
inlineconstexpr

◆ kModeUp

float pulp::host::modulation::kModeUp = 0.0f
inlineconstexpr

The mode param's stepped encoding.

Ordered so 0 is the default and the two mono-equivalent modes sit next to each other.

◆ kShiftHz

state::ParamID pulp::host::modulation::kShiftHz = 1
inlineconstexpr

◆ kShiftMode

state::ParamID pulp::host::modulation::kShiftMode = 5
inlineconstexpr

◆ kSsbFrequencyShifterTypeId

const char* pulp::host::modulation::kSsbFrequencyShifterTypeId = "modulation.frequency_shifter_ssb"
inlineconstexpr

◆ kStereoSpread

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