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

Classes

struct  Instance

Typedefs

using Comp = signal::DiodeBridgeCompressor

Functions

float diode_bridge_compressor_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
CustomNodeType make_diode_bridge_compressor_node (bool feedback=true, bool adaa=true)
 feedback picks the registered type id; adaa is the antialiasing policy, frozen at registration following the saturator.

Variables

constexpr const char * kTypeId = "dynamics.diode_bridge_compressor"
 Feedback detection — the lineage's own topology, and the DSP's default.
constexpr const char * kFeedforwardTypeId = "dynamics.diode_bridge_compressor_feedforward"
 Feedforward detection — the same bridge, sensed from the input.
constexpr state::ParamID kThresholdDb = 1
constexpr state::ParamID kRatio = 2
constexpr state::ParamID kKneeDb = 3
constexpr state::ParamID kAttackMs = 4
constexpr state::ParamID kReleaseMs = 5
constexpr state::ParamID kMakeupDb = 6
constexpr state::ParamID kCharacter = 7
constexpr state::ParamID kMixPercent = 8
constexpr state::ParamID kScHpfHz = 9
constexpr state::ParamID kAutoRelease = 10

Typedef Documentation

◆ Comp

Function Documentation

◆ diode_bridge_compressor_worst_case_gain()

float pulp::host::dynamics::diode::diode_bridge_compressor_worst_case_gain ( )

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

The DSP's own static bound: makeup ceiling times both transformer brackets' peak gain, with the bridge contributing at most 1 because it is an attenuator. Its suite asserts that bound; this reports it rather than re-deriving it, so the two cannot drift.

◆ make_diode_bridge_compressor_node()

CustomNodeType pulp::host::dynamics::diode::make_diode_bridge_compressor_node ( bool feedback = true,
bool adaa = true )

feedback picks the registered type id; adaa is the antialiasing policy, frozen at registration following the saturator.

ADAA does not move this member's latency — it reports 0 either way, because the bridge is memoryless and the one-poles add phase rather than delay — so the reason it is frozen is the saturator's other one: it is a fidelity/CPU policy for the artifact's life, not a control anyone automates, and flipping it per sample would swap a memoryless evaluation for a difference quotient mid-waveform and click.

Variable Documentation

◆ kAttackMs

state::ParamID pulp::host::dynamics::diode::kAttackMs = 4
inlineconstexpr

◆ kAutoRelease

state::ParamID pulp::host::dynamics::diode::kAutoRelease = 10
inlineconstexpr

◆ kCharacter

state::ParamID pulp::host::dynamics::diode::kCharacter = 7
inlineconstexpr

◆ kFeedforwardTypeId

const char* pulp::host::dynamics::diode::kFeedforwardTypeId = "dynamics.diode_bridge_compressor_feedforward"
inlineconstexpr

Feedforward detection — the same bridge, sensed from the input.

◆ kKneeDb

state::ParamID pulp::host::dynamics::diode::kKneeDb = 3
inlineconstexpr

◆ kMakeupDb

state::ParamID pulp::host::dynamics::diode::kMakeupDb = 6
inlineconstexpr

◆ kMixPercent

state::ParamID pulp::host::dynamics::diode::kMixPercent = 8
inlineconstexpr

◆ kRatio

state::ParamID pulp::host::dynamics::diode::kRatio = 2
inlineconstexpr

◆ kReleaseMs

state::ParamID pulp::host::dynamics::diode::kReleaseMs = 5
inlineconstexpr

◆ kScHpfHz

state::ParamID pulp::host::dynamics::diode::kScHpfHz = 9
inlineconstexpr

◆ kThresholdDb

state::ParamID pulp::host::dynamics::diode::kThresholdDb = 1
inlineconstexpr

◆ kTypeId

const char* pulp::host::dynamics::diode::kTypeId = "dynamics.diode_bridge_compressor"
inlineconstexpr

Feedback detection — the lineage's own topology, and the DSP's default.