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

Classes

struct  CurveRange
 The EQ curves an archetype's front panel exposes, as the inclusive [min, max] of the stepped kEqCurve parameter. More...
struct  TapeMachineInstance

Typedefs

using Archetype = signal::TapeArchetype
using Curve = signal::TapeCurve

Functions

CurveRange curve_range (Archetype archetype) noexcept
const char * tape_type_id (Archetype archetype) noexcept
const char * tape_default_name (Archetype archetype) noexcept
Archetype normalized_archetype (Archetype archetype) noexcept
float tape_machine_insertion_gain_bound (Archetype archetype, double sample_rate)
 The largest gain any single stage of this insert can present, at the realization's own speed and the given sample rate.
CustomNodeType make_tape_machine_node (Archetype archetype, double speed_ips=0.0, bool pre_echo_enabled=false)
 One factory, three registered realizations.
ForgeNodeDescriptor descriptor ()

Variables

constexpr const char * kAmpexTypeId = "tape.ampex350_440"
constexpr const char * kStuderTypeId = "tape.studer_a800"
constexpr const char * kCassetteTypeId = "tape.cassette"
constexpr state::ParamID kEqCurve = 1
constexpr state::ParamID kBias = 2
constexpr state::ParamID kDrive = 3
constexpr state::ParamID kAge = 4
constexpr state::ParamID kCrosstalkDb = 5
constexpr state::ParamID kCompanding = 6
constexpr state::ParamID kPrintThroughDb = 7
constexpr state::ParamID kPrintOffsetMs = 8
constexpr state::ParamID kMix = 9
constexpr bool kWorstCaseGainApplicable = false
 worst_case_gain does not apply to this design — there is no feedback path.

Typedef Documentation

◆ Archetype

◆ Curve

Function Documentation

◆ curve_range()

CurveRange pulp::host::tape::curve_range ( Archetype archetype)
inlinenoexcept

◆ descriptor()

ForgeNodeDescriptor pulp::host::tape::descriptor ( )

◆ make_tape_machine_node()

CustomNodeType pulp::host::tape::make_tape_machine_node ( Archetype archetype,
double speed_ips = 0.0,
bool pre_echo_enabled = false )

One factory, three registered realizations.

speed_ips is snapped to the archetype's legal set by the DSP, so passing 30 to a cassette node yields 1.875 rather than an error — the same behaviour set_speed_ips has, and the reason a caller does not need the legal table.

◆ normalized_archetype()

Archetype pulp::host::tape::normalized_archetype ( Archetype archetype)
inlinenoexcept

◆ tape_default_name()

const char * pulp::host::tape::tape_default_name ( Archetype archetype)
inlinenoexcept

◆ tape_machine_insertion_gain_bound()

float pulp::host::tape::tape_machine_insertion_gain_bound ( Archetype archetype,
double sample_rate )

The largest gain any single stage of this insert can present, at the realization's own speed and the given sample rate.

This is what the registry cites in place of worst_case_gain, which does not apply. It is deliberately NOT a small number, and the DSP header explains why at length: a reproduce network for a curve with no bass shelf is (1 + s·t₂), a differentiator, so its ceiling near Nyquist is set by the standard's own prototype and grows with the sample rate. The programme never sees it — the record network is that section's exact reciprocal — and the suite asserts the consequence directly by bounding the module's output on silence and at full scale.

◆ tape_type_id()

const char * pulp::host::tape::tape_type_id ( Archetype archetype)
inlinenoexcept

Variable Documentation

◆ kAge

state::ParamID pulp::host::tape::kAge = 4
inlineconstexpr

◆ kAmpexTypeId

const char* pulp::host::tape::kAmpexTypeId = "tape.ampex350_440"
inlineconstexpr

◆ kBias

state::ParamID pulp::host::tape::kBias = 2
inlineconstexpr

◆ kCassetteTypeId

const char* pulp::host::tape::kCassetteTypeId = "tape.cassette"
inlineconstexpr

◆ kCompanding

state::ParamID pulp::host::tape::kCompanding = 6
inlineconstexpr

◆ kCrosstalkDb

state::ParamID pulp::host::tape::kCrosstalkDb = 5
inlineconstexpr

◆ kDrive

state::ParamID pulp::host::tape::kDrive = 3
inlineconstexpr

◆ kEqCurve

state::ParamID pulp::host::tape::kEqCurve = 1
inlineconstexpr

◆ kMix

state::ParamID pulp::host::tape::kMix = 9
inlineconstexpr

◆ kPrintOffsetMs

state::ParamID pulp::host::tape::kPrintOffsetMs = 8
inlineconstexpr

◆ kPrintThroughDb

state::ParamID pulp::host::tape::kPrintThroughDb = 7
inlineconstexpr

◆ kStuderTypeId

const char* pulp::host::tape::kStuderTypeId = "tape.studer_a800"
inlineconstexpr

◆ kWorstCaseGainApplicable

bool pulp::host::tape::kWorstCaseGainApplicable = false
inlineconstexpr

worst_case_gain does not apply to this design — there is no feedback path.

Named rather than left absent; see the header note.