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. | |
|
inlinenoexcept |
| ForgeNodeDescriptor pulp::host::tape::descriptor | ( | ) |
| 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.
|
inlinenoexcept |
| 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.
|
inlinenoexcept |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
worst_case_gain does not apply to this design — there is no feedback path.
Named rather than left absent; see the header note.