Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
forge_drum_catalog_contract.hpp
Go to the documentation of this file.
1#pragma once
2
3// Forge bake-layer adapter for Pulp's license-clean percussion engines.
4//
5// Engine identity is construction-time topology. Everything in baked_params is
6// an RT-safe, node-local performance or voicing control consumed through
7// BakedParamView.
8//
9// Output oversampling is bypassed, and `kDrumNodeOversampling` is the single
10// place that says so -- the prepare hook and the declared latency both derive
11// from it, so the two cannot drift.
12//
13// It is bypassed on measurement, not on inability. `CustomNodeType` can report
14// a group delay now (`latency_samples`), so an oversampled node would be
15// compensated correctly rather than sitting misaligned against parallel paths.
16// Oversampling was tried and measured: at the shipped defaults the output
17// stage's nonlinearities are all inactive (drive 0, fold 0, quantiser at 24
18// bits), so the signal makes a pure half-band round trip -- paying the FIR's
19// linear-phase pre-ringing for a stage that does nothing to it. The
20// perceptual comparison put the benefit at -0.0 to -0.2 dB above 8 kHz and
21// the cost at a material attack-smear on the two voices whose character is
22// dense transients (cymbal 0.83 deficit across 20 of 21 onsets; bridged-T
23// kick 0.13 across 8 of 13).
24//
25// So the trade only pays once a caller drives the nonlinear stages, and it is
26// the caller who knows that. Anything reaching for a different quality here
27// should re-measure rather than assume: flip `kDrumNodeOversampling` and the
28// latency follows automatically.
29
32
33#include <algorithm>
34#include <array>
35#include <cmath>
36#include <cstddef>
37#include <cstdint>
38#include <limits>
39#include <memory>
40#include <vector>
41
42namespace pulp::host::forge_drum {
43
45
46inline constexpr const char* kKickOscillatorTypeId = "drum.kick.oscillator";
47inline constexpr const char* kKickResonantTypeId = "drum.kick.resonant";
48inline constexpr const char* kKickCircuitTypeId = "drum.kick.circuit";
49inline constexpr const char* kSnareTypeId = "drum.snare";
50inline constexpr const char* kHatTypeId = "drum.hat";
51inline constexpr const char* kClapTypeId = "drum.clap";
52inline constexpr const char* kTomGenericTypeId = "drum.tom.generic";
53inline constexpr const char* kTomSimmonsTypeId = "drum.tom.simmons";
54inline constexpr const char* kCymbalTypeId = "drum.cymbal.comb";
55inline constexpr const char* kMembraneTypeId = "drum.membrane.modal";
56inline constexpr const char* kStringTypeId = "drum.string.karplus-strong";
57inline constexpr const char* kZapTypeId = "drum.zap.cz";
58inline constexpr const char* kFm2TypeId = "drum.fm2";
59inline constexpr const char* kFm6TypeId = "drum.fm6";
60inline constexpr const char* kFm8TypeId = "drum.fm8";
61
62// Stable node-local IDs. A semantic keeps the same ID wherever it appears;
63// engine-specific controls occupy disjoint ranges so future additions do not
64// renumber an existing preset.
65inline constexpr state::ParamID kTrigger = 1;
66inline constexpr state::ParamID kVelocity = 2;
67inline constexpr state::ParamID kChoke = 3;
68inline constexpr state::ParamID kChokeMs = 4;
69inline constexpr state::ParamID kVelocityLevelDb = 5;
73inline constexpr state::ParamID kTuneHz = 10;
74inline constexpr state::ParamID kDecay = 11;
75inline constexpr state::ParamID kPitchSweepOctaves = 12;
76inline constexpr state::ParamID kPitchSweepMs = 13;
77inline constexpr state::ParamID kNoiseColor = 14;
78inline constexpr state::ParamID kOutputDrive = 20;
79inline constexpr state::ParamID kOutputFold = 21;
80inline constexpr state::ParamID kOutputLevel = 22;
81inline constexpr state::ParamID kOutputAhdEnabled = 23;
82inline constexpr state::ParamID kOutputAttackMs = 24;
83inline constexpr state::ParamID kOutputHoldMs = 25;
84inline constexpr state::ParamID kOutputDecayMs = 26;
85inline constexpr state::ParamID kOutputBits = 27;
86inline constexpr state::ParamID kOutputHoldRateHz = 28;
87inline constexpr state::ParamID kOutputJitter = 29;
88inline constexpr state::ParamID kOutputSmoothing = 30;
89inline constexpr state::ParamID kOutputDeadZone = 31;
90inline constexpr state::ParamID kGateRiseMs = 40;
91inline constexpr state::ParamID kGateFallMs = 41;
92inline constexpr state::ParamID kGateColour = 42;
93inline constexpr state::ParamID kGateClosedHz = 43;
94inline constexpr state::ParamID kGateOpenHz = 44;
95inline constexpr state::ParamID kGateGainExponent = 45;
96inline constexpr state::ParamID kToneLofiBits = 50;
97inline constexpr state::ParamID kToneLofiHoldRateHz = 51;
98inline constexpr state::ParamID kToneLofiJitter = 52;
99inline constexpr state::ParamID kToneLofiSmoothing = 53;
100inline constexpr state::ParamID kToneLofiDeadZone = 54;
101inline constexpr state::ParamID kNoiseLofiBits = 55;
103inline constexpr state::ParamID kNoiseLofiJitter = 57;
105inline constexpr state::ParamID kNoiseLofiDeadZone = 59;
106inline constexpr state::ParamID kCircuitC41 = 60;
107inline constexpr state::ParamID kCircuitC42 = 61;
108inline constexpr state::ParamID kCircuitR161 = 62;
109inline constexpr state::ParamID kCircuitR165 = 63;
110inline constexpr state::ParamID kCircuitR166 = 64;
111inline constexpr state::ParamID kCircuitR167 = 65;
112inline constexpr state::ParamID kCircuitR170 = 66;
113
114inline constexpr state::ParamID kControl0 = 100;
115inline constexpr state::ParamID kControl1 = 101;
116inline constexpr state::ParamID kControl2 = 102;
117inline constexpr state::ParamID kControl3 = 103;
118inline constexpr state::ParamID kControl4 = 104;
119inline constexpr state::ParamID kControl5 = 105;
120inline constexpr state::ParamID kControl6 = 106;
121inline constexpr state::ParamID kControl7 = 107;
122inline constexpr state::ParamID kControl8 = 108;
123inline constexpr state::ParamID kControl9 = 109;
124inline constexpr state::ParamID kControl10 = 110;
125inline constexpr state::ParamID kControl11 = 111;
126inline constexpr state::ParamID kControl12 = 112;
127inline constexpr state::ParamID kControl13 = 113;
128inline constexpr state::ParamID kControl14 = 114;
129inline constexpr state::ParamID kControl15 = 115;
130inline constexpr state::ParamID kControl16 = 116;
131inline constexpr state::ParamID kControl17 = 117;
132inline constexpr state::ParamID kControl18 = 118;
133inline constexpr state::ParamID kControl19 = 119;
134inline constexpr state::ParamID kControl20 = 120;
135inline constexpr state::ParamID kControl21 = 121;
136inline constexpr state::ParamID kControl22 = 122;
137
138// Voice-local semantic aliases. Reuse is intentional: ParamIDs are namespaced
139// by node, while these names make the persistence contract unambiguous.
140inline constexpr auto kKickClickLevel = kControl0;
141inline constexpr auto kKickClickToneHz = kControl1;
142inline constexpr auto kKickClickDecayMs = kControl2;
143inline constexpr auto kKickNoiseLevel = kControl3;
144inline constexpr auto kKickNoiseDecayMs = kControl4;
145inline constexpr auto kKickSubLevel = kControl5;
146inline constexpr auto kKickTriangle = kControl6;
147inline constexpr auto kKickFmAmount = kControl7;
148inline constexpr auto kKickFmRatio = kControl8;
149inline constexpr auto kKickCircuitFeedback = kControl6;
150inline constexpr auto kKickCircuitDrive = kControl7;
151inline constexpr auto kKickCircuitAttackMs = kControl8;
152inline constexpr auto kKickCircuitPulseMs = kControl9;
153inline constexpr auto kKickCircuitSigh = kControl10;
154inline constexpr auto kKickCircuitHitLife = kControl11;
155inline constexpr auto kSnareToneRatio = kControl0;
156inline constexpr auto kSnareToneLevel = kControl1;
157inline constexpr auto kSnareFmAmount = kControl2;
158inline constexpr auto kSnareRing = kControl3;
159inline constexpr auto kSnareNoiseLevel = kControl4;
160inline constexpr auto kSnareNoiseDecayMs = kControl5;
161inline constexpr auto kSnareNoiseCutoffHz = kControl6;
162inline constexpr auto kSnareNoiseResonance = kControl7;
163inline constexpr auto kSnareNoiseSweepOctaves = kControl8;
164inline constexpr auto kSnareRattle = kControl9;
165inline constexpr auto kSnareRattleHz = kControl10;
166inline constexpr auto kSnareSnapLevel = kControl11;
167inline constexpr auto kSnareSnapCutoffHz = kControl12;
168inline constexpr auto kSnareSnapDecayMs = kControl13;
169inline constexpr auto kSnareShellLevel = kControl14;
170inline constexpr auto kSnareShellResonance = kControl15;
171inline constexpr auto kHatSpread = kControl0;
172inline constexpr auto kHatMetal = kControl1;
173inline constexpr auto kHatGrit = kControl2;
174inline constexpr auto kHatGritRatio = kControl3;
175inline constexpr auto kHatCutoffHz = kControl4;
176inline constexpr auto kHatResonance = kControl5;
177inline constexpr auto kHatBandpass = kControl6;
178inline constexpr auto kClapBurstCount = kControl0;
179inline constexpr auto kClapBurstSpacingMs = kControl1;
180inline constexpr auto kClapBurstDecayMs = kControl2;
181inline constexpr auto kClapBurstFalloff = kControl3;
182inline constexpr auto kClapGapJitter = kControl4;
183inline constexpr auto kClapAlternatePolarity = kControl5;
184inline constexpr auto kClapStereoWidth = kControl6;
185inline constexpr auto kClapTailLevel = kControl7;
186inline constexpr auto kClapTailDecayMs = kControl8;
187inline constexpr auto kClapCutoffHz = kControl9;
188inline constexpr auto kClapResonance = kControl10;
189inline constexpr auto kClapBodyLevel = kControl11;
190inline constexpr auto kClapBodyHz = kControl12;
191inline constexpr auto kTomWave = kControl0;
192inline constexpr auto kTomNoiseBalance = kControl1;
193inline constexpr auto kTomNoiseCutoffHz = kControl2;
194inline constexpr auto kTomNoiseResonance = kControl3;
195inline constexpr auto kTomClickLevel = kControl4;
196inline constexpr auto kTomClickCutoffHz = kControl5;
197inline constexpr auto kTomClickDecayMs = kControl6;
198inline constexpr auto kMembraneStructure = kControl0;
199inline constexpr auto kMembraneStretch = kControl1;
200inline constexpr auto kMembraneDamping = kControl2;
201inline constexpr auto kMembraneBrightness = kControl3;
202inline constexpr auto kMembranePosition = kControl4;
203inline constexpr auto kMembraneSpread = kControl5;
204inline constexpr auto kMembraneExciterMs = kControl6;
205inline constexpr auto kMembraneExciterCutoffHz = kControl7;
206inline constexpr auto kMembraneExciter = kControl8;
207inline constexpr auto kMembraneSubLevel = kControl9;
208inline constexpr auto kMembraneAirLevel = kControl10;
209inline constexpr auto kMembraneAirDecayMs = kControl11;
210inline constexpr auto kMembraneClickLevel = kControl12;
211inline constexpr auto kMembraneClickDecayMs = kControl13;
212inline constexpr auto kCymbalDecayTilt = kControl0;
213inline constexpr auto kCymbalHighModeEmphasisDb = kControl1;
214inline constexpr auto kCymbalVelocityFeedback = kControl2;
215inline constexpr auto kCymbalVelocityHighModeDb = kControl3;
216inline constexpr auto kCymbalUpperHighpassHz = kControl4;
217inline constexpr auto kCymbalSpread = kControl5;
218inline constexpr auto kCymbalInharmonicity = kControl6;
219inline constexpr auto kCymbalShiftHz = kControl7;
220inline constexpr auto kCymbalNoiseLevel = kControl8;
221inline constexpr auto kCymbalStrikeLevel = kControl9;
222inline constexpr auto kCymbalStrikeMs = kControl10;
223inline constexpr auto kCymbalToneHz = kControl11;
224inline constexpr auto kCymbalLowCutHz = kControl12;
225inline constexpr auto kCymbalHitLife = kControl14;
226inline constexpr auto kStringDamping = kControl0;
227inline constexpr auto kStringStiffness = kControl1;
228inline constexpr auto kStringPluckPosition = kControl2;
229inline constexpr auto kStringExciterMs = kControl3;
230inline constexpr auto kStringBrightnessHz = kControl4;
231inline constexpr auto kStringPickDirection = kControl5;
232inline constexpr auto kStringRestartOnHit = kControl6;
233inline constexpr auto kStringModulation = kControl7;
234inline constexpr auto kStringModulationMix = kControl8;
235inline constexpr auto kStringModulationRatio = kControl9;
236inline constexpr auto kStringFmDepthOctaves = kControl10;
237inline constexpr auto kStringLpgAmount = kControl11;
238inline constexpr auto kZapShape = kControl0;
239inline constexpr auto kZapDistortion = kControl1;
240inline constexpr auto kZapDistortionMs = kControl2;
241inline constexpr auto kZapResonantDepth = kControl3;
242inline constexpr auto kZapDetuneCents = kControl4;
243inline constexpr auto kZapRing = kControl5;
244inline constexpr auto kZapRingRatio = kControl6;
245// Multi-operator FM (FM6/FM8) only. A two-operator voice has no algorithm to
246// select, so it deliberately does not reuse this name for its first control.
247inline constexpr auto kFmAlgorithm = kControl0;
248inline constexpr auto kFmDepth = kControl1;
249inline constexpr auto kFmFormantHz = kControl2;
250inline constexpr auto kFmFormantQ = kControl3;
251inline constexpr auto kFm6Feedback = kControl4;
252inline constexpr auto kFm8Transient = kControl4;
253inline constexpr auto kFm8NoiseLevel = kControl5;
254inline constexpr auto kFm8NoiseDecayMs = kControl6;
255inline constexpr auto kFm8ClickLevel = kControl7;
256// Two-operator FM. Its first control is the modulator ratio, not an
257// algorithm index, so it carries its own names throughout.
258inline constexpr auto kFm2Ratio = kControl0;
259inline constexpr auto kFm2Index = kControl1;
260inline constexpr auto kFm2IndexMs = kControl2;
261inline constexpr auto kFm2Feedback = kControl3;
262inline constexpr auto kFm2CarrierWave = kControl4;
263inline constexpr auto kFm2ModulatorWave = kControl5;
264inline constexpr auto kFm2CarrierWarp = kControl6;
265inline constexpr auto kFm2ModulatorWarp = kControl7;
266inline constexpr auto kFm2CarrierWarpMs = kControl8;
267inline constexpr auto kFm2ModulatorWarpMs = kControl9;
268inline constexpr auto kFm2LfoRateHz = kControl10;
269inline constexpr auto kFm2LfoDepthOctaves = kControl11;
270inline constexpr auto kFm2LfoDelayMs = kControl12;
271inline constexpr auto kFm2LfoFadeMs = kControl13;
272inline constexpr auto kFm2HardSync = kControl14;
273inline constexpr auto kFm2Transient = kControl15;
274inline constexpr auto kFm2NoiseLevel = kControl16;
275inline constexpr auto kFm2NoiseDecayMs = kControl17;
276inline constexpr auto kFm2CutoffHz = kControl18;
277inline constexpr auto kFm2Resonance = kControl19;
278inline constexpr auto kFm2Bandpass = kControl20;
279inline constexpr auto kFm2ClickLevel = kControl21;
280inline constexpr auto kFm2ClickCutoffHz = kControl22;
281
289inline constexpr float kHoldRateBypassHz = 192000.0f;
290
296
297inline constexpr state::ParamID kOperatorRatioBase = 200;
298inline constexpr state::ParamID kOperatorLevelBase = 220;
299inline constexpr state::ParamID kOperatorDecayBase = 240;
301inline constexpr state::ParamID kOperatorWaveBase = 280;
302
303} // namespace pulp::host::forge_drum
Definition forge_drum_catalog.hpp:10
constexpr state::ParamID kGateGainExponent
Definition forge_drum_catalog_contract.hpp:95
constexpr state::ParamID kGateFallMs
Definition forge_drum_catalog_contract.hpp:91
constexpr state::ParamID kCircuitR167
Definition forge_drum_catalog_contract.hpp:111
constexpr state::ParamID kControl9
Definition forge_drum_catalog_contract.hpp:123
constexpr auto kMembraneStretch
Definition forge_drum_catalog_contract.hpp:199
constexpr const char * kStringTypeId
Definition forge_drum_catalog_contract.hpp:56
constexpr auto kFm2CarrierWarp
Definition forge_drum_catalog_contract.hpp:264
constexpr auto kTomNoiseResonance
Definition forge_drum_catalog_contract.hpp:194
constexpr auto kMembraneBrightness
Definition forge_drum_catalog_contract.hpp:201
constexpr state::ParamID kPitchSweepOctaves
Definition forge_drum_catalog_contract.hpp:75
constexpr auto kClapBodyLevel
Definition forge_drum_catalog_contract.hpp:189
constexpr state::ParamID kCircuitR161
Definition forge_drum_catalog_contract.hpp:108
constexpr const char * kKickResonantTypeId
Definition forge_drum_catalog_contract.hpp:47
constexpr auto kFm2NoiseDecayMs
Definition forge_drum_catalog_contract.hpp:275
constexpr auto kFm2LfoDelayMs
Definition forge_drum_catalog_contract.hpp:270
constexpr state::ParamID kVelocityLevelDb
Definition forge_drum_catalog_contract.hpp:69
constexpr state::ParamID kNoiseLofiSmoothing
Definition forge_drum_catalog_contract.hpp:104
constexpr auto kStringPluckPosition
Definition forge_drum_catalog_contract.hpp:228
constexpr auto kStringModulation
Definition forge_drum_catalog_contract.hpp:233
constexpr state::ParamID kToneLofiJitter
Definition forge_drum_catalog_contract.hpp:98
constexpr auto kKickFmRatio
Definition forge_drum_catalog_contract.hpp:148
constexpr auto kFmAlgorithm
Definition forge_drum_catalog_contract.hpp:247
constexpr auto kFm2NoiseLevel
Definition forge_drum_catalog_contract.hpp:274
constexpr state::ParamID kOperatorFeedbackBase
Definition forge_drum_catalog_contract.hpp:300
constexpr auto kClapBurstFalloff
Definition forge_drum_catalog_contract.hpp:181
constexpr auto kZapResonantDepth
Definition forge_drum_catalog_contract.hpp:241
constexpr auto kMembraneStructure
Definition forge_drum_catalog_contract.hpp:198
constexpr state::ParamID kToneLofiBits
Definition forge_drum_catalog_contract.hpp:96
constexpr state::ParamID kControl4
Definition forge_drum_catalog_contract.hpp:118
constexpr auto kCymbalHighModeEmphasisDb
Definition forge_drum_catalog_contract.hpp:213
constexpr auto kMembraneAirDecayMs
Definition forge_drum_catalog_contract.hpp:209
constexpr state::ParamID kOutputBits
Definition forge_drum_catalog_contract.hpp:85
constexpr auto kStringRestartOnHit
Definition forge_drum_catalog_contract.hpp:232
constexpr auto kHatMetal
Definition forge_drum_catalog_contract.hpp:172
constexpr auto kFmFormantHz
Definition forge_drum_catalog_contract.hpp:249
constexpr auto kTomClickLevel
Definition forge_drum_catalog_contract.hpp:195
constexpr const char * kHatTypeId
Definition forge_drum_catalog_contract.hpp:50
constexpr const char * kFm8TypeId
Definition forge_drum_catalog_contract.hpp:60
constexpr auto kMembraneDamping
Definition forge_drum_catalog_contract.hpp:200
constexpr auto kMembraneSpread
Definition forge_drum_catalog_contract.hpp:203
constexpr const char * kSnareTypeId
Definition forge_drum_catalog_contract.hpp:49
constexpr state::ParamID kOutputHoldMs
Definition forge_drum_catalog_contract.hpp:83
constexpr auto kSnareRattleHz
Definition forge_drum_catalog_contract.hpp:165
constexpr auto kHatResonance
Definition forge_drum_catalog_contract.hpp:176
constexpr auto kSnareNoiseLevel
Definition forge_drum_catalog_contract.hpp:159
constexpr state::ParamID kToneLofiSmoothing
Definition forge_drum_catalog_contract.hpp:99
constexpr auto kKickCircuitDrive
Definition forge_drum_catalog_contract.hpp:150
constexpr auto kZapRingRatio
Definition forge_drum_catalog_contract.hpp:244
constexpr state::ParamID kOutputHoldRateHz
Definition forge_drum_catalog_contract.hpp:86
constexpr state::ParamID kToneLofiHoldRateHz
Definition forge_drum_catalog_contract.hpp:97
constexpr state::ParamID kControl14
Definition forge_drum_catalog_contract.hpp:128
constexpr state::ParamID kCircuitC42
Definition forge_drum_catalog_contract.hpp:107
constexpr auto kKickClickToneHz
Definition forge_drum_catalog_contract.hpp:141
constexpr state::ParamID kControl15
Definition forge_drum_catalog_contract.hpp:129
constexpr auto kSnareShellResonance
Definition forge_drum_catalog_contract.hpp:170
constexpr const char * kTomSimmonsTypeId
Definition forge_drum_catalog_contract.hpp:53
constexpr auto kFmFormantQ
Definition forge_drum_catalog_contract.hpp:250
constexpr const char * kCymbalTypeId
Definition forge_drum_catalog_contract.hpp:54
constexpr auto kMembraneExciterCutoffHz
Definition forge_drum_catalog_contract.hpp:205
constexpr state::ParamID kControl1
Definition forge_drum_catalog_contract.hpp:115
constexpr state::ParamID kControl6
Definition forge_drum_catalog_contract.hpp:120
constexpr auto kCymbalVelocityFeedback
Definition forge_drum_catalog_contract.hpp:214
constexpr state::ParamID kControl11
Definition forge_drum_catalog_contract.hpp:125
constexpr state::ParamID kControl17
Definition forge_drum_catalog_contract.hpp:131
constexpr auto kFm2Bandpass
Definition forge_drum_catalog_contract.hpp:278
constexpr state::ParamID kCircuitR166
Definition forge_drum_catalog_contract.hpp:110
constexpr state::ParamID kOutputAhdEnabled
Definition forge_drum_catalog_contract.hpp:81
constexpr state::ParamID kOutputJitter
Definition forge_drum_catalog_contract.hpp:87
constexpr state::ParamID kTrigger
Definition forge_drum_catalog_contract.hpp:65
constexpr auto kSnareToneRatio
Definition forge_drum_catalog_contract.hpp:155
constexpr auto kStringLpgAmount
Definition forge_drum_catalog_contract.hpp:237
constexpr state::ParamID kOutputSmoothing
Definition forge_drum_catalog_contract.hpp:88
constexpr auto kCymbalToneHz
Definition forge_drum_catalog_contract.hpp:223
constexpr auto kCymbalInharmonicity
Definition forge_drum_catalog_contract.hpp:218
constexpr state::ParamID kControl20
Definition forge_drum_catalog_contract.hpp:134
constexpr auto kFm2ClickCutoffHz
Definition forge_drum_catalog_contract.hpp:280
constexpr state::ParamID kDecay
Definition forge_drum_catalog_contract.hpp:74
constexpr auto kKickNoiseDecayMs
Definition forge_drum_catalog_contract.hpp:144
constexpr const char * kTomGenericTypeId
Definition forge_drum_catalog_contract.hpp:52
constexpr state::ParamID kToneLofiDeadZone
Definition forge_drum_catalog_contract.hpp:100
constexpr auto kFm2LfoDepthOctaves
Definition forge_drum_catalog_contract.hpp:269
constexpr auto kSnareShellLevel
Definition forge_drum_catalog_contract.hpp:169
constexpr auto kKickCircuitPulseMs
Definition forge_drum_catalog_contract.hpp:152
constexpr auto kFm2LfoFadeMs
Definition forge_drum_catalog_contract.hpp:271
constexpr const char * kZapTypeId
Definition forge_drum_catalog_contract.hpp:57
constexpr auto kCymbalStrikeMs
Definition forge_drum_catalog_contract.hpp:222
constexpr const char * kFm2TypeId
Definition forge_drum_catalog_contract.hpp:58
constexpr auto kHatSpread
Definition forge_drum_catalog_contract.hpp:171
constexpr auto kKickCircuitHitLife
Definition forge_drum_catalog_contract.hpp:154
constexpr auto kTomClickCutoffHz
Definition forge_drum_catalog_contract.hpp:196
constexpr state::ParamID kControl8
Definition forge_drum_catalog_contract.hpp:122
constexpr float kHoldRateBypassHz
Top of every sample-and-hold rate range, and their shared default.
Definition forge_drum_catalog_contract.hpp:289
constexpr state::ParamID kChokeMs
Definition forge_drum_catalog_contract.hpp:68
constexpr auto kClapTailLevel
Definition forge_drum_catalog_contract.hpp:185
constexpr state::ParamID kControl2
Definition forge_drum_catalog_contract.hpp:116
constexpr auto kClapGapJitter
Definition forge_drum_catalog_contract.hpp:182
constexpr state::ParamID kOutputDeadZone
Definition forge_drum_catalog_contract.hpp:89
constexpr auto kHatGrit
Definition forge_drum_catalog_contract.hpp:173
constexpr auto kCymbalDecayTilt
Definition forge_drum_catalog_contract.hpp:212
constexpr auto kZapDetuneCents
Definition forge_drum_catalog_contract.hpp:242
constexpr auto kMembraneExciter
Definition forge_drum_catalog_contract.hpp:206
constexpr auto kFm2CarrierWarpMs
Definition forge_drum_catalog_contract.hpp:266
constexpr auto kClapBodyHz
Definition forge_drum_catalog_contract.hpp:190
constexpr auto kFm2Ratio
Definition forge_drum_catalog_contract.hpp:258
constexpr state::ParamID kOperatorDecayBase
Definition forge_drum_catalog_contract.hpp:299
constexpr auto kSnareSnapCutoffHz
Definition forge_drum_catalog_contract.hpp:167
constexpr auto kStringPickDirection
Definition forge_drum_catalog_contract.hpp:231
constexpr auto kClapBurstSpacingMs
Definition forge_drum_catalog_contract.hpp:179
constexpr auto kKickClickDecayMs
Definition forge_drum_catalog_contract.hpp:142
constexpr state::ParamID kVelocityBrightnessOctaves
Definition forge_drum_catalog_contract.hpp:71
constexpr signal::drum::OutputOversampling kDrumNodeOversampling
The output quality every drum node runs at, named once so the prepare hook and the declared latency d...
Definition forge_drum_catalog_contract.hpp:294
constexpr auto kCymbalNoiseLevel
Definition forge_drum_catalog_contract.hpp:220
constexpr auto kClapBurstDecayMs
Definition forge_drum_catalog_contract.hpp:180
constexpr state::ParamID kControl7
Definition forge_drum_catalog_contract.hpp:121
constexpr auto kZapShape
Definition forge_drum_catalog_contract.hpp:238
constexpr auto kMembraneClickDecayMs
Definition forge_drum_catalog_contract.hpp:211
constexpr auto kMembraneSubLevel
Definition forge_drum_catalog_contract.hpp:207
constexpr auto kKickCircuitFeedback
Definition forge_drum_catalog_contract.hpp:149
constexpr state::ParamID kVelocityBendOctaves
Definition forge_drum_catalog_contract.hpp:70
constexpr auto kKickCircuitSigh
Definition forge_drum_catalog_contract.hpp:153
constexpr auto kTomNoiseBalance
Definition forge_drum_catalog_contract.hpp:192
constexpr state::ParamID kControl21
Definition forge_drum_catalog_contract.hpp:135
constexpr state::ParamID kControl12
Definition forge_drum_catalog_contract.hpp:126
constexpr auto kStringFmDepthOctaves
Definition forge_drum_catalog_contract.hpp:236
constexpr state::ParamID kGateClosedHz
Definition forge_drum_catalog_contract.hpp:93
constexpr auto kSnareRing
Definition forge_drum_catalog_contract.hpp:158
constexpr auto kFm2ClickLevel
Definition forge_drum_catalog_contract.hpp:279
constexpr auto kCymbalShiftHz
Definition forge_drum_catalog_contract.hpp:219
constexpr auto kSnareNoiseCutoffHz
Definition forge_drum_catalog_contract.hpp:161
constexpr state::ParamID kNoiseColor
Definition forge_drum_catalog_contract.hpp:77
constexpr auto kZapDistortion
Definition forge_drum_catalog_contract.hpp:239
constexpr auto kStringDamping
Definition forge_drum_catalog_contract.hpp:226
constexpr auto kFm2CarrierWave
Definition forge_drum_catalog_contract.hpp:262
constexpr auto kSnareNoiseDecayMs
Definition forge_drum_catalog_contract.hpp:160
constexpr auto kMembraneClickLevel
Definition forge_drum_catalog_contract.hpp:210
constexpr auto kSnareNoiseSweepOctaves
Definition forge_drum_catalog_contract.hpp:163
constexpr auto kHatCutoffHz
Definition forge_drum_catalog_contract.hpp:175
constexpr auto kFm2IndexMs
Definition forge_drum_catalog_contract.hpp:260
constexpr auto kFm2ModulatorWave
Definition forge_drum_catalog_contract.hpp:263
constexpr state::ParamID kControl0
Definition forge_drum_catalog_contract.hpp:114
constexpr const char * kFm6TypeId
Definition forge_drum_catalog_contract.hpp:59
constexpr state::ParamID kNoiseLofiJitter
Definition forge_drum_catalog_contract.hpp:103
constexpr auto kHatGritRatio
Definition forge_drum_catalog_contract.hpp:174
constexpr state::ParamID kControl18
Definition forge_drum_catalog_contract.hpp:132
constexpr state::ParamID kOutputDrive
Definition forge_drum_catalog_contract.hpp:78
constexpr auto kFm2Index
Definition forge_drum_catalog_contract.hpp:259
constexpr state::ParamID kGateColour
Definition forge_drum_catalog_contract.hpp:92
constexpr state::ParamID kTuneHz
Definition forge_drum_catalog_contract.hpp:73
constexpr auto kFm2ModulatorWarp
Definition forge_drum_catalog_contract.hpp:265
constexpr auto kCymbalLowCutHz
Definition forge_drum_catalog_contract.hpp:224
constexpr auto kFm2Feedback
Definition forge_drum_catalog_contract.hpp:261
constexpr auto kTomClickDecayMs
Definition forge_drum_catalog_contract.hpp:197
constexpr state::ParamID kControl13
Definition forge_drum_catalog_contract.hpp:127
constexpr auto kMembranePosition
Definition forge_drum_catalog_contract.hpp:202
constexpr const char * kKickOscillatorTypeId
Definition forge_drum_catalog_contract.hpp:46
constexpr state::ParamID kControl5
Definition forge_drum_catalog_contract.hpp:119
constexpr auto kClapTailDecayMs
Definition forge_drum_catalog_contract.hpp:186
constexpr auto kKickNoiseLevel
Definition forge_drum_catalog_contract.hpp:143
constexpr auto kClapStereoWidth
Definition forge_drum_catalog_contract.hpp:184
constexpr state::ParamID kOperatorRatioBase
Definition forge_drum_catalog_contract.hpp:297
constexpr auto kStringModulationRatio
Definition forge_drum_catalog_contract.hpp:235
constexpr auto kFmDepth
Definition forge_drum_catalog_contract.hpp:248
constexpr state::ParamID kPitchSweepMs
Definition forge_drum_catalog_contract.hpp:76
constexpr state::ParamID kControl19
Definition forge_drum_catalog_contract.hpp:133
constexpr auto kFm2Resonance
Definition forge_drum_catalog_contract.hpp:277
constexpr state::ParamID kControl16
Definition forge_drum_catalog_contract.hpp:130
constexpr auto kFm6Feedback
Definition forge_drum_catalog_contract.hpp:251
constexpr auto kFm2Transient
Definition forge_drum_catalog_contract.hpp:273
constexpr auto kClapBurstCount
Definition forge_drum_catalog_contract.hpp:178
constexpr auto kCymbalUpperHighpassHz
Definition forge_drum_catalog_contract.hpp:216
constexpr const char * kMembraneTypeId
Definition forge_drum_catalog_contract.hpp:55
constexpr auto kStringModulationMix
Definition forge_drum_catalog_contract.hpp:234
constexpr auto kFm8NoiseDecayMs
Definition forge_drum_catalog_contract.hpp:254
constexpr auto kCymbalStrikeLevel
Definition forge_drum_catalog_contract.hpp:221
constexpr auto kCymbalVelocityHighModeDb
Definition forge_drum_catalog_contract.hpp:215
constexpr state::ParamID kOutputDecayMs
Definition forge_drum_catalog_contract.hpp:84
constexpr auto kCymbalSpread
Definition forge_drum_catalog_contract.hpp:217
constexpr state::ParamID kControl3
Definition forge_drum_catalog_contract.hpp:117
constexpr auto kZapDistortionMs
Definition forge_drum_catalog_contract.hpp:240
constexpr auto kKickSubLevel
Definition forge_drum_catalog_contract.hpp:145
constexpr auto kSnareNoiseResonance
Definition forge_drum_catalog_contract.hpp:162
constexpr state::ParamID kOutputAttackMs
Definition forge_drum_catalog_contract.hpp:82
constexpr state::ParamID kOutputFold
Definition forge_drum_catalog_contract.hpp:79
constexpr state::ParamID kNoiseLofiBits
Definition forge_drum_catalog_contract.hpp:101
constexpr auto kClapAlternatePolarity
Definition forge_drum_catalog_contract.hpp:183
constexpr auto kZapRing
Definition forge_drum_catalog_contract.hpp:243
constexpr state::ParamID kVelocityNoiseBalance
Definition forge_drum_catalog_contract.hpp:72
constexpr auto kClapCutoffHz
Definition forge_drum_catalog_contract.hpp:187
constexpr auto kTomNoiseCutoffHz
Definition forge_drum_catalog_contract.hpp:193
constexpr auto kFm8ClickLevel
Definition forge_drum_catalog_contract.hpp:255
constexpr auto kFm8Transient
Definition forge_drum_catalog_contract.hpp:252
constexpr const char * kKickCircuitTypeId
Definition forge_drum_catalog_contract.hpp:48
constexpr auto kMembraneExciterMs
Definition forge_drum_catalog_contract.hpp:204
constexpr state::ParamID kNoiseLofiDeadZone
Definition forge_drum_catalog_contract.hpp:105
constexpr state::ParamID kCircuitC41
Definition forge_drum_catalog_contract.hpp:106
constexpr auto kSnareToneLevel
Definition forge_drum_catalog_contract.hpp:156
constexpr state::ParamID kOutputLevel
Definition forge_drum_catalog_contract.hpp:80
constexpr state::ParamID kCircuitR170
Definition forge_drum_catalog_contract.hpp:112
constexpr auto kFm2CutoffHz
Definition forge_drum_catalog_contract.hpp:276
constexpr state::ParamID kGateOpenHz
Definition forge_drum_catalog_contract.hpp:94
constexpr auto kClapResonance
Definition forge_drum_catalog_contract.hpp:188
constexpr auto kKickFmAmount
Definition forge_drum_catalog_contract.hpp:147
constexpr auto kSnareSnapLevel
Definition forge_drum_catalog_contract.hpp:166
constexpr auto kSnareRattle
Definition forge_drum_catalog_contract.hpp:164
constexpr auto kCymbalHitLife
Definition forge_drum_catalog_contract.hpp:225
constexpr auto kSnareSnapDecayMs
Definition forge_drum_catalog_contract.hpp:168
constexpr state::ParamID kControl10
Definition forge_drum_catalog_contract.hpp:124
constexpr state::ParamID kVelocity
Definition forge_drum_catalog_contract.hpp:66
constexpr state::ParamID kOperatorWaveBase
Definition forge_drum_catalog_contract.hpp:301
constexpr auto kFm2LfoRateHz
Definition forge_drum_catalog_contract.hpp:268
constexpr state::ParamID kChoke
Definition forge_drum_catalog_contract.hpp:67
constexpr state::ParamID kCircuitR165
Definition forge_drum_catalog_contract.hpp:109
constexpr auto kFm2HardSync
Definition forge_drum_catalog_contract.hpp:272
constexpr auto kStringExciterMs
Definition forge_drum_catalog_contract.hpp:229
constexpr auto kFm2ModulatorWarpMs
Definition forge_drum_catalog_contract.hpp:267
constexpr state::ParamID kOperatorLevelBase
Definition forge_drum_catalog_contract.hpp:298
constexpr auto kFm8NoiseLevel
Definition forge_drum_catalog_contract.hpp:253
constexpr state::ParamID kNoiseLofiHoldRateHz
Definition forge_drum_catalog_contract.hpp:102
constexpr auto kKickTriangle
Definition forge_drum_catalog_contract.hpp:146
constexpr state::ParamID kGateRiseMs
Definition forge_drum_catalog_contract.hpp:90
constexpr auto kTomWave
Definition forge_drum_catalog_contract.hpp:191
constexpr state::ParamID kControl22
Definition forge_drum_catalog_contract.hpp:136
constexpr auto kKickCircuitAttackMs
Definition forge_drum_catalog_contract.hpp:151
constexpr auto kStringBrightnessHz
Definition forge_drum_catalog_contract.hpp:230
constexpr auto kKickClickLevel
Definition forge_drum_catalog_contract.hpp:140
constexpr auto kStringStiffness
Definition forge_drum_catalog_contract.hpp:227
constexpr auto kMembraneAirLevel
Definition forge_drum_catalog_contract.hpp:208
constexpr auto kHatBandpass
Definition forge_drum_catalog_contract.hpp:177
constexpr auto kSnareFmAmount
Definition forge_drum_catalog_contract.hpp:157
constexpr const char * kClapTypeId
Definition forge_drum_catalog_contract.hpp:51
OutputOversampling
Realtime quality choices for the shared drum output nonlinearity.
Definition output_stage.hpp:20
@ bypass
Definition output_stage.hpp:21
EngineId
Stable identities for the drum engines Pulp can describe.
Definition engine_registry.hpp:26
uint32_t ParamID
Unique parameter identifier, stable across plugin versions.
Definition parameter.hpp:55