Classes | |
| struct | Instance |
Enumerations | |
| enum class | Voice : std::uint8_t { organ , bell } |
| The two registered voices. More... | |
Functions | |
| float | additive_bank_worst_case_gain () |
| Worst-case linear gain for the Forge registry (series law 8). | |
| CustomNodeType | make_additive_bank_node (Voice voice=Voice::organ, int max_partials=kNodeMaxPartials) |
| voice picks the registered type id and the partial table; max_partials is the allocation ceiling. | |
| ForgeNodeDescriptor | descriptor () |
Variables | |
| constexpr const char * | kOrganTypeId = "synthesis.additive_organ" |
| constexpr const char * | kBellTypeId = "synthesis.additive_bell" |
| constexpr state::ParamID | kFundamentalHz = 1 |
| constexpr state::ParamID | kPartialCount = 2 |
| constexpr state::ParamID | kInharmonicity = 3 |
| constexpr state::ParamID | kSpectralTilt = 4 |
| constexpr state::ParamID | kMasterGainDb = 5 |
| constexpr state::ParamID | kEnvelopeMode = 6 |
| constexpr state::ParamID | kRetrigPhase = 7 |
| constexpr state::ParamID | kAttackMs = 8 |
| constexpr state::ParamID | kReleaseMs = 9 |
| constexpr state::ParamID | kDetuneCents = 10 |
| constexpr int | kNodeMaxPartials = signal::AdditiveBank::kMaxPartialsDefault |
| Partial ceiling this node instantiates. | |
| constexpr float | kGateOn = 0.5f |
| Gate thresholds on the CV input, with hysteresis so a noisy or slewed gate cannot retrigger on every sample near the threshold. | |
| constexpr float | kGateOff = 0.25f |
|
strong |
| float pulp::host::synthesis::additive::additive_bank_worst_case_gain | ( | ) |
Worst-case linear gain for the Forge registry (series law 8).
Cited, not estimated: the DSP ships worst_case_gain() as an EQUALITY attained with aligned phases — its crest normaliser bounds the partial sum to 1 by construction, so the whole worst case is the master trim's legal maximum — and its own suite asserts both halves of that bound. Reported at the node's parameter ceiling, since master_gain_db is injectable and a baked param can be automated anywhere in its declared range.
| ForgeNodeDescriptor pulp::host::synthesis::additive::descriptor | ( | ) |
| CustomNodeType pulp::host::synthesis::additive::make_additive_bank_node | ( | Voice | voice = Voice::organ, |
| int | max_partials = kNodeMaxPartials ) |
voice picks the registered type id and the partial table; max_partials is the allocation ceiling.
Both are frozen here — see the header note.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
Gate thresholds on the CV input, with hysteresis so a noisy or slewed gate cannot retrigger on every sample near the threshold.
Schmitt, not a single edge, for the same reason the vocoder's voicing decision is. [design parameter] defaults 0.5 / 0.25, ranges 0.2 .. 0.9 and 0.05 .. 0.5, with kGateOff < kGateOn by construction.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
Partial ceiling this node instantiates.
The DSP supports up to kMaxPartialsCeiling; this is the value baked in, which sizes the bank at prepare() and fixes the partial_count param's declared maximum. [design parameter] default 128, range 1 .. 256.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |