@jpdutoit/squelchy 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +4 -3
  2. package/{chunk-NDUSYSHF.js → chunk-N7J25N5J.js} +5 -5
  3. package/chunk-N7J25N5J.js.map +7 -0
  4. package/docs/GUIDE.md +58 -13
  5. package/docs/MODULES.md +7 -7
  6. package/docs/modules.json +14 -14
  7. package/index.d.ts +41 -252
  8. package/index.js +136 -276
  9. package/index.js.map +4 -4
  10. package/kits/compu-78/bd.flac +0 -0
  11. package/kits/compu-78/ch.flac +0 -0
  12. package/kits/compu-78/clap.flac +0 -0
  13. package/kits/compu-78/cym.flac +0 -0
  14. package/kits/compu-78/ht.flac +0 -0
  15. package/kits/compu-78/lt.flac +0 -0
  16. package/kits/compu-78/mt.flac +0 -0
  17. package/kits/compu-78/oh.flac +0 -0
  18. package/kits/compu-78/perc.flac +0 -0
  19. package/kits/compu-78/rim.flac +0 -0
  20. package/kits/compu-78/sd.flac +0 -0
  21. package/kits/compu-78.d.ts +7 -0
  22. package/kits/compu-78.js +22 -0
  23. package/kits/deep-analogue/bd.flac +0 -0
  24. package/kits/deep-analogue/ch.flac +0 -0
  25. package/kits/deep-analogue/clap.flac +0 -0
  26. package/kits/deep-analogue/cym.flac +0 -0
  27. package/kits/deep-analogue/ht.flac +0 -0
  28. package/kits/deep-analogue/lt.flac +0 -0
  29. package/kits/deep-analogue/mt.flac +0 -0
  30. package/kits/deep-analogue/oh.flac +0 -0
  31. package/kits/deep-analogue/perc.flac +0 -0
  32. package/kits/deep-analogue/rim.flac +0 -0
  33. package/kits/deep-analogue/sd.flac +0 -0
  34. package/kits/deep-analogue.d.ts +7 -0
  35. package/kits/deep-analogue.js +22 -0
  36. package/kits/dr5-studio/bd.flac +0 -0
  37. package/kits/dr5-studio/ch.flac +0 -0
  38. package/kits/dr5-studio/clap.flac +0 -0
  39. package/kits/dr5-studio/cym.flac +0 -0
  40. package/kits/dr5-studio/ht.flac +0 -0
  41. package/kits/dr5-studio/lt.flac +0 -0
  42. package/kits/dr5-studio/mt.flac +0 -0
  43. package/kits/dr5-studio/oh.flac +0 -0
  44. package/kits/dr5-studio/perc.flac +0 -0
  45. package/kits/dr5-studio/rim.flac +0 -0
  46. package/kits/dr5-studio/sd.flac +0 -0
  47. package/kits/dr5-studio.d.ts +7 -0
  48. package/kits/dr5-studio.js +22 -0
  49. package/kits/hard-cell/bd.flac +0 -0
  50. package/kits/hard-cell/ch.flac +0 -0
  51. package/kits/hard-cell/clap.flac +0 -0
  52. package/kits/hard-cell/cym.flac +0 -0
  53. package/kits/hard-cell/ht.flac +0 -0
  54. package/kits/hard-cell/lt.flac +0 -0
  55. package/kits/hard-cell/mt.flac +0 -0
  56. package/kits/hard-cell/oh.flac +0 -0
  57. package/kits/hard-cell/perc.flac +0 -0
  58. package/kits/hard-cell/rim.flac +0 -0
  59. package/kits/hard-cell/sd.flac +0 -0
  60. package/kits/hard-cell.d.ts +7 -0
  61. package/kits/hard-cell.js +22 -0
  62. package/kits/micro-click/bd.flac +0 -0
  63. package/kits/micro-click/ch.flac +0 -0
  64. package/kits/micro-click/clap.flac +0 -0
  65. package/kits/micro-click/cym.flac +0 -0
  66. package/kits/micro-click/ht.flac +0 -0
  67. package/kits/micro-click/lt.flac +0 -0
  68. package/kits/micro-click/mt.flac +0 -0
  69. package/kits/micro-click/oh.flac +0 -0
  70. package/kits/micro-click/perc.flac +0 -0
  71. package/kits/micro-click/rim.flac +0 -0
  72. package/kits/micro-click/sd.flac +0 -0
  73. package/kits/micro-click.d.ts +7 -0
  74. package/kits/micro-click.js +22 -0
  75. package/kits/roland-808/bd.flac +0 -0
  76. package/kits/roland-808/ch.flac +0 -0
  77. package/kits/roland-808/clap.flac +0 -0
  78. package/kits/roland-808/cym.flac +0 -0
  79. package/kits/roland-808/ht.flac +0 -0
  80. package/kits/roland-808/lt.flac +0 -0
  81. package/kits/roland-808/mt.flac +0 -0
  82. package/kits/roland-808/oh.flac +0 -0
  83. package/kits/roland-808/perc.flac +0 -0
  84. package/kits/roland-808/rim.flac +0 -0
  85. package/kits/roland-808/sd.flac +0 -0
  86. package/kits/roland-808.d.ts +7 -0
  87. package/kits/roland-808.js +22 -0
  88. package/kits/rx5-fm/bd.flac +0 -0
  89. package/kits/rx5-fm/ch.flac +0 -0
  90. package/kits/rx5-fm/clap.flac +0 -0
  91. package/kits/rx5-fm/cym.flac +0 -0
  92. package/kits/rx5-fm/ht.flac +0 -0
  93. package/kits/rx5-fm/lt.flac +0 -0
  94. package/kits/rx5-fm/mt.flac +0 -0
  95. package/kits/rx5-fm/oh.flac +0 -0
  96. package/kits/rx5-fm/perc.flac +0 -0
  97. package/kits/rx5-fm/rim.flac +0 -0
  98. package/kits/rx5-fm/sd.flac +0 -0
  99. package/kits/rx5-fm.d.ts +7 -0
  100. package/kits/rx5-fm.js +22 -0
  101. package/kits/tape-dust/bd.flac +0 -0
  102. package/kits/tape-dust/ch.flac +0 -0
  103. package/kits/tape-dust/clap.flac +0 -0
  104. package/kits/tape-dust/cym.flac +0 -0
  105. package/kits/tape-dust/ht.flac +0 -0
  106. package/kits/tape-dust/lt.flac +0 -0
  107. package/kits/tape-dust/mt.flac +0 -0
  108. package/kits/tape-dust/oh.flac +0 -0
  109. package/kits/tape-dust/perc.flac +0 -0
  110. package/kits/tape-dust/rim.flac +0 -0
  111. package/kits/tape-dust/sd.flac +0 -0
  112. package/kits/tape-dust.d.ts +7 -0
  113. package/kits/tape-dust.js +22 -0
  114. package/kits/tr-606/bd.flac +0 -0
  115. package/kits/tr-606/ch.flac +0 -0
  116. package/kits/tr-606/cym.flac +0 -0
  117. package/kits/tr-606/ht.flac +0 -0
  118. package/kits/tr-606/lt.flac +0 -0
  119. package/kits/tr-606/mt.flac +0 -0
  120. package/kits/tr-606/oh.flac +0 -0
  121. package/kits/tr-606/sd.flac +0 -0
  122. package/kits/tr-606.d.ts +7 -0
  123. package/kits/tr-606.js +19 -0
  124. package/kits/tr-707/bd.flac +0 -0
  125. package/kits/tr-707/ch.flac +0 -0
  126. package/kits/tr-707/clap.flac +0 -0
  127. package/kits/tr-707/cym.flac +0 -0
  128. package/kits/tr-707/ht.flac +0 -0
  129. package/kits/tr-707/lt.flac +0 -0
  130. package/kits/tr-707/mt.flac +0 -0
  131. package/kits/tr-707/oh.flac +0 -0
  132. package/kits/tr-707/perc.flac +0 -0
  133. package/kits/tr-707/rim.flac +0 -0
  134. package/kits/tr-707/sd.flac +0 -0
  135. package/kits/tr-707.d.ts +7 -0
  136. package/kits/tr-707.js +22 -0
  137. package/kits/tr-909/bd.flac +0 -0
  138. package/kits/tr-909/ch.flac +0 -0
  139. package/kits/tr-909/clap.flac +0 -0
  140. package/kits/tr-909/cym.flac +0 -0
  141. package/kits/tr-909/ht.flac +0 -0
  142. package/kits/tr-909/lt.flac +0 -0
  143. package/kits/tr-909/mt.flac +0 -0
  144. package/kits/tr-909/oh.flac +0 -0
  145. package/kits/tr-909/perc.flac +0 -0
  146. package/kits/tr-909/rim.flac +0 -0
  147. package/kits/tr-909/sd.flac +0 -0
  148. package/kits/tr-909.d.ts +7 -0
  149. package/kits/tr-909.js +22 -0
  150. package/package.json +6 -3
  151. package/{worklets-inline-MUVFLGPY.js → worklets-inline-EF3OTQ4D.js} +2 -2
  152. package/chunk-NDUSYSHF.js.map +0 -7
  153. package/meta.json +0 -4492
  154. /package/{worklets-inline-MUVFLGPY.js.map → worklets-inline-EF3OTQ4D.js.map} +0 -0
package/meta.json DELETED
@@ -1,4492 +0,0 @@
1
- [
2
- {
3
- "slug": "303-filter",
4
- "exportName": "AcidFilter",
5
- "type": "303-filter",
6
- "name": "303",
7
- "categories": [
8
- "Filters"
9
- ],
10
- "description": {
11
- "short": "TB-303 Acid Filter",
12
- "long": "The iconic squelchy filter from the Roland TB-303. Features real triggered envelope that sweeps the cutoff for that classic acid house sound."
13
- },
14
- "ports": {
15
- "in": {
16
- "type": "input",
17
- "signal": "audio",
18
- "node": "input",
19
- "label": "IN",
20
- "name": "Audio Input",
21
- "desc": "Audio signal for the iconic TB-303 acid filter sound."
22
- },
23
- "out": {
24
- "type": "output",
25
- "signal": "audio",
26
- "node": "output",
27
- "label": "OUT",
28
- "name": "Audio Output",
29
- "desc": "Squelchy, resonant acid bass output."
30
- },
31
- "trigger": {
32
- "type": "input",
33
- "signal": "gate",
34
- "node": "trigInput",
35
- "label": "TRIG",
36
- "name": "Trigger Input",
37
- "desc": "Trigger the envelope sweep for classic acid patterns."
38
- },
39
- "modFreq": {
40
- "type": "modulation",
41
- "signal": "modulation",
42
- "node": "_cutoffVoct",
43
- "label": "V/OCT",
44
- "name": "Cutoff V/Oct",
45
- "desc": "External modulation of cutoff in semitones (V/Oct). ±12 = one octave."
46
- }
47
- },
48
- "params": {
49
- "note": {
50
- "node": "_cutoffVoct",
51
- "field": "transpose",
52
- "unit": "note",
53
- "default": 67,
54
- "min": 15,
55
- "max": 135,
56
- "short": "Cutoff Note",
57
- "long": "Base cutoff as a note (67 ≈ 400 Hz, 69 = 440 Hz) for the iconic squelchy acid sound. Drives the V/OCT worklet 1:1 — the panel knob shows the equivalent Hz."
58
- },
59
- "resonance": {
60
- "unit": "factor",
61
- "default": 8,
62
- "min": 0,
63
- "max": 15,
64
- "scale": "sqrt",
65
- "short": "Resonance",
66
- "long": "Resonance amount, 0–100% of travel. Creates the characteristic 303 \"wow\" at high settings. Like the hardware, there is no resonance CV input — the knob is the only control."
67
- },
68
- "envMod": {
69
- "unit": "factor",
70
- "default": 0.7,
71
- "min": 0,
72
- "max": 1,
73
- "short": "Envelope Mod",
74
- "long": "How much the triggered envelope sweeps the filter cutoff."
75
- },
76
- "accent": {
77
- "unit": "factor",
78
- "default": 0.5,
79
- "min": 0,
80
- "max": 1,
81
- "short": "Accent",
82
- "long": "Intensifies the envelope sweep for more aggressive acid sounds."
83
- },
84
- "decay": {
85
- "node": "envSmoother",
86
- "field": "decay",
87
- "unit": "s",
88
- "default": 0.2,
89
- "min": 0.05,
90
- "max": 1,
91
- "scale": "log",
92
- "short": "Decay Time",
93
- "long": "How quickly the filter envelope falls. Short = plucky, long = sustained."
94
- }
95
- },
96
- "controlDescriptions": {
97
- "CUTOFF": {
98
- "short": "Cutoff Frequency",
99
- "long": "Base cutoff for the iconic squelchy acid sound."
100
- },
101
- "RES": {
102
- "short": "Resonance",
103
- "long": "Resonance amount, 0–100% of travel. Creates the characteristic 303 \"wow\" at high settings. Like the hardware, there is no resonance CV input — the knob is the only control."
104
- },
105
- "ENV": {
106
- "short": "Envelope Mod",
107
- "long": "How much the triggered envelope sweeps the filter cutoff."
108
- },
109
- "DECAY": {
110
- "short": "Decay Time",
111
- "long": "How quickly the filter envelope falls. Short = plucky, long = sustained."
112
- },
113
- "ACC": {
114
- "short": "Accent",
115
- "long": "Intensifies the envelope sweep for more aggressive acid sounds."
116
- }
117
- },
118
- "worklets": [
119
- "adsr-envelope",
120
- "map-voct-to-freq"
121
- ]
122
- },
123
- {
124
- "slug": "auto-pan",
125
- "exportName": "AutoPan",
126
- "type": "auto-pan",
127
- "name": "PAN",
128
- "categories": [
129
- "Effects",
130
- "Stereo"
131
- ],
132
- "description": {
133
- "short": "Auto-Panner",
134
- "long": "Stereo auto-panner using LFO-controlled panning. Creates movement and animation in the stereo field."
135
- },
136
- "ports": {
137
- "in": {
138
- "type": "input",
139
- "signal": "audio",
140
- "node": "input",
141
- "label": "IN",
142
- "name": "Audio Input",
143
- "desc": "Audio signal to pan across the stereo field."
144
- },
145
- "out": {
146
- "type": "output",
147
- "signal": "audio",
148
- "node": "output",
149
- "label": "OUT",
150
- "name": "Audio Output",
151
- "desc": "Stereo audio with automatic panning movement."
152
- },
153
- "modRate": {
154
- "type": "modulation",
155
- "signal": "modulation",
156
- "node": "lfo",
157
- "label": "RATE",
158
- "name": "Rate CV",
159
- "desc": "Modulate the pan LFO speed.",
160
- "field": "frequency"
161
- },
162
- "modDepth": {
163
- "type": "modulation",
164
- "signal": "modulation",
165
- "node": "lfoGain",
166
- "label": "DEPTH",
167
- "name": "Depth CV",
168
- "desc": "Modulate the pan sweep depth.",
169
- "field": "gain"
170
- }
171
- },
172
- "params": {
173
- "rate": {
174
- "node": "lfo",
175
- "field": "frequency",
176
- "unit": "Hz",
177
- "default": 2,
178
- "min": 0.1,
179
- "max": 10,
180
- "short": "Rate",
181
- "long": "Panning LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam."
182
- },
183
- "depth": {
184
- "node": "lfoGain",
185
- "field": "gain",
186
- "unit": "factor",
187
- "default": 0.8,
188
- "min": 0,
189
- "max": 1,
190
- "short": "Depth",
191
- "long": "How far the pan sweeps from left to right. 1 = full stereo sweep. modDepth sums into the same AudioParam."
192
- },
193
- "shape": {
194
- "kind": "enum",
195
- "options": [
196
- "sine",
197
- "triangle",
198
- "square"
199
- ],
200
- "default": "sine",
201
- "short": "LFO Shape",
202
- "long": "Waveform shape: sine for smooth, triangle for linear, square for hard left/right."
203
- }
204
- },
205
- "controlDescriptions": {
206
- "RATE": {
207
- "short": "LFO Rate",
208
- "long": "Speed of the automatic panning movement in Hz."
209
- },
210
- "DEPTH": {
211
- "short": "Pan Depth",
212
- "long": "How far the pan sweeps from left to right. 1 = full stereo sweep."
213
- },
214
- "SHAPE": {
215
- "short": "LFO Shape",
216
- "long": "Waveform shape: sine for smooth, triangle for linear, square for hard left/right."
217
- }
218
- },
219
- "worklets": []
220
- },
221
- {
222
- "slug": "bitcrusher",
223
- "exportName": "Bitcrusher",
224
- "type": "bitcrusher",
225
- "name": "CRUSH",
226
- "categories": [
227
- "Distortion"
228
- ],
229
- "description": {
230
- "short": "Bitcrusher",
231
- "long": "Lo-fi digital destruction. Reduces bit depth and sample rate for crunchy, retro video game sounds. RATE controls sample-and-hold decimation."
232
- },
233
- "ports": {
234
- "in": {
235
- "type": "input",
236
- "signal": "audio",
237
- "node": "input",
238
- "label": "IN",
239
- "name": "Audio Input",
240
- "desc": "Audio signal for lo-fi bit and sample rate reduction."
241
- },
242
- "out": {
243
- "type": "output",
244
- "signal": "audio",
245
- "node": "output",
246
- "label": "OUT",
247
- "name": "Audio Output",
248
- "desc": "Crunchy, retro bit-crushed audio output."
249
- }
250
- },
251
- "params": {
252
- "bits": {
253
- "node": "crusher",
254
- "field": "bits",
255
- "unit": "factor",
256
- "default": 8,
257
- "min": 1,
258
- "max": 16,
259
- "short": "Bit Depth",
260
- "long": "Number of bits for quantization. Lower = crunchier, more lo-fi."
261
- },
262
- "rate": {
263
- "node": "crusher",
264
- "field": "rate",
265
- "unit": "factor",
266
- "default": 0.5,
267
- "min": 0.01,
268
- "max": 1,
269
- "scale": "log",
270
- "short": "Sample Rate",
271
- "long": "Sample rate reduction factor. 1 = original, lower = more aliased and crunchy. Creates the classic \"staircase\" sample-and-hold effect."
272
- },
273
- "mix": {
274
- "node": "_mix",
275
- "field": "offset",
276
- "unit": "factor",
277
- "default": 1,
278
- "min": 0,
279
- "max": 1,
280
- "short": "Dry/Wet Mix",
281
- "long": "Balance between clean and crushed signal."
282
- }
283
- },
284
- "controlDescriptions": {
285
- "BITS": {
286
- "short": "Bit Depth",
287
- "long": "Number of bits for quantization. Lower = crunchier, more lo-fi."
288
- },
289
- "RATE": {
290
- "short": "Sample Rate",
291
- "long": "Sample rate reduction factor. 100% = original, lower = more aliased and crunchy. Creates the classic \"staircase\" sample-and-hold effect."
292
- },
293
- "MIX": {
294
- "short": "Dry/Wet Mix",
295
- "long": "Balance between clean and crushed signal."
296
- }
297
- },
298
- "worklets": [
299
- "bitcrusher"
300
- ]
301
- },
302
- {
303
- "slug": "chorus",
304
- "exportName": "Chorus",
305
- "type": "chorus",
306
- "name": "CHORUS",
307
- "categories": [
308
- "Time",
309
- "Effects"
310
- ],
311
- "description": {
312
- "short": "Chorus Effect",
313
- "long": "Stereo chorus: two delayed voices swept in antiphase by one LFO (left rises while right falls), over a centred dry signal — width and gentle detune from a mono source. Classic for pads, guitars, and synths."
314
- },
315
- "ports": {
316
- "in": {
317
- "type": "input",
318
- "signal": "audio",
319
- "node": "input",
320
- "label": "IN",
321
- "name": "Audio Input",
322
- "desc": "Audio signal to thicken with chorus effect."
323
- },
324
- "out": {
325
- "type": "output",
326
- "signal": "audio",
327
- "node": "output",
328
- "label": "OUT",
329
- "name": "Audio Output",
330
- "desc": "Stereo chorus output: dry centred, voices spread left/right."
331
- },
332
- "modRate": {
333
- "type": "modulation",
334
- "signal": "modulation",
335
- "node": "lfo",
336
- "label": "RATE",
337
- "name": "Rate CV",
338
- "desc": "Modulate the chorus sweep speed.",
339
- "field": "frequency"
340
- },
341
- "modMix": {
342
- "type": "modulation",
343
- "signal": "modulation",
344
- "node": "_mix",
345
- "label": "MIX",
346
- "name": "Mix CV",
347
- "desc": "Modulate the dry/wet balance.",
348
- "field": "offset"
349
- }
350
- },
351
- "params": {
352
- "rate": {
353
- "node": "lfo",
354
- "field": "frequency",
355
- "unit": "Hz",
356
- "default": 1.5,
357
- "min": 0.1,
358
- "max": 5,
359
- "short": "Rate",
360
- "long": "Chorus sweep LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam."
361
- },
362
- "depth": {
363
- "unit": "factor",
364
- "default": 0.5,
365
- "min": 0,
366
- "max": 1,
367
- "short": "Modulation Depth",
368
- "long": "How much the delay time is modulated. More = wider detuning. Scaled onto the LFO gain, so it is set-only (no single AudioParam carries it 1:1)."
369
- },
370
- "mix": {
371
- "node": "_mix",
372
- "field": "offset",
373
- "unit": "factor",
374
- "default": 0.5,
375
- "min": 0,
376
- "max": 1,
377
- "short": "Dry/Wet Mix",
378
- "long": "Balance between original and chorused signal, driven by one ConstantSource (dry = 1 − mix·0.5, wet = mix — the antiphase voices already carry half the width at mix 1)."
379
- }
380
- },
381
- "controlDescriptions": {
382
- "RATE": {
383
- "short": "LFO Rate",
384
- "long": "Speed of the chorus modulation. Slow for gentle shimmer."
385
- },
386
- "DEPTH": {
387
- "short": "Modulation Depth",
388
- "long": "How much the delay time is modulated. More = wider detuning."
389
- },
390
- "MIX": {
391
- "short": "Dry/Wet Mix",
392
- "long": "Balance between original and chorused signal."
393
- }
394
- },
395
- "worklets": []
396
- },
397
- {
398
- "slug": "comb-filter",
399
- "exportName": "CombFilter",
400
- "type": "comb-filter",
401
- "name": "COMB",
402
- "categories": [
403
- "Filters"
404
- ],
405
- "description": {
406
- "short": "Comb Filter",
407
- "long": "Karplus-Strong style comb filter using short delay with feedback. Creates metallic, resonant, and pitched tones from any input."
408
- },
409
- "ports": {
410
- "in": {
411
- "type": "input",
412
- "signal": "audio",
413
- "node": "input",
414
- "label": "IN",
415
- "name": "Audio Input",
416
- "desc": "Audio signal for comb filtering."
417
- },
418
- "out": {
419
- "type": "output",
420
- "signal": "audio",
421
- "node": "output",
422
- "label": "OUT",
423
- "name": "Audio Output",
424
- "desc": "Metallic, resonant comb-filtered audio output."
425
- },
426
- "voct": {
427
- "type": "input",
428
- "signal": "pitch",
429
- "node": "_freqVoct",
430
- "label": "V/OCT",
431
- "name": "Pitch CV",
432
- "desc": "Pitch CV input — plays the comb chromatically from keyboard or sequencer CV. Set TUNING to CHROMATIC for scale-true tracking."
433
- },
434
- "modFreq": {
435
- "type": "modulation",
436
- "signal": "modulation",
437
- "node": "_freqVoct",
438
- "label": "FM",
439
- "name": "Pitch FM",
440
- "desc": "Frequency modulation in semitones. ±12 = one octave. Connect an LFO or envelope for musical sweeps."
441
- }
442
- },
443
- "params": {
444
- "offset": {
445
- "node": "_freqVoct",
446
- "field": "transpose",
447
- "default": 55,
448
- "min": -48,
449
- "max": 96,
450
- "unit": "semitone",
451
- "short": "Pitch Offset",
452
- "long": "Semitones added to the V/OCT input (12 = one octave). Unpatched the input is silent, so this is the comb note itself: 55 ≈ 196 Hz, 69 = 440 Hz. Driven by an absolute pitch CV, set 0 to track it as-is."
453
- },
454
- "feedback": {
455
- "node": "comb",
456
- "field": "feedback",
457
- "unit": "factor",
458
- "label": "FDBK",
459
- "default": 0.7,
460
- "min": 0,
461
- "max": 0.95,
462
- "short": "Feedback",
463
- "long": "Resonance amount. Higher values create more pronounced, ringing tones."
464
- },
465
- "mix": {
466
- "node": "_mix",
467
- "field": "offset",
468
- "unit": "factor",
469
- "label": "MIX",
470
- "default": 0.5,
471
- "min": 0,
472
- "max": 1,
473
- "short": "Dry/Wet Mix",
474
- "long": "Balance between original and comb-filtered signal."
475
- },
476
- "tuning": {
477
- "label": "TUNING",
478
- "kind": "enum",
479
- "options": [
480
- "chromatic",
481
- "free"
482
- ],
483
- "default": "chromatic",
484
- "short": "Tuning Mode",
485
- "long": "CHROMATIC snaps the FREQ knob to semitones; FREE allows continuous tuning."
486
- }
487
- },
488
- "controlDescriptions": {
489
- "FREQ": {
490
- "short": "Frequency / Transpose",
491
- "long": "Free-running: the ribbon sets the comb pitch. With a cable on V/OCT it becomes a transpose around the incoming pitch (+0 st = track as-is). Each mode remembers its own setting."
492
- },
493
- "FDBK": {
494
- "short": "Feedback",
495
- "long": "Resonance amount. Higher values create more pronounced, ringing tones."
496
- },
497
- "MIX": {
498
- "short": "Dry/Wet Mix",
499
- "long": "Balance between original and comb-filtered signal."
500
- }
501
- },
502
- "worklets": [
503
- "map-voct-to-period",
504
- "comb-filter"
505
- ]
506
- },
507
- {
508
- "slug": "comp",
509
- "exportName": "Compressor",
510
- "type": "compressor",
511
- "name": "COMP",
512
- "categories": [
513
- "Dynamics"
514
- ],
515
- "description": {
516
- "short": "Dynamics Compressor",
517
- "long": "Reduces dynamic range by attenuating loud signals. Threshold sets where compression begins, ratio controls intensity."
518
- },
519
- "ports": {
520
- "in": {
521
- "type": "input",
522
- "signal": "audio",
523
- "node": "comp",
524
- "label": "IN",
525
- "name": "Audio Input",
526
- "desc": "Audio signal to compress."
527
- },
528
- "out": {
529
- "type": "output",
530
- "signal": "audio",
531
- "node": "makeup",
532
- "label": "OUT",
533
- "name": "Audio Output",
534
- "desc": "Compressed audio with makeup gain applied."
535
- }
536
- },
537
- "params": {
538
- "threshold": {
539
- "node": "comp",
540
- "field": "threshold",
541
- "unit": "dB",
542
- "default": -24,
543
- "min": -60,
544
- "max": 0,
545
- "short": "Threshold",
546
- "long": "Level above which compression kicks in. Lower = more compression."
547
- },
548
- "ratio": {
549
- "node": "comp",
550
- "field": "ratio",
551
- "unit": "factor",
552
- "default": 4,
553
- "min": 1,
554
- "max": 20,
555
- "scale": "log",
556
- "short": "Ratio",
557
- "long": "How much to reduce signal above threshold. 4:1 = every 4dB over becomes 1dB."
558
- },
559
- "attack": {
560
- "node": "comp",
561
- "field": "attack",
562
- "unit": "s",
563
- "default": 0.003,
564
- "min": 0.001,
565
- "max": 1,
566
- "scale": "log",
567
- "short": "Attack",
568
- "long": "How fast compression responds to loud signals."
569
- },
570
- "release": {
571
- "node": "comp",
572
- "field": "release",
573
- "unit": "s",
574
- "default": 0.25,
575
- "min": 0.01,
576
- "max": 1,
577
- "scale": "log",
578
- "short": "Release",
579
- "long": "How fast compression releases after signal drops."
580
- },
581
- "knee": {
582
- "node": "comp",
583
- "field": "knee",
584
- "unit": "dB",
585
- "default": 10,
586
- "min": 0,
587
- "max": 40,
588
- "short": "Knee",
589
- "long": "Width of the transition zone around the threshold. 0 = hard knee (abrupt), 40 = soft knee (gradual)."
590
- },
591
- "makeup": {
592
- "unit": "dB",
593
- "default": 0,
594
- "min": 0,
595
- "max": 30,
596
- "short": "Makeup Gain",
597
- "long": "Boosts the output level to compensate for gain reduction. Up to +30 dB."
598
- }
599
- },
600
- "controlDescriptions": {
601
- "THRS": {
602
- "short": "Threshold",
603
- "long": "Level above which compression kicks in. Lower = more compression."
604
- },
605
- "RATIO": {
606
- "short": "Ratio",
607
- "long": "How much to reduce signal above threshold. 4:1 = every 4dB over becomes 1dB."
608
- },
609
- "KNEE": {
610
- "short": "Knee",
611
- "long": "Width of the transition zone around the threshold. 0 = hard knee (abrupt), 40 = soft knee (gradual)."
612
- },
613
- "ATK": {
614
- "short": "Attack",
615
- "long": "How fast compression responds to loud signals."
616
- },
617
- "REL": {
618
- "short": "Release",
619
- "long": "How fast compression releases after signal drops."
620
- },
621
- "GAIN": {
622
- "short": "Makeup Gain",
623
- "long": "Boosts the output level to compensate for gain reduction. Up to +30 dB."
624
- }
625
- },
626
- "worklets": []
627
- },
628
- {
629
- "slug": "crossfade",
630
- "exportName": "Crossfade",
631
- "type": "crossfade",
632
- "name": "X-FADE",
633
- "categories": [
634
- "Utility"
635
- ],
636
- "description": {
637
- "short": "Crossfader",
638
- "long": "Blends between two input signals. Equal-power curve maintains consistent volume. Essential DJ tool and utility for mixing sources."
639
- },
640
- "ports": {
641
- "a": {
642
- "type": "input",
643
- "signal": "audio",
644
- "node": "inputA",
645
- "label": "A",
646
- "name": "Input A",
647
- "desc": "First audio source for crossfading."
648
- },
649
- "b": {
650
- "type": "input",
651
- "signal": "audio",
652
- "node": "inputB",
653
- "label": "B",
654
- "name": "Input B",
655
- "desc": "Second audio source for crossfading."
656
- },
657
- "out": {
658
- "type": "output",
659
- "signal": "audio",
660
- "node": "output",
661
- "label": "OUT",
662
- "name": "Audio Output",
663
- "desc": "Blended mix of inputs A and B."
664
- }
665
- },
666
- "params": {
667
- "blend": {
668
- "node": "_mix",
669
- "field": "offset",
670
- "unit": "factor",
671
- "default": 0.5,
672
- "min": 0,
673
- "max": 1,
674
- "short": "Crossfade Position",
675
- "long": "Position between inputs. 0 = all A, 1 = all B."
676
- },
677
- "curve": {
678
- "kind": "enum",
679
- "default": "equal-power",
680
- "options": [
681
- "linear",
682
- "equal-power"
683
- ],
684
- "short": "Curve Type",
685
- "long": "Linear or equal-power crossfade curve."
686
- }
687
- },
688
- "controlDescriptions": {
689
- "BLEND": {
690
- "short": "Crossfade Position",
691
- "long": "Position between inputs. 0 = all A, 1 = all B."
692
- },
693
- "CURVE": {
694
- "short": "Curve Type",
695
- "long": "Linear or equal-power crossfade curve."
696
- }
697
- },
698
- "worklets": []
699
- },
700
- {
701
- "slug": "delay",
702
- "exportName": "Delay",
703
- "type": "delay",
704
- "name": "DELAY",
705
- "categories": [
706
- "Time"
707
- ],
708
- "description": {
709
- "short": "Echo Effect",
710
- "long": "Creates repeating echoes of the input signal. Adjust time, feedback for number of repeats, and mix for wet/dry balance."
711
- },
712
- "ports": {
713
- "in": {
714
- "type": "input",
715
- "signal": "audio",
716
- "node": "input",
717
- "label": "IN",
718
- "name": "Audio Input",
719
- "desc": "Audio signal to be delayed."
720
- },
721
- "out": {
722
- "type": "output",
723
- "signal": "audio",
724
- "node": "output",
725
- "label": "OUT",
726
- "name": "Audio Output",
727
- "desc": "Delayed audio signal mixed with dry signal."
728
- }
729
- },
730
- "params": {
731
- "time": {
732
- "node": "delay",
733
- "field": "period",
734
- "label": "TIME",
735
- "default": 0.3,
736
- "min": 0.01,
737
- "max": 1,
738
- "scale": "log",
739
- "unit": "s",
740
- "short": "Delay Time",
741
- "long": "Time between original signal and echo. Sync to tempo for rhythmic effects."
742
- },
743
- "feedback": {
744
- "node": "delay",
745
- "field": "feedback",
746
- "unit": "factor",
747
- "label": "FDBK",
748
- "default": 0.4,
749
- "min": 0,
750
- "max": 0.95,
751
- "short": "Feedback",
752
- "long": "How much delayed signal feeds back. Higher = more repeats. Be careful of runaway feedback!"
753
- },
754
- "mix": {
755
- "node": "_mix",
756
- "field": "offset",
757
- "unit": "factor",
758
- "label": "MIX",
759
- "default": 0.5,
760
- "min": 0,
761
- "max": 1,
762
- "short": "Dry/Wet Mix",
763
- "long": "Balance between original (dry) and delayed (wet) signal."
764
- }
765
- },
766
- "controlDescriptions": {
767
- "TIME": {
768
- "short": "Delay Time",
769
- "long": "Time between original signal and echo. Sync to tempo for rhythmic effects."
770
- },
771
- "FDBK": {
772
- "short": "Feedback",
773
- "long": "How much delayed signal feeds back. Higher = more repeats. Be careful of runaway feedback!"
774
- },
775
- "MIX": {
776
- "short": "Dry/Wet Mix",
777
- "long": "Balance between original (dry) and delayed (wet) signal."
778
- }
779
- },
780
- "worklets": [
781
- "comb-filter"
782
- ]
783
- },
784
- {
785
- "slug": "dimension",
786
- "exportName": "Dimension",
787
- "type": "dimension",
788
- "name": "DIM",
789
- "categories": [
790
- "Effects"
791
- ],
792
- "description": {
793
- "short": "Dimension Expander",
794
- "long": "Roland Dimension-D inspired stereo widener. Adds subtle modulation to create spacious, wide stereo images. Classic 80s lush pad sound."
795
- },
796
- "ports": {
797
- "in": {
798
- "type": "input",
799
- "signal": "audio",
800
- "node": "input",
801
- "label": "IN",
802
- "name": "Audio Input",
803
- "desc": "Audio signal for stereo widening."
804
- },
805
- "out": {
806
- "type": "output",
807
- "signal": "audio",
808
- "node": "output",
809
- "label": "OUT",
810
- "name": "Audio Output",
811
- "desc": "Spacious, wide stereo audio with subtle modulation."
812
- },
813
- "modRate": {
814
- "type": "modulation",
815
- "signal": "modulation",
816
- "node": "lfo",
817
- "label": "RATE",
818
- "name": "Rate CV",
819
- "desc": "Modulate the widening LFO speed.",
820
- "field": "frequency"
821
- }
822
- },
823
- "params": {
824
- "rate": {
825
- "node": "lfo",
826
- "field": "frequency",
827
- "unit": "Hz",
828
- "default": 0.5,
829
- "min": 0.1,
830
- "max": 5,
831
- "short": "Rate",
832
- "long": "Widening LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam."
833
- },
834
- "depth": {
835
- "unit": "factor",
836
- "default": 0.3,
837
- "min": 0,
838
- "max": 1,
839
- "short": "Modulation Depth",
840
- "long": "Amount of chorus-like modulation for that classic 80s wide sound. Scaled onto the LFO gains, so it is set-only (no single AudioParam carries it 1:1)."
841
- }
842
- },
843
- "controlDescriptions": {
844
- "WIDTH": {
845
- "short": "Stereo Width",
846
- "long": "Adjusts stereo image. 0=mono, 1=normal, 2=extra wide."
847
- },
848
- "RATE": {
849
- "short": "Modulation Rate",
850
- "long": "Speed of the subtle stereo modulation for movement."
851
- },
852
- "DEPTH": {
853
- "short": "Modulation Depth",
854
- "long": "Amount of chorus-like modulation for that classic 80s wide sound."
855
- }
856
- },
857
- "worklets": []
858
- },
859
- {
860
- "slug": "distortion",
861
- "exportName": "Distortion",
862
- "type": "distortion",
863
- "name": "DIST",
864
- "categories": [
865
- "Distortion"
866
- ],
867
- "description": {
868
- "short": "Distortion Effect",
869
- "long": "Three clipping circuits: soft (tanh overdrive), hard (true rail clipper — flattens to a square at high drive), fuzz (biased asymmetric saturator with even harmonics). Output is loudness-compensated so DRIVE and TYPE shape timbre, not volume; TONE tames the fizz."
870
- },
871
- "ports": {
872
- "in": {
873
- "type": "input",
874
- "signal": "audio",
875
- "node": "input",
876
- "label": "IN",
877
- "name": "Audio Input",
878
- "desc": "Clean audio signal to distort."
879
- },
880
- "out": {
881
- "type": "output",
882
- "signal": "audio",
883
- "node": "output",
884
- "label": "OUT",
885
- "name": "Audio Output",
886
- "desc": "Distorted audio signal output."
887
- }
888
- },
889
- "params": {
890
- "distortionType": {
891
- "label": "TYPE",
892
- "kind": "enum",
893
- "default": "soft",
894
- "options": [
895
- "soft",
896
- "hard",
897
- "fuzz"
898
- ],
899
- "short": "Clipping Curve",
900
- "long": "Which clipping transfer curve the signal is pushed into."
901
- },
902
- "drive": {
903
- "unit": "factor",
904
- "label": "DRIVE",
905
- "default": 5,
906
- "min": 1,
907
- "max": 20,
908
- "scale": "log",
909
- "short": "Drive Amount",
910
- "long": "How hard the signal is pushed into the clipping curve. The whole travel is usable: low = warm break-up, high = full clipping."
911
- },
912
- "frequency": {
913
- "node": "toneFilter",
914
- "field": "frequency",
915
- "unit": "Hz",
916
- "label": "TONE",
917
- "default": 16000,
918
- "min": 500,
919
- "max": 16000,
920
- "scale": "log",
921
- "short": "Tone",
922
- "long": "Post-clip lowpass (500 Hz – 16 kHz). Turn down to tame the high-frequency fizz clipping creates — the Filter knob on a RAT."
923
- },
924
- "mix": {
925
- "node": "_mix",
926
- "field": "offset",
927
- "unit": "factor",
928
- "label": "MIX",
929
- "default": 0.8,
930
- "min": 0,
931
- "max": 1,
932
- "short": "Dry/Wet Mix",
933
- "long": "Balance between clean and distorted signal. Low settings give parallel distortion."
934
- }
935
- },
936
- "controlDescriptions": {
937
- "DRIVE": {
938
- "short": "Drive Amount",
939
- "long": "How hard the signal is pushed into the clipping curve. The whole travel is usable: low = warm break-up, high = full clipping."
940
- },
941
- "TONE": {
942
- "short": "Tone",
943
- "long": "Post-clip lowpass (500 Hz – 16 kHz). Turn down to tame the high-frequency fizz clipping creates — the Filter knob on a RAT."
944
- },
945
- "MIX": {
946
- "short": "Dry/Wet Mix",
947
- "long": "Balance between clean and distorted signal. Low settings give parallel distortion."
948
- }
949
- },
950
- "worklets": []
951
- },
952
- {
953
- "slug": "ducker",
954
- "exportName": "Ducker",
955
- "type": "ducker",
956
- "name": "DUCK",
957
- "categories": [
958
- "Dynamics"
959
- ],
960
- "description": {
961
- "short": "Sidechain Ducker",
962
- "long": "Ducks the input whenever the sidechain reaches the threshold, using a sample-accurate follower with separate attack and release. The detector saturates like a real sidechain circuit, so a hot kick does not wind it up — REL always sets how fast the signal breathes back. Classic pumping effect for EDM and mixing."
963
- },
964
- "ports": {
965
- "in": {
966
- "type": "input",
967
- "signal": "audio",
968
- "node": "input",
969
- "label": "IN",
970
- "name": "Audio Input",
971
- "desc": "Main audio signal to be ducked."
972
- },
973
- "sc": {
974
- "type": "input",
975
- "signal": "audio",
976
- "node": "scInput",
977
- "label": "SC",
978
- "name": "Sidechain Input",
979
- "desc": "Control signal that triggers ducking. When this exceeds threshold, main input is attenuated."
980
- },
981
- "out": {
982
- "type": "output",
983
- "signal": "audio",
984
- "node": "output",
985
- "label": "OUT",
986
- "name": "Audio Output",
987
- "desc": "Ducked audio output with sidechain-controlled dynamics."
988
- }
989
- },
990
- "params": {
991
- "threshold": {
992
- "unit": "dB",
993
- "default": -24,
994
- "min": -60,
995
- "max": 0,
996
- "short": "Threshold",
997
- "long": "Sidechain level that triggers ducking. Lower = more sensitive."
998
- },
999
- "amount": {
1000
- "unit": "factor",
1001
- "default": 0.7,
1002
- "min": 0,
1003
- "max": 1,
1004
- "short": "Duck Amount",
1005
- "long": "How much to reduce the main signal when triggered."
1006
- },
1007
- "attack": {
1008
- "node": "envFollower",
1009
- "field": "attack",
1010
- "unit": "s",
1011
- "default": 0.01,
1012
- "min": 0.001,
1013
- "max": 0.1,
1014
- "scale": "log",
1015
- "short": "Attack",
1016
- "long": "How fast ducking kicks in after sidechain exceeds threshold."
1017
- },
1018
- "release": {
1019
- "node": "envFollower",
1020
- "field": "release",
1021
- "unit": "s",
1022
- "default": 0.2,
1023
- "min": 0.001,
1024
- "max": 1,
1025
- "scale": "log",
1026
- "short": "Release",
1027
- "long": "How fast signal returns to normal after sidechain drops."
1028
- }
1029
- },
1030
- "controlDescriptions": {
1031
- "THRESH": {
1032
- "short": "Threshold",
1033
- "long": "Sidechain level that triggers ducking. Lower = more sensitive."
1034
- },
1035
- "DUCK": {
1036
- "short": "Duck Amount",
1037
- "long": "How much to reduce the main signal when triggered."
1038
- },
1039
- "ATK": {
1040
- "short": "Attack",
1041
- "long": "How fast ducking kicks in after sidechain exceeds threshold."
1042
- },
1043
- "REL": {
1044
- "short": "Release",
1045
- "long": "How fast signal returns to normal after sidechain drops."
1046
- }
1047
- },
1048
- "worklets": [
1049
- "env-follower"
1050
- ]
1051
- },
1052
- {
1053
- "slug": "env-follow",
1054
- "exportName": "EnvelopeFollower",
1055
- "type": "env-follow",
1056
- "name": "ENV-F",
1057
- "categories": [
1058
- "Modulators",
1059
- "Utility"
1060
- ],
1061
- "description": {
1062
- "short": "Envelope Follower",
1063
- "long": "Extracts the amplitude envelope from audio using sample-accurate asymmetric smoothing. Separate attack and release times for precise dynamic tracking. Depth scales the CV output for modulating filters, VCAs, etc."
1064
- },
1065
- "ports": {
1066
- "in": {
1067
- "type": "input",
1068
- "signal": "audio",
1069
- "node": "input",
1070
- "label": "IN",
1071
- "name": "Audio Input",
1072
- "desc": "Audio signal to analyze for envelope."
1073
- },
1074
- "env": {
1075
- "type": "output",
1076
- "node": "depthGain",
1077
- "label": "ENV",
1078
- "name": "Envelope CV",
1079
- "desc": "Amplitude envelope CV, scaled by DEPTH. Connect to filter, VCA, or other modulation inputs.",
1080
- "signal": "modulation"
1081
- }
1082
- },
1083
- "params": {
1084
- "attack": {
1085
- "node": "envFollower",
1086
- "field": "attack",
1087
- "unit": "s",
1088
- "default": 0.01,
1089
- "min": 0.001,
1090
- "max": 0.5,
1091
- "scale": "log",
1092
- "short": "Attack Time",
1093
- "long": "How quickly the envelope responds to rising levels. Shorter = snappier transient tracking."
1094
- },
1095
- "release": {
1096
- "node": "envFollower",
1097
- "field": "release",
1098
- "unit": "s",
1099
- "default": 0.1,
1100
- "min": 0.001,
1101
- "max": 2,
1102
- "scale": "log",
1103
- "short": "Release Time",
1104
- "long": "How quickly the envelope responds to falling levels. Longer = smoother, more sustained envelope."
1105
- },
1106
- "sensitivity": {
1107
- "unit": "factor",
1108
- "default": 0.5,
1109
- "min": 0,
1110
- "max": 1,
1111
- "short": "Sensitivity",
1112
- "long": "Input gain before envelope detection. Higher = more responsive to quiet signals."
1113
- },
1114
- "depth": {
1115
- "node": "depthGain",
1116
- "field": "gain",
1117
- "unit": "semitone",
1118
- "default": 48,
1119
- "min": 0,
1120
- "max": 96,
1121
- "scale": "sqrt",
1122
- "short": "Output Depth",
1123
- "long": "Scales the CV output amplitude. For V/Oct filter targets, 12 semitones = one octave, so 48 ≈ four octaves. For VCA or other targets, use lower values (0.5–2)."
1124
- }
1125
- },
1126
- "controlDescriptions": {
1127
- "ATK": {
1128
- "short": "Attack Time",
1129
- "long": "How quickly the envelope responds to rising levels. Shorter = snappier transient tracking."
1130
- },
1131
- "REL": {
1132
- "short": "Release Time",
1133
- "long": "How quickly the envelope responds to falling levels. Longer = smoother, more sustained envelope."
1134
- },
1135
- "SENS": {
1136
- "short": "Sensitivity",
1137
- "long": "Input gain before envelope detection. Higher = more responsive to quiet signals."
1138
- },
1139
- "DEPTH": {
1140
- "short": "Output Depth",
1141
- "long": "Scales the CV output amplitude. For V/Oct filter targets, 12 semitones = one octave, so 48 ≈ four octaves. For VCA or other targets, use lower values (0.5–2)."
1142
- }
1143
- },
1144
- "worklets": [
1145
- "env-follower"
1146
- ]
1147
- },
1148
- {
1149
- "slug": "envelope",
1150
- "exportName": "Envelope",
1151
- "type": "envelope",
1152
- "name": "ADSR",
1153
- "categories": [
1154
- "Modulators"
1155
- ],
1156
- "description": {
1157
- "short": "ADSR Envelope",
1158
- "long": "Shapes how a sound evolves over time. Connect a gate signal to TRIG (from keyboard or sequencer) to trigger the Attack→Decay→Sustain→Release cycle."
1159
- },
1160
- "ports": {
1161
- "in": {
1162
- "type": "input",
1163
- "signal": "audio",
1164
- "node": "mainGain",
1165
- "label": "IN",
1166
- "name": "Audio Input",
1167
- "desc": "Audio signal to shape with the envelope."
1168
- },
1169
- "out": {
1170
- "type": "output",
1171
- "signal": "audio",
1172
- "node": "mainGain",
1173
- "label": "OUT",
1174
- "name": "Audio Output",
1175
- "desc": "Envelope-shaped audio output."
1176
- },
1177
- "env": {
1178
- "type": "output",
1179
- "signal": "modulation",
1180
- "node": "envOut",
1181
- "label": "ENV",
1182
- "name": "Envelope CV",
1183
- "desc": "Scaled envelope output. Use DEPTH to control how much the envelope sweeps the target."
1184
- },
1185
- "trigger": {
1186
- "type": "input",
1187
- "signal": "gate",
1188
- "node": "adsrNode",
1189
- "label": "TRIG",
1190
- "name": "Trigger Input",
1191
- "desc": "Connect a gate signal (from keyboard or sequencer) to trigger the envelope cycle."
1192
- }
1193
- },
1194
- "params": {
1195
- "attack": {
1196
- "node": "adsrNode",
1197
- "field": "attack",
1198
- "label": "A",
1199
- "default": 0.01,
1200
- "min": 0.001,
1201
- "max": 2,
1202
- "scale": "log",
1203
- "unit": "s",
1204
- "short": "Attack",
1205
- "long": "Time for signal to rise from zero to full level when triggered."
1206
- },
1207
- "decay": {
1208
- "node": "adsrNode",
1209
- "field": "decay",
1210
- "label": "D",
1211
- "default": 0.1,
1212
- "min": 0.001,
1213
- "max": 2,
1214
- "scale": "log",
1215
- "unit": "s",
1216
- "short": "Decay",
1217
- "long": "Time to fall from peak to sustain level after attack completes."
1218
- },
1219
- "sustain": {
1220
- "node": "adsrNode",
1221
- "field": "sustain",
1222
- "unit": "factor",
1223
- "label": "S",
1224
- "default": 0.7,
1225
- "min": 0,
1226
- "max": 1,
1227
- "short": "Sustain",
1228
- "long": "Level held while the note is held. 0 = plucky, 1 = organ-like."
1229
- },
1230
- "release": {
1231
- "node": "adsrNode",
1232
- "field": "release",
1233
- "label": "R",
1234
- "default": 0.3,
1235
- "min": 0.001,
1236
- "max": 3,
1237
- "scale": "log",
1238
- "unit": "s",
1239
- "short": "Release",
1240
- "long": "Time to fade to silence after note is released."
1241
- },
1242
- "depth": {
1243
- "node": "envOut",
1244
- "field": "gain",
1245
- "label": "DEPTH",
1246
- "default": 48,
1247
- "min": 0,
1248
- "max": 96,
1249
- "scale": "sqrt",
1250
- "unit": "semitone",
1251
- "short": "ENV Depth",
1252
- "long": "Scales the ENV output in semitones (12 = one octave), the unit every pitch and cutoff modulation input on this rack reads. Higher values produce a wider sweep on the modulation target."
1253
- }
1254
- },
1255
- "controlDescriptions": {
1256
- "A": {
1257
- "short": "Attack",
1258
- "long": "Time for signal to rise from zero to full level when triggered."
1259
- },
1260
- "D": {
1261
- "short": "Decay",
1262
- "long": "Time to fall from peak to sustain level after attack completes."
1263
- },
1264
- "S": {
1265
- "short": "Sustain",
1266
- "long": "Level held while the note is held. 0 = plucky, 1 = organ-like."
1267
- },
1268
- "R": {
1269
- "short": "Release",
1270
- "long": "Time to fade to silence after note is released."
1271
- },
1272
- "DEPTH": {
1273
- "short": "ENV Depth",
1274
- "long": "Scales the ENV output in semitones (12 = one octave), the unit every pitch and cutoff modulation input on this rack reads. Higher values produce a wider sweep on the modulation target."
1275
- }
1276
- },
1277
- "worklets": [
1278
- "adsr-envelope"
1279
- ]
1280
- },
1281
- {
1282
- "slug": "eq3",
1283
- "exportName": "ThreeBandEq",
1284
- "type": "eq3",
1285
- "name": "EQ3",
1286
- "categories": [
1287
- "Filters"
1288
- ],
1289
- "description": {
1290
- "short": "3-Band Equalizer",
1291
- "long": "Shape your sound with bass, mid, and treble controls. Boost or cut frequencies by up to 12dB. Essential for mixing and tone shaping."
1292
- },
1293
- "ports": {
1294
- "in": {
1295
- "type": "input",
1296
- "signal": "audio",
1297
- "node": "input",
1298
- "label": "IN",
1299
- "name": "Audio Input",
1300
- "desc": "Audio signal to be equalized."
1301
- },
1302
- "out": {
1303
- "type": "output",
1304
- "signal": "audio",
1305
- "node": "output",
1306
- "label": "OUT",
1307
- "name": "Audio Output",
1308
- "desc": "Tone-shaped equalized audio output."
1309
- }
1310
- },
1311
- "params": {
1312
- "low": {
1313
- "node": "lowShelf",
1314
- "field": "gain",
1315
- "unit": "dB",
1316
- "default": 0,
1317
- "min": -12,
1318
- "max": 12,
1319
- "short": "Bass",
1320
- "long": "Low shelf gain at 320 Hz. Boost for warmth, cut for clarity."
1321
- },
1322
- "mid": {
1323
- "node": "midPeak",
1324
- "field": "gain",
1325
- "unit": "dB",
1326
- "default": 0,
1327
- "min": -12,
1328
- "max": 12,
1329
- "short": "Midrange",
1330
- "long": "Peaking gain at the mid frequency. The presence and body range."
1331
- },
1332
- "high": {
1333
- "node": "highShelf",
1334
- "field": "gain",
1335
- "unit": "dB",
1336
- "default": 0,
1337
- "min": -12,
1338
- "max": 12,
1339
- "short": "Treble",
1340
- "long": "High shelf gain at 3.2 kHz. Boost for brightness, cut for smoothness."
1341
- },
1342
- "midFreq": {
1343
- "node": "midPeak",
1344
- "field": "frequency",
1345
- "unit": "Hz",
1346
- "default": 1000,
1347
- "min": 200,
1348
- "max": 5000,
1349
- "scale": "log",
1350
- "short": "Mid Frequency",
1351
- "long": "Center frequency for the mid band EQ."
1352
- }
1353
- },
1354
- "controlDescriptions": {
1355
- "LOW": {
1356
- "short": "Bass",
1357
- "long": "Low shelf gain at 320 Hz. Boost for warmth, cut for clarity."
1358
- },
1359
- "MID": {
1360
- "short": "Midrange",
1361
- "long": "Peaking gain at adjustable frequency. The presence and body range."
1362
- },
1363
- "HIGH": {
1364
- "short": "Treble",
1365
- "long": "High shelf gain at 3.2 kHz. Boost for brightness, cut for smoothness."
1366
- },
1367
- "MID F": {
1368
- "short": "Mid Frequency",
1369
- "long": "Center frequency for the mid band EQ. 200-5000 Hz range."
1370
- }
1371
- },
1372
- "worklets": []
1373
- },
1374
- {
1375
- "slug": "exciter",
1376
- "exportName": "Exciter",
1377
- "type": "exciter",
1378
- "name": "EXCITE",
1379
- "categories": [
1380
- "Dynamics"
1381
- ],
1382
- "description": {
1383
- "short": "Harmonic Exciter",
1384
- "long": "Adds high-frequency harmonics and \"air\" to dull signals. Generates subtle saturation in the treble range for presence and sparkle."
1385
- },
1386
- "ports": {
1387
- "in": {
1388
- "type": "input",
1389
- "signal": "audio",
1390
- "node": "input",
1391
- "label": "IN",
1392
- "name": "Audio Input",
1393
- "desc": "Audio signal for harmonic enhancement."
1394
- },
1395
- "out": {
1396
- "type": "output",
1397
- "signal": "audio",
1398
- "node": "output",
1399
- "label": "OUT",
1400
- "name": "Audio Output",
1401
- "desc": "Bright, exciting audio with added harmonics."
1402
- }
1403
- },
1404
- "params": {
1405
- "drive": {
1406
- "unit": "factor",
1407
- "default": 0.5,
1408
- "min": 0,
1409
- "max": 1,
1410
- "short": "Drive",
1411
- "long": "Amount of harmonic saturation added to high frequencies."
1412
- },
1413
- "frequency": {
1414
- "unit": "Hz",
1415
- "default": 4000,
1416
- "min": 2000,
1417
- "max": 8000,
1418
- "scale": "log",
1419
- "short": "Frequency",
1420
- "long": "Cutoff frequency above which excitement is applied."
1421
- },
1422
- "mix": {
1423
- "node": "wetGain",
1424
- "field": "gain",
1425
- "unit": "factor",
1426
- "default": 0.5,
1427
- "min": 0,
1428
- "max": 1,
1429
- "short": "Mix Amount",
1430
- "long": "How much excited signal is added to the original."
1431
- }
1432
- },
1433
- "controlDescriptions": {
1434
- "DRIVE": {
1435
- "short": "Drive",
1436
- "long": "Amount of harmonic saturation added to high frequencies."
1437
- },
1438
- "FREQ": {
1439
- "short": "Frequency",
1440
- "long": "Cutoff frequency above which excitement is applied."
1441
- },
1442
- "MIX": {
1443
- "short": "Mix Amount",
1444
- "long": "How much excited signal is added to the original."
1445
- }
1446
- },
1447
- "worklets": []
1448
- },
1449
- {
1450
- "slug": "flanger",
1451
- "exportName": "Flanger",
1452
- "type": "flanger",
1453
- "name": "FLANGER",
1454
- "categories": [
1455
- "Time",
1456
- "Effects"
1457
- ],
1458
- "description": {
1459
- "short": "Flanger Effect",
1460
- "long": "Creates jet-plane swooshing by mixing signal with a short modulated delay. The feedback control adds metallic resonance for dramatic sweeps."
1461
- },
1462
- "ports": {
1463
- "in": {
1464
- "type": "input",
1465
- "signal": "audio",
1466
- "node": "input",
1467
- "label": "IN",
1468
- "name": "Audio Input",
1469
- "desc": "Audio signal for flanging effect."
1470
- },
1471
- "out": {
1472
- "type": "output",
1473
- "signal": "audio",
1474
- "node": "output",
1475
- "label": "OUT",
1476
- "name": "Audio Output",
1477
- "desc": "Swooshing, jet-plane flanged audio output."
1478
- },
1479
- "modRate": {
1480
- "type": "modulation",
1481
- "signal": "modulation",
1482
- "node": "flanger",
1483
- "label": "RATE",
1484
- "name": "Rate CV",
1485
- "desc": "Modulate the flanger sweep speed.",
1486
- "field": "rate"
1487
- },
1488
- "modDepth": {
1489
- "type": "modulation",
1490
- "signal": "modulation",
1491
- "node": "flanger",
1492
- "label": "DEPTH",
1493
- "name": "Depth CV",
1494
- "desc": "Modulate the flanger modulation depth.",
1495
- "field": "depth"
1496
- },
1497
- "modFeedback": {
1498
- "type": "modulation",
1499
- "signal": "modulation",
1500
- "node": "flanger",
1501
- "label": "FDBK",
1502
- "name": "Feedback CV",
1503
- "desc": "Modulate the resonance feedback amount.",
1504
- "field": "feedback"
1505
- },
1506
- "modMix": {
1507
- "type": "modulation",
1508
- "signal": "modulation",
1509
- "node": "_mix",
1510
- "label": "MIX",
1511
- "name": "Mix CV",
1512
- "desc": "Modulate the dry/wet balance.",
1513
- "field": "offset"
1514
- }
1515
- },
1516
- "params": {
1517
- "rate": {
1518
- "node": "flanger",
1519
- "field": "rate",
1520
- "unit": "Hz",
1521
- "default": 0.5,
1522
- "min": 0.1,
1523
- "max": 5,
1524
- "short": "Rate",
1525
- "long": "Flanger sweep LFO speed, a real a-rate AudioParam on the worklet. modRate sums into the same AudioParam."
1526
- },
1527
- "depth": {
1528
- "node": "flanger",
1529
- "field": "depth",
1530
- "unit": "factor",
1531
- "default": 0.7,
1532
- "min": 0,
1533
- "max": 1,
1534
- "short": "Modulation Depth",
1535
- "long": "How much the delay time is modulated, a real AudioParam on the worklet. modDepth sums into the same AudioParam."
1536
- },
1537
- "feedback": {
1538
- "node": "flanger",
1539
- "field": "feedback",
1540
- "unit": "factor",
1541
- "default": 0.7,
1542
- "min": 0,
1543
- "max": 0.95,
1544
- "short": "Feedback",
1545
- "long": "Resonance amount, a real AudioParam on the worklet. modFeedback sums into the same AudioParam."
1546
- },
1547
- "mix": {
1548
- "node": "_mix",
1549
- "field": "offset",
1550
- "unit": "factor",
1551
- "default": 0.5,
1552
- "min": 0,
1553
- "max": 1,
1554
- "short": "Dry/Wet Mix",
1555
- "long": "Crossfade between original and flanged signal, driven by one ConstantSource (linear law: dry = 1 − mix, wet = mix)."
1556
- }
1557
- },
1558
- "controlDescriptions": {
1559
- "RATE": {
1560
- "short": "LFO Rate",
1561
- "long": "Speed of the flanger sweep. Slow for gentle jet-plane, fast for metallic."
1562
- },
1563
- "DEPTH": {
1564
- "short": "Modulation Depth",
1565
- "long": "How much the delay time is modulated. More = wider sweeps."
1566
- },
1567
- "FDBK": {
1568
- "short": "Feedback",
1569
- "long": "Resonance amount. High values create intense, metallic swooshes."
1570
- },
1571
- "MIX": {
1572
- "short": "Dry/Wet Mix",
1573
- "long": "Crossfade between original and flanged signal. 0 = fully dry, 0.5 = classic equal-blend flange (deepest notches), 1 = delayed signal only."
1574
- }
1575
- },
1576
- "worklets": [
1577
- "flanger"
1578
- ]
1579
- },
1580
- {
1581
- "slug": "formant",
1582
- "exportName": "Formant",
1583
- "type": "formant",
1584
- "name": "FORMANT",
1585
- "categories": [
1586
- "Filters"
1587
- ],
1588
- "description": {
1589
- "short": "Formant Filter",
1590
- "long": "Vocal formant filter with smooth morphing between vowels A-E-I-O-U. Creates voice-like resonances. Morph smoothly between vowel sounds for talking synth effects."
1591
- },
1592
- "ports": {
1593
- "in": {
1594
- "type": "input",
1595
- "signal": "audio",
1596
- "node": "input",
1597
- "label": "IN",
1598
- "name": "Audio Input",
1599
- "desc": "Audio signal for vowel/formant filtering."
1600
- },
1601
- "out": {
1602
- "type": "output",
1603
- "signal": "audio",
1604
- "node": "output",
1605
- "label": "OUT",
1606
- "name": "Audio Output",
1607
- "desc": "Vocal-like formant filtered audio output."
1608
- },
1609
- "modVowel": {
1610
- "type": "modulation",
1611
- "signal": "modulation",
1612
- "node": "vowelCV",
1613
- "label": "VOWEL",
1614
- "name": "Vowel CV",
1615
- "desc": "Control voltage to sweep through vowels A-E-I-O-U."
1616
- }
1617
- },
1618
- "params": {
1619
- "morph": {
1620
- "unit": "factor",
1621
- "default": 0,
1622
- "min": 0,
1623
- "max": 5,
1624
- "short": "Vowel Morph",
1625
- "long": "Position along the A-E-I-O-U vowel formant chain. 0 = A, 5 wraps back to A; fractional values interpolate between neighbouring vowels."
1626
- },
1627
- "resonance": {
1628
- "unit": "factor",
1629
- "default": 6,
1630
- "min": 1,
1631
- "max": 20,
1632
- "scale": "sqrt",
1633
- "short": "Resonance",
1634
- "long": "Sharpness of the formant peaks, scaled per band. Higher values sound more pronounced and vocal."
1635
- },
1636
- "mix": {
1637
- "unit": "factor",
1638
- "default": 1,
1639
- "min": 0,
1640
- "max": 1,
1641
- "short": "Dry/Wet Mix",
1642
- "long": "Balance between the original signal and the formant-filtered output. 0 = dry, 1 = fully wet."
1643
- }
1644
- },
1645
- "controlDescriptions": {
1646
- "MORPH": {
1647
- "short": "Vowel Morph",
1648
- "long": "Smoothly interpolates between vowel formant frequencies: A(0) → E(1) → I(2) → O(3) → U(4)."
1649
- },
1650
- "RES": {
1651
- "short": "Resonance",
1652
- "long": "Controls how pronounced and \"vocal\" the formant peaks are."
1653
- },
1654
- "MIX": {
1655
- "short": "Dry/Wet Mix",
1656
- "long": "Balance between original and formant-filtered signal."
1657
- }
1658
- },
1659
- "worklets": [
1660
- "formant-table"
1661
- ]
1662
- },
1663
- {
1664
- "slug": "freq-shifter",
1665
- "exportName": "FrequencyShifter",
1666
- "type": "freq-shifter",
1667
- "name": "SHIFT",
1668
- "categories": [
1669
- "Effects"
1670
- ],
1671
- "description": {
1672
- "short": "Frequency Shifter",
1673
- "long": "True Bode-style single-sideband shifting: a Hilbert-transform quadrature network splits the signal into an analytic pair, so every partial moves by a fixed number of Hz instead of a musical interval. Inharmonic, alien, bell-like — and unlike a ring modulator, only one sideband survives."
1674
- },
1675
- "ports": {
1676
- "in": {
1677
- "type": "input",
1678
- "signal": "audio",
1679
- "node": "input",
1680
- "label": "IN",
1681
- "name": "Audio Input",
1682
- "desc": "Audio signal for frequency shifting."
1683
- },
1684
- "out": {
1685
- "type": "output",
1686
- "signal": "audio",
1687
- "node": "output",
1688
- "label": "OUT",
1689
- "name": "Audio Output",
1690
- "desc": "Alien, bell-like frequency-shifted audio output."
1691
- },
1692
- "modShift": {
1693
- "type": "modulation",
1694
- "signal": "modulation",
1695
- "node": "shifter",
1696
- "label": "SHIFT",
1697
- "name": "Shift Amount",
1698
- "desc": "Modulate the shift amount in Hz. An LFO here sweeps the sidebands for rotating, Leslie-like motion.",
1699
- "field": "shift"
1700
- }
1701
- },
1702
- "params": {
1703
- "shift": {
1704
- "label": "SHIFT",
1705
- "node": "shifter",
1706
- "field": "shift",
1707
- "unit": "Hz",
1708
- "default": 0,
1709
- "min": -500,
1710
- "max": 500,
1711
- "short": "Frequency Shift",
1712
- "long": "Amount to shift all frequencies in Hz. Positive = up, negative = down."
1713
- },
1714
- "mix": {
1715
- "label": "MIX",
1716
- "node": "_mix",
1717
- "field": "offset",
1718
- "unit": "factor",
1719
- "default": 1,
1720
- "min": 0,
1721
- "max": 1,
1722
- "short": "Dry/Wet Mix",
1723
- "long": "Balance between original and frequency-shifted signal."
1724
- }
1725
- },
1726
- "controlDescriptions": {
1727
- "SHIFT": {
1728
- "short": "Frequency Shift",
1729
- "long": "Amount to shift all frequencies in Hz. Positive = up, negative = down."
1730
- },
1731
- "MIX": {
1732
- "short": "Dry/Wet Mix",
1733
- "long": "Balance between original and frequency-shifted signal."
1734
- }
1735
- },
1736
- "worklets": [
1737
- "freq-shifter"
1738
- ]
1739
- },
1740
- {
1741
- "slug": "gate",
1742
- "exportName": "Gate",
1743
- "type": "gate",
1744
- "name": "GATE",
1745
- "categories": [
1746
- "Dynamics"
1747
- ],
1748
- "description": {
1749
- "short": "Noise Gate",
1750
- "long": "Silences signal below threshold using sample-accurate envelope detection with separate attack and release. Essential for cleaning up noise, tightening drums, and creating rhythmic gating effects."
1751
- },
1752
- "ports": {
1753
- "in": {
1754
- "type": "input",
1755
- "signal": "audio",
1756
- "node": "input",
1757
- "label": "IN",
1758
- "name": "Audio Input",
1759
- "desc": "Audio signal to be gated."
1760
- },
1761
- "out": {
1762
- "type": "output",
1763
- "signal": "audio",
1764
- "node": "output",
1765
- "label": "OUT",
1766
- "name": "Audio Output",
1767
- "desc": "Gated audio - silent when below threshold."
1768
- }
1769
- },
1770
- "params": {
1771
- "threshold": {
1772
- "unit": "dB",
1773
- "default": -40,
1774
- "min": -60,
1775
- "max": 0,
1776
- "short": "Threshold",
1777
- "long": "Level below which the gate closes and silences audio."
1778
- },
1779
- "range": {
1780
- "unit": "factor",
1781
- "default": 0.8,
1782
- "min": 0,
1783
- "max": 1,
1784
- "short": "Range",
1785
- "long": "How much the signal is attenuated when gate is closed. 0=full mute, lower=gentler."
1786
- },
1787
- "attack": {
1788
- "node": "envFollower",
1789
- "field": "attack",
1790
- "unit": "s",
1791
- "default": 0.005,
1792
- "min": 0.001,
1793
- "max": 0.05,
1794
- "scale": "log",
1795
- "short": "Attack",
1796
- "long": "How fast the gate opens when signal exceeds threshold. Short = tight, long = gentle fade-in."
1797
- },
1798
- "release": {
1799
- "node": "envFollower",
1800
- "field": "release",
1801
- "unit": "s",
1802
- "default": 0.1,
1803
- "min": 0.01,
1804
- "max": 0.5,
1805
- "scale": "log",
1806
- "short": "Release",
1807
- "long": "How fast the gate closes when signal falls below threshold."
1808
- }
1809
- },
1810
- "controlDescriptions": {
1811
- "THRESH": {
1812
- "short": "Threshold",
1813
- "long": "Level below which the gate closes and silences audio."
1814
- },
1815
- "RANGE": {
1816
- "short": "Range",
1817
- "long": "How much the signal is attenuated when gate is closed. 0=full mute, lower=gentler."
1818
- },
1819
- "ATK": {
1820
- "short": "Attack",
1821
- "long": "How fast the gate opens when signal exceeds threshold. Short = tight, long = gentle fade-in."
1822
- },
1823
- "REL": {
1824
- "short": "Release",
1825
- "long": "How fast the gate closes when signal falls below threshold."
1826
- }
1827
- },
1828
- "worklets": [
1829
- "env-follower"
1830
- ]
1831
- },
1832
- {
1833
- "slug": "glide",
1834
- "exportName": "Glide",
1835
- "type": "glide",
1836
- "name": "GLIDE",
1837
- "categories": [
1838
- "Modulators",
1839
- "Utility"
1840
- ],
1841
- "description": {
1842
- "short": "Glide / Portamento",
1843
- "long": "Slew limiter that smooths CV transitions. Connect a gate signal for legato-only glide: new notes after silence snap to pitch instantly, overlapping notes glide smoothly."
1844
- },
1845
- "ports": {
1846
- "in": {
1847
- "type": "input",
1848
- "signal": "pitch",
1849
- "node": "_glide",
1850
- "label": "IN",
1851
- "name": "Pitch CV In",
1852
- "desc": "Pitch CV to smooth. Works on any CV, but tuned for semitone-space pitch."
1853
- },
1854
- "gate": {
1855
- "type": "input",
1856
- "signal": "gate",
1857
- "node": "_gateIn",
1858
- "label": "GATE",
1859
- "name": "Gate Input",
1860
- "desc": "Gate signal for legato-only glide. New notes snap to pitch; held notes glide. Leave unconnected for always-on glide."
1861
- },
1862
- "out": {
1863
- "type": "output",
1864
- "signal": "pitch",
1865
- "node": "output",
1866
- "label": "OUT",
1867
- "name": "Pitch CV Out",
1868
- "desc": "Smoothed pitch CV with portamento. Connect to any V/OCT input."
1869
- }
1870
- },
1871
- "params": {
1872
- "time": {
1873
- "label": "TIME",
1874
- "node": "_glide",
1875
- "field": "time",
1876
- "unit": "s",
1877
- "default": 0.1,
1878
- "min": 0.01,
1879
- "max": 10,
1880
- "scale": "log",
1881
- "short": "Glide Time",
1882
- "long": "How long it takes to slide between pitches. Longer = more portamento."
1883
- }
1884
- },
1885
- "controlDescriptions": {
1886
- "TIME": {
1887
- "short": "Glide Time",
1888
- "long": "How long it takes to slide between pitches. Longer = more portamento."
1889
- }
1890
- },
1891
- "worklets": [
1892
- "glide"
1893
- ]
1894
- },
1895
- {
1896
- "slug": "haas",
1897
- "exportName": "HaasWidener",
1898
- "type": "haas",
1899
- "name": "HAAS",
1900
- "categories": [
1901
- "Stereo"
1902
- ],
1903
- "description": {
1904
- "short": "Haas Stereo Widener",
1905
- "long": "Uses micro-delays (1-35ms) to create stereo width from mono. The Haas effect tricks the ear into perceiving wider stereo image."
1906
- },
1907
- "ports": {
1908
- "in": {
1909
- "type": "input",
1910
- "signal": "audio",
1911
- "node": "input",
1912
- "label": "IN",
1913
- "name": "Audio Input",
1914
- "desc": "Mono signal to widen using Haas effect."
1915
- },
1916
- "out": {
1917
- "type": "output",
1918
- "signal": "audio",
1919
- "node": "output",
1920
- "label": "OUT",
1921
- "name": "Stereo Output",
1922
- "desc": "Stereo-widened audio using micro-delays."
1923
- }
1924
- },
1925
- "params": {
1926
- "delay": {
1927
- "unit": "ms",
1928
- "default": 15,
1929
- "min": 1,
1930
- "max": 35,
1931
- "short": "Micro-Delay",
1932
- "long": "Delay time in milliseconds (1–35 ms). The Haas effect range."
1933
- },
1934
- "side": {
1935
- "kind": "enum",
1936
- "default": "right",
1937
- "options": [
1938
- "left",
1939
- "right"
1940
- ],
1941
- "short": "Delayed Side",
1942
- "long": "Which channel receives the delay — left or right."
1943
- },
1944
- "mix": {
1945
- "node": "_mix",
1946
- "field": "offset",
1947
- "unit": "factor",
1948
- "default": 1,
1949
- "min": 0,
1950
- "max": 1,
1951
- "short": "Effect Level",
1952
- "long": "Amount of stereo widening effect. 0 = mono passthrough, 1 = fully delayed side."
1953
- }
1954
- },
1955
- "controlDescriptions": {
1956
- "DELAY": {
1957
- "short": "Micro-Delay",
1958
- "long": "Delay time in milliseconds (1-35ms). The Haas effect range."
1959
- },
1960
- "SIDE": {
1961
- "short": "Delayed Side",
1962
- "long": "Which channel receives the delay - left or right."
1963
- },
1964
- "MIX": {
1965
- "short": "Effect Level",
1966
- "long": "Amount of stereo widening effect."
1967
- }
1968
- },
1969
- "worklets": []
1970
- },
1971
- {
1972
- "slug": "harmonic-trem",
1973
- "exportName": "HarmonicTremolo",
1974
- "type": "harmonic-trem",
1975
- "name": "H-TREM",
1976
- "categories": [
1977
- "Effects"
1978
- ],
1979
- "description": {
1980
- "short": "Harmonic Tremolo",
1981
- "long": "Fender Brownface-style tremolo that splits signal by frequency. Highs and lows pulse opposite to each other for lush, watery modulation."
1982
- },
1983
- "ports": {
1984
- "in": {
1985
- "type": "input",
1986
- "signal": "audio",
1987
- "node": "input",
1988
- "label": "IN",
1989
- "name": "Audio Input",
1990
- "desc": "Audio signal for harmonic tremolo."
1991
- },
1992
- "out": {
1993
- "type": "output",
1994
- "signal": "audio",
1995
- "node": "output",
1996
- "label": "OUT",
1997
- "name": "Audio Output",
1998
- "desc": "Audio with frequency-split tremolo applied."
1999
- },
2000
- "modRate": {
2001
- "type": "modulation",
2002
- "signal": "modulation",
2003
- "node": "lfo",
2004
- "label": "RATE",
2005
- "name": "Rate CV",
2006
- "desc": "Modulate the tremolo LFO speed.",
2007
- "field": "frequency"
2008
- },
2009
- "modCrossover": {
2010
- "type": "modulation",
2011
- "signal": "modulation",
2012
- "node": "lowpass",
2013
- "label": "X-OVER",
2014
- "name": "Crossover CV",
2015
- "desc": "Modulate the low/high crossover frequency.",
2016
- "field": "frequency"
2017
- }
2018
- },
2019
- "params": {
2020
- "rate": {
2021
- "node": "lfo",
2022
- "field": "frequency",
2023
- "unit": "Hz",
2024
- "default": 4,
2025
- "min": 1,
2026
- "max": 10,
2027
- "short": "Rate",
2028
- "long": "Tremolo LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam."
2029
- },
2030
- "depth": {
2031
- "unit": "factor",
2032
- "default": 0.7,
2033
- "min": 0,
2034
- "max": 1,
2035
- "short": "Modulation Depth",
2036
- "long": "Intensity of the volume modulation. Split across the low- and high-band LFO gains, so it is set-only (no single AudioParam carries it)."
2037
- },
2038
- "crossover": {
2039
- "node": "lowpass",
2040
- "field": "frequency",
2041
- "unit": "Hz",
2042
- "default": 800,
2043
- "min": 200,
2044
- "max": 2000,
2045
- "short": "Crossover Frequency",
2046
- "long": "Frequency where signal splits into low and high bands. Only the lowpass moves; the high band is derived (input − LP) and follows. modCrossover sums into the same AudioParam."
2047
- }
2048
- },
2049
- "controlDescriptions": {
2050
- "RATE": {
2051
- "short": "LFO Rate",
2052
- "long": "Speed of the tremolo modulation."
2053
- },
2054
- "DEPTH": {
2055
- "short": "Modulation Depth",
2056
- "long": "Intensity of the volume modulation."
2057
- },
2058
- "X-OVER": {
2059
- "short": "Crossover Frequency",
2060
- "long": "Frequency where signal splits into low and high bands."
2061
- }
2062
- },
2063
- "worklets": []
2064
- },
2065
- {
2066
- "slug": "ladder-filter",
2067
- "exportName": "LadderFilter",
2068
- "type": "ladder-filter",
2069
- "name": "LADDER",
2070
- "categories": [
2071
- "Filters"
2072
- ],
2073
- "description": {
2074
- "short": "Moog-style Ladder Filter",
2075
- "long": "True 4-pole transistor-ladder lowpass (24 dB/octave): one saturating feedback loop around four one-pole stages, like the original circuit. At 100% RES it self-oscillates into a playable sine — patch a Pitch CV into V/OCT and play the filter as a voice. DRIVE saturates inside the ladder for that thick, compressed growl."
2076
- },
2077
- "ports": {
2078
- "in": {
2079
- "type": "input",
2080
- "signal": "audio",
2081
- "node": "input",
2082
- "label": "IN",
2083
- "name": "Audio Input",
2084
- "desc": "Audio signal to filter through the transistor-ladder model."
2085
- },
2086
- "out": {
2087
- "type": "output",
2088
- "signal": "audio",
2089
- "node": "output",
2090
- "label": "OUT",
2091
- "name": "Audio Output",
2092
- "desc": "Warm 24 dB/oct lowpass output. Passband thins slightly as resonance rises — authentic ladder behavior."
2093
- },
2094
- "modFreq": {
2095
- "type": "modulation",
2096
- "signal": "modulation",
2097
- "node": "_cutoffVoct",
2098
- "label": "V/OCT",
2099
- "name": "Cutoff V/Oct",
2100
- "desc": "Modulate cutoff in semitones (V/Oct). ±12 = one octave. At full resonance this plays the self-oscillation like an oscillator."
2101
- },
2102
- "modRes": {
2103
- "type": "modulation",
2104
- "signal": "modulation",
2105
- "node": "ladder",
2106
- "label": "RES",
2107
- "name": "Resonance CV",
2108
- "desc": "Resonance CV: +1 sweeps the full RES range (100% = self-oscillation), adds to the knob, clamped inside the filter.",
2109
- "field": "resonance"
2110
- }
2111
- },
2112
- "params": {
2113
- "note": {
2114
- "node": "_cutoffVoct",
2115
- "field": "transpose",
2116
- "unit": "note",
2117
- "default": 83,
2118
- "min": 15,
2119
- "max": 135,
2120
- "short": "Cutoff Note",
2121
- "long": "Filter cutoff as a note (83 ≈ 1 kHz, 69 = 440 Hz). Drives the V/OCT worklet 1:1 — the panel knob shows the equivalent Hz. At full resonance this plays the self-oscillation like an oscillator."
2122
- },
2123
- "resonance": {
2124
- "unit": "factor",
2125
- "default": 2.5,
2126
- "min": 0,
2127
- "max": 4,
2128
- "scale": "sqrt",
2129
- "short": "Resonance",
2130
- "long": "Feedback around the whole ladder. At 100% the filter self-oscillates into a sine you can play via the V/OCT input."
2131
- },
2132
- "drive": {
2133
- "node": "ladder",
2134
- "field": "drive",
2135
- "unit": "factor",
2136
- "default": 0.3,
2137
- "min": 0,
2138
- "max": 1,
2139
- "short": "Input Drive",
2140
- "long": "Saturation inside the ladder loop — thicker and more compressed as you push it, just like overdriving the original circuit."
2141
- }
2142
- },
2143
- "controlDescriptions": {
2144
- "CUTOFF": {
2145
- "short": "Cutoff Frequency",
2146
- "long": "Where the 24 dB/oct rolloff begins. All four ladder poles track together."
2147
- },
2148
- "RES": {
2149
- "short": "Resonance",
2150
- "long": "Feedback around the whole ladder. At 100% the filter self-oscillates into a sine you can play via the V/OCT input."
2151
- },
2152
- "DRIVE": {
2153
- "short": "Input Drive",
2154
- "long": "Saturation inside the ladder loop — thicker and more compressed as you push it, just like overdriving the original circuit."
2155
- }
2156
- },
2157
- "worklets": [
2158
- "ladder-filter",
2159
- "map-voct-to-freq"
2160
- ]
2161
- },
2162
- {
2163
- "slug": "lfo",
2164
- "exportName": "Lfo",
2165
- "type": "lfo",
2166
- "name": "LFO",
2167
- "categories": [
2168
- "Modulators"
2169
- ],
2170
- "description": {
2171
- "short": "Low Frequency Oscillator",
2172
- "long": "Generates slow, sub-audio waveforms for modulation. Skew and shape morph continuously between sine, triangle, square and saw. Connect to filter cutoff for wobble, to pitch for vibrato, or to VCA for tremolo."
2173
- },
2174
- "ports": {
2175
- "out": {
2176
- "type": "output",
2177
- "node": "gain",
2178
- "label": "OUT",
2179
- "name": "Modulation Output",
2180
- "desc": "Low frequency oscillation output. Connect to modulation inputs (purple ports) to animate parameters.",
2181
- "signal": "modulation"
2182
- },
2183
- "modRate": {
2184
- "type": "modulation",
2185
- "signal": "modulation",
2186
- "node": "_freqSrc",
2187
- "label": "RATE",
2188
- "name": "Rate CV",
2189
- "desc": "Modulate the LFO speed.",
2190
- "field": "offset"
2191
- },
2192
- "modAmount": {
2193
- "type": "modulation",
2194
- "signal": "modulation",
2195
- "node": "gain",
2196
- "label": "AMT",
2197
- "name": "Amount CV",
2198
- "desc": "Modulate the LFO output depth.",
2199
- "field": "gain"
2200
- },
2201
- "modSkew": {
2202
- "type": "modulation",
2203
- "signal": "modulation",
2204
- "node": "_ws",
2205
- "label": "SKEW",
2206
- "name": "Skew Modulation",
2207
- "desc": "Modulate waveshape symmetry.",
2208
- "field": "skew"
2209
- },
2210
- "modShape": {
2211
- "type": "modulation",
2212
- "signal": "modulation",
2213
- "node": "_ws",
2214
- "label": "SHAPE",
2215
- "name": "Shape Modulation",
2216
- "desc": "Modulate waveshape curvature.",
2217
- "field": "shape"
2218
- }
2219
- },
2220
- "params": {
2221
- "skew": {
2222
- "node": "_ws",
2223
- "field": "skew",
2224
- "unit": "factor",
2225
- "default": 0,
2226
- "min": -1,
2227
- "max": 1,
2228
- "short": "Skew",
2229
- "long": "Waveform symmetry. 0 = symmetric; ±1 folds the cycle into a rising or falling ramp."
2230
- },
2231
- "shape": {
2232
- "node": "_ws",
2233
- "field": "shape",
2234
- "unit": "factor",
2235
- "default": 1,
2236
- "min": -1,
2237
- "max": 1,
2238
- "short": "Shape",
2239
- "long": "Waveform curvature. +1 = sine, 0 = triangle, −1 = exact square. With skew ±1 and shape 0 the output is a saw."
2240
- },
2241
- "frequency": {
2242
- "node": "_freqSrc",
2243
- "field": "offset",
2244
- "default": 2,
2245
- "min": -10,
2246
- "max": 20,
2247
- "unit": "Hz",
2248
- "short": "Frequency",
2249
- "long": "Base oscillation rate, summed with the modRate input. 0 freezes the phase; negative values run the waveform backwards."
2250
- },
2251
- "amount": {
2252
- "node": "gain",
2253
- "field": "gain",
2254
- "unit": "semitone",
2255
- "default": 12,
2256
- "min": 0,
2257
- "max": 500,
2258
- "scale": "sqrt",
2259
- "short": "Amount",
2260
- "long": "Output scale: out swings ±amount (semitones when patched to a V/Oct-style mod input). modAmount is summed onto it."
2261
- }
2262
- },
2263
- "controlDescriptions": {
2264
- "WAVE": {
2265
- "short": "Waveshape X-Y",
2266
- "long": "X = Skew (symmetry), Y = Shape (curvature). Continuously morph between sine, triangle, square, and sawtooth."
2267
- },
2268
- "RATE": {
2269
- "short": "Rate",
2270
- "long": "LFO speed. Patch Rate CV to modulate it — this knob then becomes an offset."
2271
- },
2272
- "OFFSET": {
2273
- "short": "Rate Offset",
2274
- "long": "Rate CV is patched: this sets the speed the CV adds to. Around 0 the LFO stalls; below 0 it runs backwards."
2275
- },
2276
- "AMT": {
2277
- "short": "Amount",
2278
- "long": "How much the LFO moves whatever it is patched to."
2279
- },
2280
- "BASE": {
2281
- "short": "Base Amount",
2282
- "long": "Amount CV is patched: this sets the depth the CV adds to. At 0 only the CV opens the LFO."
2283
- }
2284
- },
2285
- "worklets": [
2286
- "waveshaper"
2287
- ]
2288
- },
2289
- {
2290
- "slug": "lo-fi",
2291
- "exportName": "LoFi",
2292
- "type": "lo-fi",
2293
- "name": "LO-FI",
2294
- "categories": [
2295
- "Distortion",
2296
- "Vintage"
2297
- ],
2298
- "description": {
2299
- "short": "Lo-Fi Processor",
2300
- "long": "Lo-fi processor with saturation, lowpass filtering, vinyl noise, and pitch wobble. Perfect for vintage, degraded textures."
2301
- },
2302
- "ports": {
2303
- "in": {
2304
- "type": "input",
2305
- "signal": "audio",
2306
- "node": "input",
2307
- "label": "IN",
2308
- "name": "Audio Input",
2309
- "desc": "Audio signal for vintage degradation."
2310
- },
2311
- "out": {
2312
- "type": "output",
2313
- "signal": "audio",
2314
- "node": "output",
2315
- "label": "OUT",
2316
- "name": "Audio Output",
2317
- "desc": "Warm, degraded lo-fi audio with vinyl character."
2318
- },
2319
- "modCutoff": {
2320
- "type": "modulation",
2321
- "signal": "modulation",
2322
- "node": "lowpass",
2323
- "label": "CUT",
2324
- "name": "Cutoff CV",
2325
- "desc": "Modulate the lowpass cutoff frequency.",
2326
- "field": "frequency"
2327
- }
2328
- },
2329
- "params": {
2330
- "drive": {
2331
- "unit": "factor",
2332
- "default": 0.3,
2333
- "min": 0,
2334
- "max": 1,
2335
- "short": "Saturation",
2336
- "long": "Amount of warm tape-like saturation and compression. Rebuilds the waveshaper curve, so it is set-only (no single AudioParam carries it)."
2337
- },
2338
- "cutoff": {
2339
- "node": "lowpass",
2340
- "field": "frequency",
2341
- "unit": "Hz",
2342
- "default": 4000,
2343
- "min": 500,
2344
- "max": 8000,
2345
- "short": "Cutoff",
2346
- "long": "Lowpass filter frequency. Lower = more muffled, vintage sound."
2347
- },
2348
- "noise": {
2349
- "unit": "factor",
2350
- "default": 0.2,
2351
- "min": 0,
2352
- "max": 1,
2353
- "short": "Vinyl Noise",
2354
- "long": "Amount of background crackle and hiss for authentic vinyl character. Scaled onto the noise gain, so it is set-only (no single AudioParam carries it 1:1)."
2355
- },
2356
- "wobble": {
2357
- "unit": "factor",
2358
- "default": 0.1,
2359
- "min": 0,
2360
- "max": 1,
2361
- "short": "Wobble",
2362
- "long": "Pitch instability like a worn tape or warped record. Scaled onto the wobble-LFO gain, so it is set-only (no single AudioParam carries it 1:1)."
2363
- }
2364
- },
2365
- "controlDescriptions": {
2366
- "DRIVE": {
2367
- "short": "Saturation",
2368
- "long": "Amount of warm tape-like saturation and compression."
2369
- },
2370
- "CUT": {
2371
- "short": "Cutoff",
2372
- "long": "Lowpass filter frequency. Lower = more muffled, vintage sound."
2373
- },
2374
- "NOISE": {
2375
- "short": "Vinyl Noise",
2376
- "long": "Amount of background crackle and hiss for authentic vinyl character."
2377
- },
2378
- "WOB": {
2379
- "short": "Wobble",
2380
- "long": "Pitch instability like a worn tape or warped record."
2381
- }
2382
- },
2383
- "worklets": []
2384
- },
2385
- {
2386
- "slug": "mid-side",
2387
- "exportName": "MidSide",
2388
- "type": "mid-side",
2389
- "name": "M/S",
2390
- "categories": [
2391
- "Stereo"
2392
- ],
2393
- "description": {
2394
- "short": "Mid-Side Processor",
2395
- "long": "Encodes stereo into mid (center) and side (edges) components. Adjust balance for mono compatibility or extreme widening. Essential mastering tool."
2396
- },
2397
- "ports": {
2398
- "in": {
2399
- "type": "input",
2400
- "signal": "audio",
2401
- "node": "input",
2402
- "label": "IN",
2403
- "name": "Stereo Input",
2404
- "desc": "Stereo audio signal for M/S processing."
2405
- },
2406
- "out": {
2407
- "type": "output",
2408
- "signal": "audio",
2409
- "node": "output",
2410
- "label": "OUT",
2411
- "name": "Stereo Output",
2412
- "desc": "Processed stereo audio with adjusted M/S balance."
2413
- }
2414
- },
2415
- "params": {
2416
- "midGain": {
2417
- "label": "MID",
2418
- "node": "midGainNode",
2419
- "field": "gain",
2420
- "unit": "factor",
2421
- "default": 1,
2422
- "min": 0,
2423
- "max": 2,
2424
- "short": "Mid Gain",
2425
- "long": "Controls the center/mono content of the stereo image."
2426
- },
2427
- "sideGain": {
2428
- "label": "SIDE",
2429
- "node": "sideGainNode",
2430
- "field": "gain",
2431
- "unit": "factor",
2432
- "default": 1,
2433
- "min": 0,
2434
- "max": 2,
2435
- "short": "Side Gain",
2436
- "long": "Controls the stereo edges/differences between left and right."
2437
- }
2438
- },
2439
- "controlDescriptions": {
2440
- "MID": {
2441
- "short": "Mid Gain",
2442
- "long": "Controls the center/mono content of the stereo image."
2443
- },
2444
- "SIDE": {
2445
- "short": "Side Gain",
2446
- "long": "Controls the stereo edges/differences between left and right."
2447
- }
2448
- },
2449
- "worklets": []
2450
- },
2451
- {
2452
- "slug": "noise",
2453
- "exportName": "Noise",
2454
- "type": "noise",
2455
- "name": "NOISE",
2456
- "categories": [
2457
- "Sources"
2458
- ],
2459
- "description": {
2460
- "short": "Noise Generator",
2461
- "long": "Produces random audio (white, pink, brown noise). Use for percussion, wind effects, or filter sweep textures."
2462
- },
2463
- "ports": {
2464
- "out": {
2465
- "type": "output",
2466
- "signal": "audio",
2467
- "node": "output",
2468
- "label": "OUT",
2469
- "name": "Noise Output",
2470
- "desc": "White, pink, or brown noise output."
2471
- },
2472
- "modLevel": {
2473
- "type": "modulation",
2474
- "signal": "modulation",
2475
- "node": "output",
2476
- "label": "LVL",
2477
- "name": "Level CV",
2478
- "desc": "Modulate output level. Connect an envelope for amplitude shaping or an LFO for tremolo.",
2479
- "field": "gain"
2480
- }
2481
- },
2482
- "params": {
2483
- "noiseType": {
2484
- "kind": "enum",
2485
- "default": "white",
2486
- "options": [
2487
- "white",
2488
- "pink",
2489
- "brown"
2490
- ],
2491
- "short": "Noise Color",
2492
- "long": "White, pink, or brown noise spectrum."
2493
- },
2494
- "gain": {
2495
- "label": "LEVEL",
2496
- "node": "output",
2497
- "field": "gain",
2498
- "unit": "factor",
2499
- "default": 0.3,
2500
- "min": 0,
2501
- "max": 1,
2502
- "short": "Noise Level",
2503
- "long": "Output amplitude of the noise generator."
2504
- }
2505
- },
2506
- "controlDescriptions": {
2507
- "LEVEL": {
2508
- "short": "Noise Level",
2509
- "long": "Output amplitude of the noise generator."
2510
- }
2511
- },
2512
- "worklets": []
2513
- },
2514
- {
2515
- "slug": "octaver",
2516
- "exportName": "Octaver",
2517
- "type": "octaver",
2518
- "name": "OCTAVE",
2519
- "categories": [
2520
- "Effects"
2521
- ],
2522
- "description": {
2523
- "short": "Analog Octaver",
2524
- "long": "Classic analog-style octave effect. Zero-crossing flip-flop frequency division gives true -1 and -2 octave square waves (as in a Boss OC-2), while the +1 octave comes from full-wave rectification through a bandpass that tracks the detected fundamental. Monophonic, like the hardware."
2525
- },
2526
- "ports": {
2527
- "in": {
2528
- "type": "input",
2529
- "signal": "audio",
2530
- "node": "input",
2531
- "label": "IN",
2532
- "name": "Audio Input",
2533
- "desc": "Monophonic audio signal for octave processing."
2534
- },
2535
- "out": {
2536
- "type": "output",
2537
- "signal": "audio",
2538
- "node": "output",
2539
- "label": "OUT",
2540
- "name": "Audio Output",
2541
- "desc": "Dry signal blended with true divided sub-octaves and a tracked octave-up."
2542
- }
2543
- },
2544
- "params": {
2545
- "octDown2": {
2546
- "node": "oct2Gain",
2547
- "field": "gain",
2548
- "unit": "factor",
2549
- "default": 0.3,
2550
- "min": 0,
2551
- "max": 1,
2552
- "short": "Two Octaves Down",
2553
- "long": "Level of the ÷4 divided square wave — two octaves below the input."
2554
- },
2555
- "octDown1": {
2556
- "node": "oct1Gain",
2557
- "field": "gain",
2558
- "unit": "factor",
2559
- "default": 0.5,
2560
- "min": 0,
2561
- "max": 1,
2562
- "short": "One Octave Down",
2563
- "long": "Level of the ÷2 divided square wave — one octave below the input."
2564
- },
2565
- "dry": {
2566
- "node": "dryGain",
2567
- "field": "gain",
2568
- "unit": "factor",
2569
- "default": 0.7,
2570
- "min": 0,
2571
- "max": 1,
2572
- "short": "Dry Level",
2573
- "long": "Level of the original unprocessed signal."
2574
- },
2575
- "octUp": {
2576
- "node": "octUpGain",
2577
- "field": "gain",
2578
- "unit": "factor",
2579
- "default": 0,
2580
- "min": 0,
2581
- "max": 1,
2582
- "short": "One Octave Up",
2583
- "long": "Level of the rectified octave-up voice, bandpassed around the tracked fundamental."
2584
- }
2585
- },
2586
- "controlDescriptions": {
2587
- "-2": {
2588
- "short": "Two Octaves Down",
2589
- "long": "Level of the ÷4 divided square wave — two octaves below the input."
2590
- },
2591
- "-1": {
2592
- "short": "One Octave Down",
2593
- "long": "Level of the ÷2 divided square wave — one octave below the input."
2594
- },
2595
- "DRY": {
2596
- "short": "Dry Level",
2597
- "long": "Level of the original unprocessed signal."
2598
- },
2599
- "+1": {
2600
- "short": "One Octave Up",
2601
- "long": "Level of the rectified octave-up voice, bandpassed around the tracked fundamental."
2602
- }
2603
- },
2604
- "worklets": [
2605
- "freq-divider"
2606
- ]
2607
- },
2608
- {
2609
- "slug": "phaser",
2610
- "exportName": "Phaser",
2611
- "type": "phaser",
2612
- "name": "PHASER",
2613
- "categories": [
2614
- "Time",
2615
- "Effects"
2616
- ],
2617
- "description": {
2618
- "short": "Phaser Effect",
2619
- "long": "Creates swooshing, jet-like sweeps by splitting signal through allpass filters. Rate controls speed, depth the intensity, feedback adds resonance."
2620
- },
2621
- "ports": {
2622
- "in": {
2623
- "type": "input",
2624
- "signal": "audio",
2625
- "node": "input",
2626
- "label": "IN",
2627
- "name": "Audio Input",
2628
- "desc": "Audio signal for phase-shifting effect."
2629
- },
2630
- "out": {
2631
- "type": "output",
2632
- "signal": "audio",
2633
- "node": "output",
2634
- "label": "OUT",
2635
- "name": "Audio Output",
2636
- "desc": "Swooshing, jet-like phased audio output."
2637
- },
2638
- "modRate": {
2639
- "type": "modulation",
2640
- "signal": "modulation",
2641
- "node": "lfo",
2642
- "label": "RATE",
2643
- "name": "Rate CV",
2644
- "desc": "Modulate the phaser sweep speed.",
2645
- "field": "frequency"
2646
- },
2647
- "modFeedback": {
2648
- "type": "modulation",
2649
- "signal": "modulation",
2650
- "node": "feedback",
2651
- "label": "FDBK",
2652
- "name": "Feedback CV",
2653
- "desc": "Modulate the resonance feedback amount.",
2654
- "field": "gain"
2655
- },
2656
- "modMix": {
2657
- "type": "modulation",
2658
- "signal": "modulation",
2659
- "node": "_mix",
2660
- "label": "MIX",
2661
- "name": "Mix CV",
2662
- "desc": "Modulate the dry/wet balance.",
2663
- "field": "offset"
2664
- }
2665
- },
2666
- "params": {
2667
- "rate": {
2668
- "node": "lfo",
2669
- "field": "frequency",
2670
- "unit": "Hz",
2671
- "default": 0.5,
2672
- "min": 0.1,
2673
- "max": 10,
2674
- "short": "Rate",
2675
- "long": "Phaser sweep LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam."
2676
- },
2677
- "depth": {
2678
- "unit": "factor",
2679
- "default": 0.7,
2680
- "min": 0,
2681
- "max": 1,
2682
- "short": "Modulation Depth",
2683
- "long": "Intensity of the phase shifting effect. Split proportionally across the four allpass stage gains, so it is set-only (no single AudioParam carries it)."
2684
- },
2685
- "feedback": {
2686
- "node": "feedback",
2687
- "field": "gain",
2688
- "unit": "factor",
2689
- "default": 0.6,
2690
- "min": 0,
2691
- "max": 0.9,
2692
- "short": "Feedback",
2693
- "long": "Resonance amount. Higher values create more pronounced, whistling sweeps. modFeedback sums into the same AudioParam."
2694
- },
2695
- "mix": {
2696
- "node": "_mix",
2697
- "field": "offset",
2698
- "unit": "factor",
2699
- "default": 0.5,
2700
- "min": 0,
2701
- "max": 1,
2702
- "short": "Dry/Wet Mix",
2703
- "long": "Balance between original and phased signal, driven by one ConstantSource (linear law: dry = 1 − mix, wet = mix)."
2704
- }
2705
- },
2706
- "controlDescriptions": {
2707
- "RATE": {
2708
- "short": "LFO Rate",
2709
- "long": "Speed of the phaser sweep. Slow for gentle swooshes, fast for Leslie-like effects."
2710
- },
2711
- "DEPTH": {
2712
- "short": "Modulation Depth",
2713
- "long": "Intensity of the phase shifting effect."
2714
- },
2715
- "FDBK": {
2716
- "short": "Feedback",
2717
- "long": "Resonance amount. Higher values create more pronounced, whistling sweeps."
2718
- },
2719
- "MIX": {
2720
- "short": "Dry/Wet Mix",
2721
- "long": "Balance between original and phased signal."
2722
- }
2723
- },
2724
- "worklets": []
2725
- },
2726
- {
2727
- "slug": "ping-pong",
2728
- "exportName": "PingPong",
2729
- "type": "ping-pong",
2730
- "name": "PING",
2731
- "categories": [
2732
- "Time"
2733
- ],
2734
- "description": {
2735
- "short": "Ping Pong Delay",
2736
- "long": "Stereo delay that bounces between left and right channels. Creates wide, rhythmic echoes. Spread controls how far apart the bounces are panned."
2737
- },
2738
- "ports": {
2739
- "in": {
2740
- "type": "input",
2741
- "signal": "audio",
2742
- "node": "input",
2743
- "label": "IN",
2744
- "name": "Audio Input",
2745
- "desc": "Audio signal for ping-pong delay."
2746
- },
2747
- "out": {
2748
- "type": "output",
2749
- "signal": "audio",
2750
- "node": "output",
2751
- "label": "OUT",
2752
- "name": "Stereo Output",
2753
- "desc": "Stereo delay with bouncing echoes."
2754
- }
2755
- },
2756
- "params": {
2757
- "time": {
2758
- "label": "TIME",
2759
- "node": "worklet",
2760
- "field": "time",
2761
- "unit": "s",
2762
- "default": 0.3,
2763
- "min": 0.1,
2764
- "max": 1,
2765
- "scale": "log",
2766
- "short": "Delay Time",
2767
- "long": "Time between each stereo bounce."
2768
- },
2769
- "feedback": {
2770
- "label": "FB",
2771
- "node": "worklet",
2772
- "field": "feedback",
2773
- "unit": "factor",
2774
- "default": 0.4,
2775
- "min": 0,
2776
- "max": 0.9,
2777
- "short": "Feedback",
2778
- "long": "How much delayed signal feeds back for more repeats."
2779
- },
2780
- "spread": {
2781
- "label": "SPREAD",
2782
- "unit": "factor",
2783
- "default": 1,
2784
- "min": 0,
2785
- "max": 1,
2786
- "short": "Stereo Spread",
2787
- "long": "Controls how far left/right the bounces are panned. 0% = mono center, 100% = full stereo."
2788
- },
2789
- "mix": {
2790
- "label": "MIX",
2791
- "node": "_mix",
2792
- "field": "offset",
2793
- "unit": "factor",
2794
- "default": 0.5,
2795
- "min": 0,
2796
- "max": 1,
2797
- "short": "Dry/Wet Mix",
2798
- "long": "Balance between original and delayed signal."
2799
- }
2800
- },
2801
- "controlDescriptions": {
2802
- "TIME": {
2803
- "short": "Delay Time",
2804
- "long": "Time between each stereo bounce."
2805
- },
2806
- "FB": {
2807
- "short": "Feedback",
2808
- "long": "How much delayed signal feeds back for more repeats."
2809
- },
2810
- "SPREAD": {
2811
- "short": "Stereo Spread",
2812
- "long": "Controls how far left/right the bounces are panned. 0% = mono center, 100% = full stereo."
2813
- },
2814
- "MIX": {
2815
- "short": "Dry/Wet Mix",
2816
- "long": "Balance between original and delayed signal."
2817
- }
2818
- },
2819
- "worklets": [
2820
- "ping-pong"
2821
- ]
2822
- },
2823
- {
2824
- "slug": "resonator",
2825
- "exportName": "Resonator",
2826
- "type": "resonator",
2827
- "name": "RESO",
2828
- "categories": [
2829
- "Filters"
2830
- ],
2831
- "description": {
2832
- "short": "Resonator",
2833
- "long": "Modal resonator: five tuned second-order modes that ring when struck. The whole partial series tracks the root note and the V/OCT input exponentially; STRUCT sets the spacing, DAMP the decay time."
2834
- },
2835
- "ports": {
2836
- "in": {
2837
- "type": "input",
2838
- "signal": "audio",
2839
- "node": "input",
2840
- "label": "IN",
2841
- "name": "Audio Input",
2842
- "desc": "Audio signal to excite the resonator."
2843
- },
2844
- "out": {
2845
- "type": "output",
2846
- "signal": "audio",
2847
- "node": "output",
2848
- "label": "OUT",
2849
- "name": "Audio Output",
2850
- "desc": "Resonant, pitched harmonics from the input."
2851
- },
2852
- "voct": {
2853
- "type": "input",
2854
- "signal": "pitch",
2855
- "node": "_pitch",
2856
- "label": "V/OCT",
2857
- "name": "Root V/Oct",
2858
- "desc": "Pitch CV from a keyboard or sequencer — every partial plays the incoming notes."
2859
- },
2860
- "modFreq": {
2861
- "type": "modulation",
2862
- "signal": "modulation",
2863
- "node": "_pitch",
2864
- "label": "MOD",
2865
- "name": "Root Modulation",
2866
- "desc": "Sweeps every partial in semitones, ±12 = one octave. Patch an LFO here for vowel-like wobbles."
2867
- }
2868
- },
2869
- "params": {
2870
- "offset": {
2871
- "node": "_root",
2872
- "field": "offset",
2873
- "default": 57,
2874
- "min": -48,
2875
- "max": 108,
2876
- "unit": "semitone",
2877
- "short": "Root Pitch Offset",
2878
- "long": "Semitones added to the V/OCT input. Unpatched the input is silent, so this is the root note itself: 57 = A3 (220 Hz). Driven by a keyboard or sequencer, 0 tracks the incoming notes. Every partial follows."
2879
- },
2880
- "structure": {
2881
- "unit": "factor",
2882
- "label": "STRUCT",
2883
- "default": 0,
2884
- "min": 0,
2885
- "max": 1,
2886
- "short": "Structure",
2887
- "long": "Harmonic spacing of the resonator partials. Left = standard harmonic series, center = bell-like, right = metallic/inharmonic."
2888
- },
2889
- "damping": {
2890
- "unit": "factor",
2891
- "label": "DAMP",
2892
- "default": 0.5,
2893
- "min": 0,
2894
- "max": 1,
2895
- "short": "Damping",
2896
- "long": "Decay time of the modes, exponential across the knob: at A3 the ring lasts ~10 s at 0, ~0.45 s at the centre and ~20 ms at 1 (T60 ≈ 2.2·Q/f, Q 1000 → 2). Upper partials fade faster than the root, as on a real string. Loudness holds across the range — less damping spreads the same strike over a longer ring instead of making it quieter."
2897
- },
2898
- "mix": {
2899
- "node": "_mix",
2900
- "field": "offset",
2901
- "unit": "factor",
2902
- "label": "MIX",
2903
- "default": 0.5,
2904
- "min": 0,
2905
- "max": 1,
2906
- "short": "Dry/Wet Mix",
2907
- "long": "Balance between original and resonated signal."
2908
- }
2909
- },
2910
- "controlDescriptions": {
2911
- "FREQ": {
2912
- "short": "Root Frequency / Transpose",
2913
- "long": "Free-running: sets the root frequency. With a cable on V/OCT it becomes a transpose around the incoming notes (+0 st = play as-is). Each mode remembers its own setting."
2914
- },
2915
- "STRUCT": {
2916
- "short": "Structure",
2917
- "long": "Harmonic spacing of the resonator partials. Left = standard harmonic series, center = bell-like, right = metallic/inharmonic."
2918
- },
2919
- "DAMP": {
2920
- "short": "Damping",
2921
- "long": "Decay time of the modes, exponential across the knob: at A3 the ring lasts ~10 s at 0, ~0.45 s at the centre and ~20 ms at 1 (T60 ≈ 2.2·Q/f, Q 1000 → 2). Upper partials fade faster than the root, as on a real string. Loudness holds across the range — less damping spreads the same strike over a longer ring instead of making it quieter."
2922
- },
2923
- "MIX": {
2924
- "short": "Dry/Wet Mix",
2925
- "long": "Balance between original and resonated signal."
2926
- }
2927
- },
2928
- "worklets": [
2929
- "map-voct-to-freq"
2930
- ]
2931
- },
2932
- {
2933
- "slug": "reverb",
2934
- "exportName": "Reverb",
2935
- "type": "reverb",
2936
- "name": "REVERB",
2937
- "categories": [
2938
- "Time"
2939
- ],
2940
- "description": {
2941
- "short": "Reverb Effect",
2942
- "long": "Algorithmic Schroeder/FDN reverb: four damped comb filters cross-mixed through a Hadamard matrix, with separate mid and side output taps — a stereo tail that stays exactly mono-compatible, and a stereo input keeps its image. Decay sets RT60 and updates smoothly — nothing is re-rendered when you turn a knob."
2943
- },
2944
- "ports": {
2945
- "in": {
2946
- "type": "input",
2947
- "signal": "audio",
2948
- "node": "input",
2949
- "label": "IN",
2950
- "name": "Audio Input",
2951
- "desc": "Audio signal to add reverb to."
2952
- },
2953
- "out": {
2954
- "type": "output",
2955
- "signal": "audio",
2956
- "node": "output",
2957
- "label": "OUT",
2958
- "name": "Audio Output",
2959
- "desc": "Reverberant audio signal mixed with dry signal."
2960
- }
2961
- },
2962
- "params": {
2963
- "decay": {
2964
- "node": "tankNode",
2965
- "field": "rt60",
2966
- "label": "DECAY",
2967
- "default": 2,
2968
- "min": 0.1,
2969
- "max": 8,
2970
- "scale": "log",
2971
- "unit": "s",
2972
- "short": "Decay Time (RT60)",
2973
- "long": "How long the tail takes to fall 60 dB. Short = room, long = hall or cathedral."
2974
- },
2975
- "mix": {
2976
- "node": "_mix",
2977
- "field": "offset",
2978
- "unit": "factor",
2979
- "label": "MIX",
2980
- "default": 0.3,
2981
- "min": 0,
2982
- "max": 1,
2983
- "short": "Dry/Wet Mix",
2984
- "long": "Equal-power balance between original (dry) and reverberant (wet) signal."
2985
- }
2986
- },
2987
- "controlDescriptions": {
2988
- "DECAY": {
2989
- "short": "Decay Time (RT60)",
2990
- "long": "How long the tail takes to fall 60 dB. Short = room, long = hall or cathedral."
2991
- },
2992
- "MIX": {
2993
- "short": "Dry/Wet Mix",
2994
- "long": "Equal-power balance between original (dry) and reverberant (wet) signal."
2995
- }
2996
- },
2997
- "worklets": [
2998
- "fdn-reverb"
2999
- ]
3000
- },
3001
- {
3002
- "slug": "ring-mod",
3003
- "exportName": "RingModulator",
3004
- "type": "ring-mod",
3005
- "name": "RING",
3006
- "categories": [
3007
- "Effects"
3008
- ],
3009
- "description": {
3010
- "short": "Ring Modulator",
3011
- "long": "Multiplies input with an internal carrier oscillator, creating metallic, bell-like, and robotic tones. Classic Dalek voice effect!"
3012
- },
3013
- "ports": {
3014
- "in": {
3015
- "type": "input",
3016
- "signal": "audio",
3017
- "node": "input",
3018
- "label": "IN",
3019
- "name": "Audio Input",
3020
- "desc": "Audio signal for ring modulation."
3021
- },
3022
- "out": {
3023
- "type": "output",
3024
- "signal": "audio",
3025
- "node": "output",
3026
- "label": "OUT",
3027
- "name": "Audio Output",
3028
- "desc": "Metallic, bell-like ring-modulated audio output."
3029
- },
3030
- "voct": {
3031
- "type": "input",
3032
- "signal": "pitch",
3033
- "node": "_carrierVoct",
3034
- "label": "V/OCT",
3035
- "name": "Carrier Pitch CV",
3036
- "desc": "Pitch CV from a keyboard or sequencer — the carrier plays the incoming notes."
3037
- },
3038
- "modFreq": {
3039
- "type": "modulation",
3040
- "signal": "modulation",
3041
- "node": "_carrierVoct",
3042
- "label": "MOD",
3043
- "name": "Carrier Modulation",
3044
- "desc": "Sweeps the carrier in semitones, ±12 = one octave. Patch an LFO here for gliding sci-fi sidebands."
3045
- }
3046
- },
3047
- "params": {
3048
- "offset": {
3049
- "node": "_carrierVoct",
3050
- "field": "transpose",
3051
- "unit": "semitone",
3052
- "default": 69,
3053
- "min": -48,
3054
- "max": 108,
3055
- "short": "Carrier Pitch Offset",
3056
- "long": "Semitones added to the V/OCT input. Unpatched the input is silent, so this is the carrier note itself: 69 = 440 Hz. Driven by a keyboard or sequencer, 0 tracks the incoming notes."
3057
- },
3058
- "mix": {
3059
- "unit": "factor",
3060
- "default": 0.5,
3061
- "min": 0,
3062
- "max": 1,
3063
- "short": "Dry/Wet Mix",
3064
- "long": "Balance between original and ring-modulated signal."
3065
- }
3066
- },
3067
- "controlDescriptions": {
3068
- "FREQ": {
3069
- "short": "Carrier Frequency / Transpose",
3070
- "long": "Free-running: sets the carrier frequency. With a cable on V/OCT it becomes a transpose around the incoming notes (+0 st = play as-is). Each mode remembers its own setting."
3071
- },
3072
- "MIX": {
3073
- "short": "Dry/Wet Mix",
3074
- "long": "Balance between original and ring-modulated signal."
3075
- }
3076
- },
3077
- "worklets": [
3078
- "map-voct-to-freq"
3079
- ]
3080
- },
3081
- {
3082
- "slug": "rotary",
3083
- "exportName": "Rotary",
3084
- "type": "rotary",
3085
- "name": "ROTARY",
3086
- "categories": [
3087
- "Effects",
3088
- "Vintage"
3089
- ],
3090
- "description": {
3091
- "short": "Rotary Speaker",
3092
- "long": "Two-rotor Leslie cabinet: 800 Hz crossover into a treble horn and bass drum, each with its own speed, inertia, Doppler and directivity, picked up by a stereo mic pair. Switching SLOW↔FAST ramps the rotors like the real thing — the horn in about a second, the drum over several."
3093
- },
3094
- "ports": {
3095
- "in": {
3096
- "type": "input",
3097
- "signal": "audio",
3098
- "node": "input",
3099
- "label": "IN",
3100
- "name": "Audio Input",
3101
- "desc": "Audio signal for Leslie cabinet simulation."
3102
- },
3103
- "out": {
3104
- "type": "output",
3105
- "signal": "audio",
3106
- "node": "output",
3107
- "label": "OUT",
3108
- "name": "Audio Output",
3109
- "desc": "Stereo rotary output: Doppler and tremolo swirling between the two mics."
3110
- },
3111
- "modMix": {
3112
- "type": "modulation",
3113
- "signal": "modulation",
3114
- "node": "_mix",
3115
- "label": "MIX",
3116
- "name": "Mix CV",
3117
- "desc": "Modulate the dry/wet balance.",
3118
- "field": "offset"
3119
- }
3120
- },
3121
- "params": {
3122
- "speed": {
3123
- "kind": "enum",
3124
- "options": [
3125
- "slow",
3126
- "fast"
3127
- ],
3128
- "default": "slow",
3129
- "short": "Speed Mode",
3130
- "long": "Toggle between slow \"chorale\" and fast \"tremolo\". The rotors ramp between speeds with inertia — horn in ~1 s, drum in ~4–5 s — so this is a mode switch, not a continuous rate."
3131
- },
3132
- "slowRate": {
3133
- "unit": "Hz",
3134
- "default": 0.8,
3135
- "min": 0.5,
3136
- "max": 2,
3137
- "short": "Slow Rate",
3138
- "long": "Horn speed in chorale mode (the drum turns at 0.85× this). Applied via an inertia ramp, so it is set-only."
3139
- },
3140
- "fastRate": {
3141
- "unit": "Hz",
3142
- "default": 6,
3143
- "min": 4,
3144
- "max": 8,
3145
- "short": "Fast Rate",
3146
- "long": "Horn speed in tremolo mode (the drum turns at 0.85× this). Applied via an inertia ramp, so it is set-only."
3147
- },
3148
- "mix": {
3149
- "node": "_mix",
3150
- "field": "offset",
3151
- "unit": "factor",
3152
- "default": 0.7,
3153
- "min": 0,
3154
- "max": 1,
3155
- "short": "Dry/Wet Mix",
3156
- "long": "Balance between original and rotary speaker signal, driven by one ConstantSource (linear law: dry = 1 − mix, wet = mix)."
3157
- }
3158
- },
3159
- "controlDescriptions": {
3160
- "SPEED": {
3161
- "short": "Speed Mode",
3162
- "long": "Toggle between slow \"chorale\" and fast \"tremolo\". The rotors ramp between speeds — horn in ~1 s, drum in ~4–5 s."
3163
- },
3164
- "SLOW": {
3165
- "short": "Slow Rate",
3166
- "long": "Horn speed in chorale mode (the drum turns at 0.85× this)."
3167
- },
3168
- "FAST": {
3169
- "short": "Fast Rate",
3170
- "long": "Horn speed in tremolo mode (the drum turns at 0.85× this)."
3171
- },
3172
- "MIX": {
3173
- "short": "Dry/Wet Mix",
3174
- "long": "Balance between original and rotary speaker signal."
3175
- }
3176
- },
3177
- "worklets": []
3178
- },
3179
- {
3180
- "slug": "saturator",
3181
- "exportName": "Saturator",
3182
- "type": "saturator",
3183
- "name": "SAT",
3184
- "categories": [
3185
- "Distortion"
3186
- ],
3187
- "description": {
3188
- "short": "Tape Saturator",
3189
- "long": "Adds warm analog-style harmonic saturation. Drive pushes into soft clipping, warmth adds low-end emphasis. Subtle grit to heavy crunch."
3190
- },
3191
- "ports": {
3192
- "in": {
3193
- "type": "input",
3194
- "signal": "audio",
3195
- "node": "input",
3196
- "label": "IN",
3197
- "name": "Audio Input",
3198
- "desc": "Audio signal for warm saturation."
3199
- },
3200
- "out": {
3201
- "type": "output",
3202
- "signal": "audio",
3203
- "node": "output",
3204
- "label": "OUT",
3205
- "name": "Audio Output",
3206
- "desc": "Warm, harmonically-rich saturated audio output."
3207
- }
3208
- },
3209
- "params": {
3210
- "drive": {
3211
- "unit": "factor",
3212
- "default": 0.5,
3213
- "min": 0,
3214
- "max": 1,
3215
- "short": "Drive",
3216
- "long": "How hard to push into saturation. Adds harmonics and soft compression."
3217
- },
3218
- "warmth": {
3219
- "unit": "factor",
3220
- "default": 0.5,
3221
- "min": 0,
3222
- "max": 1,
3223
- "short": "Warmth",
3224
- "long": "Low frequency emphasis for a thicker, analog-like tone."
3225
- },
3226
- "mix": {
3227
- "node": "_mix",
3228
- "field": "offset",
3229
- "unit": "factor",
3230
- "default": 1,
3231
- "min": 0,
3232
- "max": 1,
3233
- "short": "Dry/Wet Mix",
3234
- "long": "Balance between clean and saturated signal."
3235
- }
3236
- },
3237
- "controlDescriptions": {
3238
- "DRIVE": {
3239
- "short": "Drive",
3240
- "long": "How hard to push into saturation. Adds harmonics and soft compression."
3241
- },
3242
- "WARM": {
3243
- "short": "Warmth",
3244
- "long": "Low frequency emphasis for a thicker, analog-like tone."
3245
- },
3246
- "MIX": {
3247
- "short": "Dry/Wet Mix",
3248
- "long": "Balance between clean and saturated signal."
3249
- }
3250
- },
3251
- "worklets": []
3252
- },
3253
- {
3254
- "slug": "shimmer",
3255
- "exportName": "Shimmer",
3256
- "type": "shimmer",
3257
- "name": "SHIMMER",
3258
- "categories": [
3259
- "Time"
3260
- ],
3261
- "description": {
3262
- "short": "Shimmer Reverb",
3263
- "long": "A real shimmer: a Schroeder/FDN reverb tank whose feedback path runs through a granular pitch shifter, so every pass through the tank is transposed again and the tail climbs as it decays. Fully stereo: the tank keeps a stereo input's image, and each channel has its own pitch shifter in the feedback loop so the rising tail stays wide. +12 = octave up, +7 = fifth."
3264
- },
3265
- "ports": {
3266
- "in": {
3267
- "type": "input",
3268
- "signal": "audio",
3269
- "node": "input",
3270
- "label": "IN",
3271
- "name": "Audio Input",
3272
- "desc": "Audio signal for shimmer reverb processing."
3273
- },
3274
- "out": {
3275
- "type": "output",
3276
- "signal": "audio",
3277
- "node": "output",
3278
- "label": "OUT",
3279
- "name": "Audio Output",
3280
- "desc": "Ethereal, pitch-shifted reverb output."
3281
- }
3282
- },
3283
- "params": {
3284
- "decay": {
3285
- "label": "DECAY",
3286
- "unit": "s",
3287
- "default": 3,
3288
- "min": 0.5,
3289
- "max": 10,
3290
- "scale": "log",
3291
- "short": "Reverb Decay",
3292
- "long": "RT60 of the reverb tank in seconds."
3293
- },
3294
- "pitch": {
3295
- "label": "PITCH",
3296
- "unit": "semitone",
3297
- "default": 12,
3298
- "min": -12,
3299
- "max": 24,
3300
- "short": "Pitch Shift",
3301
- "long": "Transposition applied by the granular pitch shifter on every trip round the feedback loop (12 = one octave). +12 = octave up, +7 = fifth up, -12 = octave down."
3302
- },
3303
- "mix": {
3304
- "label": "MIX",
3305
- "node": "_mix",
3306
- "field": "offset",
3307
- "unit": "factor",
3308
- "default": 0.5,
3309
- "min": 0,
3310
- "max": 1,
3311
- "short": "Dry/Wet Mix",
3312
- "long": "Equal-power balance between dry signal and shimmer output — independent of the regen amount."
3313
- },
3314
- "shimmer": {
3315
- "label": "SHIMMER",
3316
- "node": "regenGain",
3317
- "field": "gain",
3318
- "unit": "factor",
3319
- "default": 0.5,
3320
- "min": 0,
3321
- "max": 0.95,
3322
- "short": "Shimmer Regen",
3323
- "long": "How much pitch-shifted signal is fed back into the tank. High = endless rising choir."
3324
- }
3325
- },
3326
- "controlDescriptions": {
3327
- "DECAY": {
3328
- "short": "Reverb Decay",
3329
- "long": "RT60 of the reverb tank in seconds."
3330
- },
3331
- "PITCH": {
3332
- "short": "Pitch Shift",
3333
- "long": "Transposition applied by the granular pitch shifter on every trip round the feedback loop (12 = one octave). +12 = octave up, +7 = fifth up, -12 = octave down."
3334
- },
3335
- "MIX": {
3336
- "short": "Dry/Wet Mix",
3337
- "long": "Equal-power balance between dry signal and shimmer output — independent of the regen amount."
3338
- },
3339
- "SHIMMER": {
3340
- "short": "Shimmer Regen",
3341
- "long": "How much pitch-shifted signal is fed back into the tank. High = endless rising choir."
3342
- }
3343
- },
3344
- "worklets": [
3345
- "pitch-shifter",
3346
- "fdn-reverb"
3347
- ]
3348
- },
3349
- {
3350
- "slug": "soft-limit",
3351
- "exportName": "SoftLimiter",
3352
- "type": "soft-limit",
3353
- "name": "LIMIT",
3354
- "categories": [
3355
- "Dynamics"
3356
- ],
3357
- "description": {
3358
- "short": "Soft Limiter",
3359
- "long": "Gentle brickwall limiting with soft knee. Prevents clipping while preserving dynamics. Use ceiling control to set maximum output level."
3360
- },
3361
- "ports": {
3362
- "in": {
3363
- "type": "input",
3364
- "signal": "audio",
3365
- "node": "input",
3366
- "label": "IN",
3367
- "name": "Audio Input",
3368
- "desc": "Audio signal to be limited."
3369
- },
3370
- "out": {
3371
- "type": "output",
3372
- "signal": "audio",
3373
- "node": "output",
3374
- "label": "OUT",
3375
- "name": "Audio Output",
3376
- "desc": "Limited audio with controlled peaks."
3377
- }
3378
- },
3379
- "params": {
3380
- "drive": {
3381
- "unit": "factor",
3382
- "default": 0.5,
3383
- "min": 0,
3384
- "max": 1,
3385
- "short": "Input Drive",
3386
- "long": "Pushes signal into the limiter for more saturation and loudness."
3387
- },
3388
- "knee": {
3389
- "unit": "factor",
3390
- "default": 0.5,
3391
- "min": 0,
3392
- "max": 1,
3393
- "short": "Soft Knee",
3394
- "long": "How gradually limiting kicks in. Higher = softer, more transparent."
3395
- },
3396
- "ceiling": {
3397
- "unit": "dB",
3398
- "default": -0.5,
3399
- "min": -12,
3400
- "max": 0,
3401
- "short": "Ceiling",
3402
- "long": "Maximum output level in dB. Prevents clipping above this level."
3403
- }
3404
- },
3405
- "controlDescriptions": {
3406
- "DRIVE": {
3407
- "short": "Input Drive",
3408
- "long": "Pushes signal into the limiter for more saturation and loudness."
3409
- },
3410
- "KNEE": {
3411
- "short": "Soft Knee",
3412
- "long": "How gradually limiting kicks in. Higher = softer, more transparent."
3413
- },
3414
- "CEIL": {
3415
- "short": "Ceiling",
3416
- "long": "Maximum output level in dB. Prevents clipping above this level."
3417
- }
3418
- },
3419
- "worklets": []
3420
- },
3421
- {
3422
- "slug": "spring-reverb",
3423
- "exportName": "SpringReverb",
3424
- "type": "spring-reverb",
3425
- "name": "SPRING",
3426
- "categories": [
3427
- "Time",
3428
- "Vintage"
3429
- ],
3430
- "description": {
3431
- "short": "Spring Tank Reverb",
3432
- "long": "A modeled spring tank: dispersive spring lines turn transients into the classic descending \"boing\", the tail darkens with every pass, and KNOCK whacks the tank for the kicked-amp crash."
3433
- },
3434
- "ports": {
3435
- "in": {
3436
- "type": "input",
3437
- "signal": "audio",
3438
- "node": "input",
3439
- "label": "IN",
3440
- "name": "Audio Input",
3441
- "desc": "Audio driven into the spring tank. Hit it hard and the springs overload into a crash."
3442
- },
3443
- "knock": {
3444
- "type": "input",
3445
- "signal": "gate",
3446
- "node": "_knockIn",
3447
- "label": "KNOCK",
3448
- "name": "Knock Trigger",
3449
- "desc": "Rising edge whacks the tank — a mechanical thump straight into the springs, like kicking the amp. Patch a clock for rhythmic dub crashes."
3450
- },
3451
- "out": {
3452
- "type": "output",
3453
- "signal": "audio",
3454
- "node": "output",
3455
- "label": "OUT",
3456
- "name": "Audio Output",
3457
- "desc": "Dry/wet blend of the spring tank — dispersive boing, flutter echoes and all."
3458
- }
3459
- },
3460
- "params": {
3461
- "mix": {
3462
- "node": "_mix",
3463
- "field": "offset",
3464
- "unit": "factor",
3465
- "label": "MIX",
3466
- "default": 0.35,
3467
- "min": 0,
3468
- "max": 1,
3469
- "short": "Dry/Wet Mix",
3470
- "long": "Equal-power blend of dry signal and spring output."
3471
- },
3472
- "decay": {
3473
- "node": "_worklet",
3474
- "field": "decay",
3475
- "label": "DECAY",
3476
- "default": 1.5,
3477
- "min": 0.3,
3478
- "max": 4,
3479
- "scale": "log",
3480
- "unit": "s",
3481
- "short": "Reverb Decay",
3482
- "long": "Stretch/sag of the spring's dispersion — higher values ring longer and smear more."
3483
- },
3484
- "tone": {
3485
- "node": "_worklet",
3486
- "field": "tone",
3487
- "unit": "factor",
3488
- "label": "TONE",
3489
- "default": 0.6,
3490
- "min": 0,
3491
- "max": 1,
3492
- "short": "Tone",
3493
- "long": "Brightness of the spring output: darkens the rattly top end as it falls."
3494
- },
3495
- "drip": {
3496
- "node": "_worklet",
3497
- "field": "drip",
3498
- "unit": "factor",
3499
- "label": "DRIP",
3500
- "default": 0.5,
3501
- "min": 0,
3502
- "max": 1,
3503
- "short": "Drip",
3504
- "long": "Spring bounce character — how much the delayed tail drips and boings."
3505
- }
3506
- },
3507
- "controlDescriptions": {
3508
- "MIX": {
3509
- "short": "Dry/Wet Mix",
3510
- "long": "Balance between original and reverberant signal."
3511
- },
3512
- "DECAY": {
3513
- "short": "Decay Time",
3514
- "long": "How long the springs ring — sets the feedback around each spring line."
3515
- },
3516
- "TONE": {
3517
- "short": "Damping",
3518
- "long": "Damping inside the tank. Lower = darker; the tail loses treble faster with each trip down the spring."
3519
- },
3520
- "DRIP": {
3521
- "short": "Drip",
3522
- "long": "Dispersion amount — how far each transient smears into the signature descending \"boing\" chirp."
3523
- },
3524
- "KNOCK": {
3525
- "short": "Knock the Tank",
3526
- "long": "Whacks the tank with a mechanical thump — the classic kicked-amp crash. Also fires from the KNOCK gate input."
3527
- }
3528
- },
3529
- "worklets": [
3530
- "spring-reverb"
3531
- ]
3532
- },
3533
- {
3534
- "slug": "stereo-spread",
3535
- "exportName": "StereoSpread",
3536
- "type": "stereo-spread",
3537
- "name": "SPREAD",
3538
- "categories": [
3539
- "Stereo"
3540
- ],
3541
- "description": {
3542
- "short": "Stereo Spreader",
3543
- "long": "Frequency-dependent stereo widening using the Haas effect. Highs above the crossover are split into two paths with micro-delay for real psychoacoustic width. Lows stay mono and centered."
3544
- },
3545
- "ports": {
3546
- "in": {
3547
- "type": "input",
3548
- "signal": "audio",
3549
- "node": "input",
3550
- "label": "IN",
3551
- "name": "Audio Input",
3552
- "desc": "Audio signal for stereo spreading."
3553
- },
3554
- "out": {
3555
- "type": "output",
3556
- "signal": "audio",
3557
- "node": "output",
3558
- "label": "OUT",
3559
- "name": "Audio Output",
3560
- "desc": "Wide stereo audio with frequency-dependent Haas widening."
3561
- }
3562
- },
3563
- "params": {
3564
- "spread": {
3565
- "label": "SPREAD",
3566
- "unit": "factor",
3567
- "default": 0.7,
3568
- "min": 0,
3569
- "max": 1,
3570
- "short": "Spread Amount",
3571
- "long": "Controls the micro-delay time for Haas widening (0–5ms). More spread = wider perceived stereo image."
3572
- },
3573
- "center": {
3574
- "label": "CENTER",
3575
- "unit": "Hz",
3576
- "default": 800,
3577
- "min": 200,
3578
- "max": 2000,
3579
- "scale": "log",
3580
- "short": "Crossover Frequency",
3581
- "long": "Frequency above which Haas spreading is applied. Lows below this stay centered for mono compatibility."
3582
- }
3583
- },
3584
- "controlDescriptions": {
3585
- "SPREAD": {
3586
- "short": "Spread Amount",
3587
- "long": "Controls the micro-delay time for Haas widening (0–5ms). More spread = wider perceived stereo image."
3588
- },
3589
- "CENTER": {
3590
- "short": "Crossover Frequency",
3591
- "long": "Frequency above which Haas spreading is applied. Lows below this stay centered for mono compatibility."
3592
- }
3593
- },
3594
- "worklets": []
3595
- },
3596
- {
3597
- "slug": "sub-harm",
3598
- "exportName": "Subharmonic",
3599
- "type": "sub-harm",
3600
- "name": "SUB OCT",
3601
- "categories": [
3602
- "Sources"
3603
- ],
3604
- "description": {
3605
- "short": "Sub Octave Generator",
3606
- "long": "Generates square waves one and two octaves below the input using zero-crossing frequency division, like classic analog octave pedals."
3607
- },
3608
- "ports": {
3609
- "in": {
3610
- "type": "input",
3611
- "signal": "audio",
3612
- "node": "input",
3613
- "label": "IN",
3614
- "name": "Audio Input",
3615
- "desc": "Audio signal for sub-octave generation."
3616
- },
3617
- "out": {
3618
- "type": "output",
3619
- "signal": "audio",
3620
- "node": "output",
3621
- "label": "OUT",
3622
- "name": "Audio Output",
3623
- "desc": "Audio with added sub-octave content."
3624
- }
3625
- },
3626
- "params": {
3627
- "direct": {
3628
- "node": "dryGain",
3629
- "field": "gain",
3630
- "unit": "factor",
3631
- "default": 1,
3632
- "min": 0,
3633
- "max": 1,
3634
- "short": "Direct Level",
3635
- "long": "Level of the dry input signal passed through to the output."
3636
- },
3637
- "octave1": {
3638
- "node": "subOctave",
3639
- "field": "oct1Level",
3640
- "unit": "factor",
3641
- "default": 0.5,
3642
- "min": 0,
3643
- "max": 1,
3644
- "short": "Octave Down",
3645
- "long": "Level of the first sub-octave (one octave below input via ÷2 frequency division)."
3646
- },
3647
- "octave2": {
3648
- "node": "subOctave",
3649
- "field": "oct2Level",
3650
- "unit": "factor",
3651
- "default": 0.3,
3652
- "min": 0,
3653
- "max": 1,
3654
- "short": "Two Octaves Down",
3655
- "long": "Level of the second sub-octave (two octaves below input via ÷4 frequency division)."
3656
- }
3657
- },
3658
- "controlDescriptions": {
3659
- "DIRECT": {
3660
- "short": "Direct Level",
3661
- "long": "Level of the dry input signal passed through to the output."
3662
- },
3663
- "-1 OCT": {
3664
- "short": "Octave Down",
3665
- "long": "Level of the first sub-octave (one octave below input via ÷2 frequency division)."
3666
- },
3667
- "-2 OCT": {
3668
- "short": "Two Octaves Down",
3669
- "long": "Level of the second sub-octave (two octaves below input via ÷4 frequency division)."
3670
- }
3671
- },
3672
- "worklets": [
3673
- "freq-divider"
3674
- ]
3675
- },
3676
- {
3677
- "slug": "tape-delay",
3678
- "exportName": "TapeDelay",
3679
- "type": "tape-delay",
3680
- "name": "TAPE",
3681
- "categories": [
3682
- "Time",
3683
- "Vintage"
3684
- ],
3685
- "description": {
3686
- "short": "Tape Echo",
3687
- "long": "Vintage-style delay with analog warmth. Repeats darken like real tape, wow and flutter add speed wobble, saturation adds harmonic richness, and the TIME knob bends pitch like a varispeed motor."
3688
- },
3689
- "ports": {
3690
- "in": {
3691
- "type": "input",
3692
- "signal": "audio",
3693
- "node": "input",
3694
- "label": "IN",
3695
- "name": "Audio Input",
3696
- "desc": "Audio signal for warm tape echo processing."
3697
- },
3698
- "out": {
3699
- "type": "output",
3700
- "signal": "audio",
3701
- "node": "output",
3702
- "label": "OUT",
3703
- "name": "Audio Output",
3704
- "desc": "Lush tape delay with wow, flutter, per-repeat darkening, and saturation."
3705
- }
3706
- },
3707
- "params": {
3708
- "time": {
3709
- "label": "TIME",
3710
- "node": "worklet",
3711
- "field": "time",
3712
- "unit": "s",
3713
- "default": 0.375,
3714
- "min": 0.05,
3715
- "max": 1.5,
3716
- "scale": "log",
3717
- "short": "Delay Time",
3718
- "long": "Echo time. Changes glide with a tape-style pitch bend instead of jumping."
3719
- },
3720
- "feedback": {
3721
- "label": "FDBK",
3722
- "node": "worklet",
3723
- "field": "feedback",
3724
- "unit": "factor",
3725
- "default": 0.5,
3726
- "min": 0,
3727
- "max": 0.95,
3728
- "short": "Feedback",
3729
- "long": "Repeat intensity. High values create dreamy, degrading echoes."
3730
- },
3731
- "mix": {
3732
- "label": "MIX",
3733
- "node": "_mix",
3734
- "field": "offset",
3735
- "unit": "factor",
3736
- "default": 0.4,
3737
- "min": 0,
3738
- "max": 1,
3739
- "short": "Dry/Wet Mix",
3740
- "long": "Balance between original and delayed signal."
3741
- },
3742
- "flutter": {
3743
- "label": "FLUTTER",
3744
- "node": "worklet",
3745
- "field": "flutter",
3746
- "unit": "factor",
3747
- "default": 0.3,
3748
- "min": 0,
3749
- "max": 1,
3750
- "short": "Wow & Flutter",
3751
- "long": "Slow wow plus fast flutter — tape transport speed wobble, proportional to delay time."
3752
- },
3753
- "saturation": {
3754
- "label": "SAT",
3755
- "node": "worklet",
3756
- "field": "saturation",
3757
- "unit": "factor",
3758
- "default": 0.4,
3759
- "min": 0,
3760
- "max": 1,
3761
- "short": "Saturation",
3762
- "long": "Tape saturation warmth and subtle compression, applied on every pass."
3763
- }
3764
- },
3765
- "controlDescriptions": {
3766
- "TIME": {
3767
- "short": "Delay Time",
3768
- "long": "Echo time. Changes glide with a tape-style pitch bend instead of jumping."
3769
- },
3770
- "FDBK": {
3771
- "short": "Feedback",
3772
- "long": "Repeat intensity. High values create dreamy, degrading echoes."
3773
- },
3774
- "MIX": {
3775
- "short": "Dry/Wet Mix",
3776
- "long": "Balance between original and delayed signal."
3777
- },
3778
- "FLUTTER": {
3779
- "short": "Wow & Flutter",
3780
- "long": "Slow wow plus fast flutter — tape transport speed wobble, proportional to delay time."
3781
- },
3782
- "SAT": {
3783
- "short": "Saturation",
3784
- "long": "Tape saturation warmth and subtle compression, applied on every pass."
3785
- }
3786
- },
3787
- "worklets": [
3788
- "tape-delay"
3789
- ]
3790
- },
3791
- {
3792
- "slug": "tape-stop",
3793
- "exportName": "TapeStop",
3794
- "type": "tape-stop",
3795
- "name": "TAPE STOP",
3796
- "categories": [
3797
- "Time"
3798
- ],
3799
- "description": {
3800
- "short": "Tape Stop Effect",
3801
- "long": "Classic DJ/producer tape-stop effect with real pitch-dropping slowdown via ring-buffer resampling. Trigger to toggle between stopped and playing."
3802
- },
3803
- "ports": {
3804
- "in": {
3805
- "type": "input",
3806
- "signal": "audio",
3807
- "node": "_worklet",
3808
- "label": "IN",
3809
- "name": "Audio Input",
3810
- "desc": "Audio signal to apply tape stop effect."
3811
- },
3812
- "trigger": {
3813
- "type": "input",
3814
- "signal": "gate",
3815
- "node": "_trigIn",
3816
- "label": "TRIG",
3817
- "name": "Trigger Input",
3818
- "desc": "Rising edge toggles between stop and start. Works with clock or audio-rate triggers."
3819
- },
3820
- "out": {
3821
- "type": "output",
3822
- "signal": "audio",
3823
- "node": "output",
3824
- "label": "OUT",
3825
- "name": "Audio Output",
3826
- "desc": "Audio with tape stop/start effect applied."
3827
- }
3828
- },
3829
- "params": {
3830
- "time": {
3831
- "node": "_worklet",
3832
- "field": "time",
3833
- "label": "TIME",
3834
- "default": 0.5,
3835
- "min": 0.01,
3836
- "max": 4,
3837
- "scale": "log",
3838
- "unit": "s",
3839
- "short": "Stop/Start Time",
3840
- "long": "Duration of the tape deceleration or acceleration ramp."
3841
- },
3842
- "mix": {
3843
- "node": "_worklet",
3844
- "field": "mix",
3845
- "unit": "factor",
3846
- "label": "MIX",
3847
- "default": 1,
3848
- "min": 0,
3849
- "max": 1,
3850
- "short": "Dry/Wet Mix",
3851
- "long": "Balance between original signal and tape-stopped signal."
3852
- }
3853
- },
3854
- "controlDescriptions": {
3855
- "TIME": {
3856
- "short": "Stop/Start Time",
3857
- "long": "Duration of the tape deceleration or acceleration ramp."
3858
- },
3859
- "MIX": {
3860
- "short": "Dry/Wet Mix",
3861
- "long": "Balance between original signal and tape-stopped signal."
3862
- }
3863
- },
3864
- "worklets": [
3865
- "tape-stop"
3866
- ]
3867
- },
3868
- {
3869
- "slug": "tilt",
3870
- "exportName": "Tilt",
3871
- "type": "tilt-eq",
3872
- "name": "TILT",
3873
- "categories": [
3874
- "Filters"
3875
- ],
3876
- "description": {
3877
- "short": "Tilt EQ",
3878
- "long": "Single-knob tone control that tilts the frequency balance around a pivot point. Positive = brighter, negative = darker. Simple but powerful."
3879
- },
3880
- "ports": {
3881
- "in": {
3882
- "type": "input",
3883
- "signal": "audio",
3884
- "node": "input",
3885
- "label": "IN",
3886
- "name": "Audio Input",
3887
- "desc": "Audio signal for tilt EQ processing."
3888
- },
3889
- "out": {
3890
- "type": "output",
3891
- "signal": "audio",
3892
- "node": "output",
3893
- "label": "OUT",
3894
- "name": "Audio Output",
3895
- "desc": "Frequency-tilted audio output."
3896
- }
3897
- },
3898
- "params": {
3899
- "tilt": {
3900
- "unit": "dB",
3901
- "default": 0,
3902
- "min": -12,
3903
- "max": 12,
3904
- "short": "Tilt Amount",
3905
- "long": "Positive tilts towards highs (brighter), negative towards lows (darker). Drives the low shelf (inverted) and high shelf gains."
3906
- },
3907
- "frequency": {
3908
- "unit": "Hz",
3909
- "default": 1000,
3910
- "min": 200,
3911
- "max": 5000,
3912
- "short": "Pivot Frequency",
3913
- "long": "Center frequency around which the tilt occurs, shared by both the low and high shelf filters."
3914
- }
3915
- },
3916
- "controlDescriptions": {
3917
- "TILT": {
3918
- "short": "Tilt Amount",
3919
- "long": "Positive tilts towards highs (brighter), negative towards lows (darker)."
3920
- },
3921
- "PIVOT": {
3922
- "short": "Pivot Frequency",
3923
- "long": "Center frequency around which the tilt occurs."
3924
- }
3925
- },
3926
- "worklets": []
3927
- },
3928
- {
3929
- "slug": "tremolo",
3930
- "exportName": "Tremolo",
3931
- "type": "tremolo",
3932
- "name": "TREMOLO",
3933
- "categories": [
3934
- "Effects"
3935
- ],
3936
- "description": {
3937
- "short": "Tremolo Effect",
3938
- "long": "Classic amplitude modulation found in vintage amps. Creates pulsing, rhythmic volume changes. Square wave shape gives choppy helicopter effect."
3939
- },
3940
- "ports": {
3941
- "in": {
3942
- "type": "input",
3943
- "signal": "audio",
3944
- "node": "input",
3945
- "label": "IN",
3946
- "name": "Audio Input",
3947
- "desc": "Audio signal for amplitude modulation."
3948
- },
3949
- "out": {
3950
- "type": "output",
3951
- "signal": "audio",
3952
- "node": "output",
3953
- "label": "OUT",
3954
- "name": "Audio Output",
3955
- "desc": "Pulsing, rhythmic tremolo audio output."
3956
- },
3957
- "modRate": {
3958
- "type": "modulation",
3959
- "signal": "modulation",
3960
- "node": "lfo",
3961
- "label": "RATE",
3962
- "name": "Rate CV",
3963
- "desc": "Modulate the tremolo LFO speed.",
3964
- "field": "frequency"
3965
- }
3966
- },
3967
- "params": {
3968
- "rate": {
3969
- "node": "lfo",
3970
- "field": "frequency",
3971
- "unit": "Hz",
3972
- "default": 5,
3973
- "min": 0.5,
3974
- "max": 20,
3975
- "short": "Rate",
3976
- "long": "Amplitude-modulation LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam."
3977
- },
3978
- "depth": {
3979
- "unit": "factor",
3980
- "default": 0.5,
3981
- "min": 0,
3982
- "max": 1,
3983
- "short": "Modulation Depth",
3984
- "long": "How much the volume varies. 100% goes from silence to full volume. Split across a depth gain and a DC offset, so it is set-only (no single AudioParam carries it)."
3985
- },
3986
- "shape": {
3987
- "kind": "enum",
3988
- "options": [
3989
- "sine",
3990
- "triangle",
3991
- "square"
3992
- ],
3993
- "default": "sine",
3994
- "short": "LFO Shape",
3995
- "long": "Waveform shape: sine for smooth, triangle for linear, square for choppy."
3996
- }
3997
- },
3998
- "controlDescriptions": {
3999
- "RATE": {
4000
- "short": "LFO Rate",
4001
- "long": "Speed of the amplitude modulation. Classic amp tremolo is 4-8 Hz."
4002
- },
4003
- "DEPTH": {
4004
- "short": "Modulation Depth",
4005
- "long": "How much the volume varies. 100% goes from silence to full volume."
4006
- },
4007
- "SHAPE": {
4008
- "short": "LFO Shape",
4009
- "long": "Waveform shape: sine for smooth, triangle for linear, square for choppy."
4010
- }
4011
- },
4012
- "worklets": []
4013
- },
4014
- {
4015
- "slug": "vca",
4016
- "exportName": "Vca",
4017
- "type": "gain",
4018
- "name": "VCA",
4019
- "categories": [
4020
- "Dynamics"
4021
- ],
4022
- "description": {
4023
- "short": "Voltage Controlled Amplifier",
4024
- "long": "Controls signal level. GAIN sets the resting level, CV AMT scales (or inverts) the control voltage. Gain is clamped at zero, so deep CV closes the VCA instead of flipping phase."
4025
- },
4026
- "ports": {
4027
- "in": {
4028
- "type": "input",
4029
- "signal": "audio",
4030
- "node": "gain",
4031
- "label": "IN",
4032
- "name": "Audio Input",
4033
- "desc": "Audio signal to be amplified."
4034
- },
4035
- "out": {
4036
- "type": "output",
4037
- "signal": "audio",
4038
- "node": "gain",
4039
- "label": "OUT",
4040
- "name": "Audio Output",
4041
- "desc": "Amplified audio signal output."
4042
- },
4043
- "modGain": {
4044
- "type": "modulation",
4045
- "signal": "modulation",
4046
- "node": "gain",
4047
- "label": "CV",
4048
- "name": "Gain CV",
4049
- "desc": "Modulate the level. Scaled by CV AMT and added to GAIN, then clamped to 0–2. Envelope for volume shaping, LFO for tremolo.",
4050
- "field": "cv"
4051
- }
4052
- },
4053
- "params": {
4054
- "gain": {
4055
- "node": "gain",
4056
- "field": "gain",
4057
- "unit": "factor",
4058
- "label": "GAIN",
4059
- "default": 0.5,
4060
- "min": 0,
4061
- "max": 2,
4062
- "short": "Resting level",
4063
- "long": "Sets the level when no CV is patched, and the offset the CV rides on. Leave at 0 for envelope-gated patches so the VCA fully closes."
4064
- },
4065
- "cvAmount": {
4066
- "node": "gain",
4067
- "field": "cvAmount",
4068
- "unit": "factor",
4069
- "label": "CV AMT",
4070
- "default": 1,
4071
- "min": -1,
4072
- "max": 1,
4073
- "short": "CV attenuverter",
4074
- "long": "Scales the control voltage from the CV input. Negative values invert it, so the signal ducks instead of swelling."
4075
- }
4076
- },
4077
- "controlDescriptions": {
4078
- "GAIN": {
4079
- "short": "Resting level",
4080
- "long": "Sets the level when no CV is patched, and the offset the CV rides on. Leave at 0 for envelope-gated patches so the VCA fully closes."
4081
- },
4082
- "CV AMT": {
4083
- "short": "CV attenuverter",
4084
- "long": "Scales the control voltage from the CV input. Negative values invert it, so the signal ducks instead of swelling."
4085
- }
4086
- },
4087
- "worklets": [
4088
- "vca"
4089
- ]
4090
- },
4091
- {
4092
- "slug": "vcf",
4093
- "exportName": "Vcf",
4094
- "type": "filter",
4095
- "name": "VCF",
4096
- "categories": [
4097
- "Filters"
4098
- ],
4099
- "description": {
4100
- "short": "Voltage Controlled Filter",
4101
- "long": "SEM-style multimode filter (12 dB/oct lowpass, highpass, bandpass, notch). Cutoff modulation is exponential (V/Oct) — ±12 = one octave. RES is true filter Q in every mode; like the SEM it stays clean and never self-oscillates — reach for LADDER when you want scream."
4102
- },
4103
- "ports": {
4104
- "in": {
4105
- "type": "input",
4106
- "signal": "audio",
4107
- "node": "filter",
4108
- "label": "IN",
4109
- "name": "Audio Input",
4110
- "desc": "Audio signal to be filtered."
4111
- },
4112
- "out": {
4113
- "type": "output",
4114
- "signal": "audio",
4115
- "node": "output",
4116
- "label": "OUT",
4117
- "name": "Audio Output",
4118
- "desc": "Filtered audio signal output."
4119
- },
4120
- "modFreq": {
4121
- "type": "modulation",
4122
- "signal": "modulation",
4123
- "node": "_cutoffVoct",
4124
- "label": "V/OCT",
4125
- "name": "Cutoff V/Oct",
4126
- "desc": "Modulate cutoff in semitones (V/Oct). ±12 = one octave. Connect an LFO or envelope for musical sweeps."
4127
- },
4128
- "modQ": {
4129
- "type": "modulation",
4130
- "signal": "modulation",
4131
- "node": "_resMap",
4132
- "label": "RES",
4133
- "name": "Resonance CV",
4134
- "desc": "Resonance CV: +1 sweeps the full RES range (Q 0.1–20), adds to the knob, clamped. Same true-Q behavior in every filter mode."
4135
- }
4136
- },
4137
- "params": {
4138
- "filterType": {
4139
- "kind": "enum",
4140
- "options": [
4141
- "lowpass",
4142
- "highpass",
4143
- "bandpass",
4144
- "notch"
4145
- ],
4146
- "default": "lowpass",
4147
- "short": "Filter Type",
4148
- "long": "Selects lowpass, highpass, bandpass, or notch response."
4149
- },
4150
- "note": {
4151
- "node": "_cutoffVoct",
4152
- "field": "transpose",
4153
- "unit": "note",
4154
- "default": 83,
4155
- "min": 15,
4156
- "max": 135,
4157
- "short": "Cutoff Note",
4158
- "long": "Filter cutoff as a note (83 ≈ 1 kHz, 69 = 440 Hz). Drives the V/OCT worklet 1:1 — the panel knob shows the equivalent Hz."
4159
- },
4160
- "resonance": {
4161
- "unit": "factor",
4162
- "default": 1,
4163
- "min": 0.1,
4164
- "max": 20,
4165
- "scale": "sqrt",
4166
- "short": "Resonance (Q)",
4167
- "long": "True filter Q, identical in every mode: Q 0.707 is maximally flat, Q 8 peaks ~+18 dB in lowpass and narrows bandpass to f/8."
4168
- }
4169
- },
4170
- "controlDescriptions": {
4171
- "CUTOFF": {
4172
- "short": "Cutoff Frequency",
4173
- "long": "Sets where the filter starts cutting frequencies. Lower = darker, higher = brighter."
4174
- },
4175
- "RES": {
4176
- "short": "Resonance (Q)",
4177
- "long": "True filter Q, identical in every mode: Q 0.707 is maximally flat, Q 8 peaks ~+18 dB in lowpass and narrows bandpass to f/8."
4178
- }
4179
- },
4180
- "worklets": [
4181
- "map-res",
4182
- "map-voct-to-freq"
4183
- ]
4184
- },
4185
- {
4186
- "slug": "vco",
4187
- "exportName": "Vco",
4188
- "type": "oscillator",
4189
- "name": "VCO",
4190
- "categories": [
4191
- "Sources"
4192
- ],
4193
- "description": {
4194
- "short": "Voltage Controlled Oscillator",
4195
- "long": "Continuously morphable waveform generator. The X-Y pad controls waveshape: X = skew (symmetry), Y = shape (curvature). Covers sine, triangle, square, sawtooth, and everything in between."
4196
- },
4197
- "ports": {
4198
- "voct": {
4199
- "type": "input",
4200
- "node": "_voct",
4201
- "label": "V/OCT",
4202
- "name": "Pitch CV",
4203
- "desc": "Pitch CV input — plays the oscillator chromatically from keyboard or sequencer CV.",
4204
- "signal": "pitch"
4205
- },
4206
- "out": {
4207
- "type": "output",
4208
- "signal": "audio",
4209
- "node": "gain",
4210
- "label": "OUT",
4211
- "name": "Audio Output",
4212
- "desc": "Main audio signal output from the oscillator."
4213
- },
4214
- "modSkew": {
4215
- "type": "modulation",
4216
- "signal": "modulation",
4217
- "node": "_ws",
4218
- "label": "SKEW",
4219
- "name": "Skew Modulation",
4220
- "desc": "Modulate waveshape symmetry. At center = symmetric, fully right = sawtooth.",
4221
- "field": "skew"
4222
- },
4223
- "modShape": {
4224
- "type": "modulation",
4225
- "signal": "modulation",
4226
- "node": "_ws",
4227
- "label": "SHAPE",
4228
- "name": "Shape Modulation",
4229
- "desc": "Modulate waveshape curvature. Bottom = square, middle = triangle, top = sine.",
4230
- "field": "shape"
4231
- },
4232
- "modDetune": {
4233
- "type": "modulation",
4234
- "signal": "modulation",
4235
- "node": "_detune",
4236
- "label": "DET",
4237
- "name": "Detune Modulation",
4238
- "desc": "Modulate fine pitch in semitones. Connect an LFO for vibrato (amount ~0.1–0.3).",
4239
- "field": "offset"
4240
- }
4241
- },
4242
- "params": {
4243
- "skew": {
4244
- "node": "_ws",
4245
- "field": "skew",
4246
- "unit": "factor",
4247
- "default": 1,
4248
- "min": -1,
4249
- "max": 1,
4250
- "short": "Waveshape Skew",
4251
- "long": "Symmetry of the waveform: −1 reversed sawtooth, 0 symmetric, +1 sawtooth."
4252
- },
4253
- "shape": {
4254
- "node": "_ws",
4255
- "field": "shape",
4256
- "unit": "factor",
4257
- "default": 0,
4258
- "min": -1,
4259
- "max": 1,
4260
- "short": "Waveshape Curvature",
4261
- "long": "Curvature of the waveform: −1 square, 0 triangle, +1 sine."
4262
- },
4263
- "offset": {
4264
- "node": "_voct",
4265
- "field": "transpose",
4266
- "default": 69,
4267
- "min": -48,
4268
- "max": 108,
4269
- "unit": "semitone",
4270
- "short": "Pitch Offset",
4271
- "long": "Semitones added to the V/OCT input (12 = one octave). Unpatched the input is silent, so this is the note itself: 69 = A4. Driven by an absolute pitch CV (keyboard, sequencer), set 0 to play as-is or ±12 to shift an octave."
4272
- },
4273
- "detune": {
4274
- "node": "_detune",
4275
- "field": "offset",
4276
- "default": 0,
4277
- "min": -1,
4278
- "max": 1,
4279
- "unit": "semitone",
4280
- "short": "Detune",
4281
- "long": "Fine pitch offset in semitones; ±1 = ±100 cents. Use for detuning oscillators against each other."
4282
- },
4283
- "gain": {
4284
- "node": "gain",
4285
- "field": "gain",
4286
- "unit": "factor",
4287
- "default": 0.5,
4288
- "min": 0,
4289
- "max": 1,
4290
- "short": "Output Level",
4291
- "long": "Amplitude of the oscillator output signal."
4292
- }
4293
- },
4294
- "controlDescriptions": {
4295
- "FREQ": {
4296
- "short": "Note / Transpose",
4297
- "long": "Free-running: the ribbon sets the note. With a cable on V/OCT it becomes a transpose around the incoming pitch (+0 st = play as-is). Each mode remembers its own setting."
4298
- },
4299
- "WAVE": {
4300
- "short": "Waveshape X-Y",
4301
- "long": "X = Skew (symmetry: rev-saw ↔ saw), Y = Shape (curvature: square ↔ sine). Triangle lives at center."
4302
- },
4303
- "DET": {
4304
- "short": "Detune",
4305
- "long": "Fine-tune pitch ±100 cents (±1 semitone). Use for subtle detuning between oscillators or chorusing effects."
4306
- },
4307
- "GAIN": {
4308
- "short": "Output Level",
4309
- "long": "Controls the amplitude of the oscillator output signal."
4310
- }
4311
- },
4312
- "worklets": [
4313
- "map-voct-to-freq",
4314
- "waveshaper"
4315
- ]
4316
- },
4317
- {
4318
- "slug": "wah",
4319
- "exportName": "Wah",
4320
- "type": "wah",
4321
- "name": "WAH",
4322
- "categories": [
4323
- "Filters",
4324
- "Effects"
4325
- ],
4326
- "description": {
4327
- "short": "Auto-Wah",
4328
- "long": "Classic wah-wah filter: a resonant bandpass swept by an internal LFO, with exponential (V/Oct) frequency response. Like a real pedal it boosts at the resonant peak, so RES changes the vocal character rather than the volume. Patch an envelope follower into V/OCT for auto-wah."
4329
- },
4330
- "ports": {
4331
- "in": {
4332
- "type": "input",
4333
- "signal": "audio",
4334
- "node": "input",
4335
- "label": "IN",
4336
- "name": "Audio Input",
4337
- "desc": "Audio signal for wah effect processing."
4338
- },
4339
- "out": {
4340
- "type": "output",
4341
- "signal": "audio",
4342
- "node": "output",
4343
- "label": "OUT",
4344
- "name": "Audio Output",
4345
- "desc": "Funky, vocal-like wah audio output."
4346
- },
4347
- "modFreq": {
4348
- "type": "modulation",
4349
- "signal": "modulation",
4350
- "node": "_cutoffVoct",
4351
- "label": "V/OCT",
4352
- "name": "Frequency V/Oct",
4353
- "desc": "Modulate center frequency in semitones (V/Oct). Connect an envelope follower for auto-wah."
4354
- }
4355
- },
4356
- "params": {
4357
- "note": {
4358
- "node": "_cutoffVoct",
4359
- "field": "transpose",
4360
- "unit": "note",
4361
- "default": 79,
4362
- "min": 55,
4363
- "max": 95,
4364
- "short": "Center Note",
4365
- "long": "Wah center frequency as a note (79 ≈ 800 Hz, 69 = 440 Hz). Drives the V/OCT worklet 1:1 — the panel knob shows the equivalent Hz."
4366
- },
4367
- "resonance": {
4368
- "unit": "factor",
4369
- "default": 8,
4370
- "min": 1,
4371
- "max": 20,
4372
- "scale": "log",
4373
- "short": "Resonance",
4374
- "long": "How pronounced and vocal the wah peak sounds."
4375
- },
4376
- "rate": {
4377
- "node": "lfo",
4378
- "field": "frequency",
4379
- "unit": "Hz",
4380
- "default": 1,
4381
- "min": 0.1,
4382
- "max": 10,
4383
- "scale": "log",
4384
- "short": "Auto-Wah Rate",
4385
- "long": "Speed of the automatic wah sweep in Hz."
4386
- },
4387
- "depth": {
4388
- "unit": "factor",
4389
- "default": 0.6,
4390
- "min": 0,
4391
- "max": 1,
4392
- "short": "Modulation Depth",
4393
- "long": "How much the frequency sweeps. Full depth ≈ 3 octaves."
4394
- }
4395
- },
4396
- "controlDescriptions": {
4397
- "FREQ": {
4398
- "short": "Center Frequency",
4399
- "long": "The frequency around which the wah sweeps."
4400
- },
4401
- "RES": {
4402
- "short": "Resonance",
4403
- "long": "How pronounced and vocal the wah peak sounds."
4404
- },
4405
- "RATE": {
4406
- "short": "Auto-Wah Rate",
4407
- "long": "Speed of the automatic wah sweep in Hz."
4408
- },
4409
- "DEPTH": {
4410
- "short": "Modulation Depth",
4411
- "long": "How much the frequency sweeps. Full depth ≈ 3 octaves."
4412
- }
4413
- },
4414
- "worklets": [
4415
- "map-voct-to-freq"
4416
- ]
4417
- },
4418
- {
4419
- "slug": "wavefolder",
4420
- "exportName": "Wavefolder",
4421
- "type": "wavefolder",
4422
- "name": "FOLD",
4423
- "categories": [
4424
- "Distortion"
4425
- ],
4426
- "description": {
4427
- "short": "Wavefolder",
4428
- "long": "West Coast synthesis classic. Folds waveform peaks back on themselves, adding rich harmonics. Essential for complex timbres from simple waves."
4429
- },
4430
- "ports": {
4431
- "in": {
4432
- "type": "input",
4433
- "signal": "audio",
4434
- "node": "input",
4435
- "label": "IN",
4436
- "name": "Audio Input",
4437
- "desc": "Audio signal for waveshaping/folding."
4438
- },
4439
- "out": {
4440
- "type": "output",
4441
- "signal": "audio",
4442
- "node": "output",
4443
- "label": "OUT",
4444
- "name": "Audio Output",
4445
- "desc": "Harmonically rich wavefolded audio output."
4446
- }
4447
- },
4448
- "params": {
4449
- "folds": {
4450
- "unit": "factor",
4451
- "default": 2,
4452
- "min": 1,
4453
- "max": 10,
4454
- "short": "Fold Amount",
4455
- "long": "How many times the waveform folds back. More folds = richer harmonics."
4456
- },
4457
- "symmetry": {
4458
- "unit": "factor",
4459
- "default": 0,
4460
- "min": -1,
4461
- "max": 1,
4462
- "short": "Symmetry",
4463
- "long": "Asymmetric folding creates even harmonics for different timbres."
4464
- },
4465
- "mix": {
4466
- "node": "_mix",
4467
- "field": "offset",
4468
- "unit": "factor",
4469
- "default": 1,
4470
- "min": 0,
4471
- "max": 1,
4472
- "short": "Dry/Wet Mix",
4473
- "long": "Balance between original and wavefolded signal."
4474
- }
4475
- },
4476
- "controlDescriptions": {
4477
- "FOLDS": {
4478
- "short": "Fold Amount",
4479
- "long": "How many times the waveform folds back. More folds = richer harmonics."
4480
- },
4481
- "SYM": {
4482
- "short": "Symmetry",
4483
- "long": "Asymmetric folding creates even harmonics for different timbres."
4484
- },
4485
- "MIX": {
4486
- "short": "Dry/Wet Mix",
4487
- "long": "Balance between original and wavefolded signal."
4488
- }
4489
- },
4490
- "worklets": []
4491
- }
4492
- ]