@jpdutoit/squelchy 0.0.1

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.
@@ -0,0 +1,1244 @@
1
+ # @jpdutoit/squelchy — modules
2
+
3
+ > Generated from module metadata by scripts/lib/build.ts — do not edit.
4
+
5
+ **Actions** (tape stop, knock, …) are rising edges on gate inputs: `pulse(tapeStop.trigger, when)` fires one sample-accurately. **Timed changes** use the native AudioParams in `instance.params`; `set()` changes a value now.
6
+
7
+ - [303](#303) — TB-303 Acid Filter
8
+ - [PAN](#pan) — Auto-Panner
9
+ - [CRUSH](#crush) — Bitcrusher
10
+ - [CHORUS](#chorus) — Chorus Effect
11
+ - [COMB](#comb) — Comb Filter
12
+ - [COMP](#comp) — Dynamics Compressor
13
+ - [X-FADE](#x-fade) — Crossfader
14
+ - [DELAY](#delay) — Echo Effect
15
+ - [DIM](#dim) — Dimension Expander
16
+ - [DIST](#dist) — Distortion Effect
17
+ - [DUCK](#duck) — Sidechain Ducker
18
+ - [ENV-F](#env-f) — Envelope Follower
19
+ - [ADSR](#adsr) — ADSR Envelope
20
+ - [EQ3](#eq3) — 3-Band Equalizer
21
+ - [EXCITE](#excite) — Harmonic Exciter
22
+ - [FLANGER](#flanger) — Flanger Effect
23
+ - [FORMANT](#formant) — Formant Filter
24
+ - [SHIFT](#shift) — Frequency Shifter
25
+ - [GATE](#gate) — Noise Gate
26
+ - [GLIDE](#glide) — Glide / Portamento
27
+ - [HAAS](#haas) — Haas Stereo Widener
28
+ - [H-TREM](#h-trem) — Harmonic Tremolo
29
+ - [LADDER](#ladder) — Moog-style Ladder Filter
30
+ - [LFO](#lfo) — Low Frequency Oscillator
31
+ - [LO-FI](#lo-fi) — Lo-Fi Processor
32
+ - [M/S](#m-s) — Mid-Side Processor
33
+ - [NOISE](#noise) — Noise Generator
34
+ - [OCTAVE](#octave) — Analog Octaver
35
+ - [PHASER](#phaser) — Phaser Effect
36
+ - [PING](#ping) — Ping Pong Delay
37
+ - [RESO](#reso) — Resonator
38
+ - [REVERB](#reverb) — Reverb Effect
39
+ - [RING](#ring) — Ring Modulator
40
+ - [ROTARY](#rotary) — Rotary Speaker
41
+ - [SAT](#sat) — Tape Saturator
42
+ - [SHIMMER](#shimmer) — Shimmer Reverb
43
+ - [LIMIT](#limit) — Soft Limiter
44
+ - [SPRING](#spring) — Spring Tank Reverb
45
+ - [SPREAD](#spread) — Stereo Spreader
46
+ - [SUB OCT](#sub-oct) — Sub Octave Generator
47
+ - [TAPE](#tape) — Tape Echo
48
+ - [TAPE STOP](#tape-stop) — Tape Stop Effect
49
+ - [TILT](#tilt) — Tilt EQ
50
+ - [TREMOLO](#tremolo) — Tremolo Effect
51
+ - [VCA](#vca) — Voltage Controlled Amplifier
52
+ - [VCF](#vcf) — Voltage Controlled Filter
53
+ - [VCO](#vco) — Voltage Controlled Oscillator
54
+ - [WAH](#wah) — Auto-Wah
55
+ - [FOLD](#fold) — Wavefolder
56
+
57
+ ## 303
58
+
59
+ `import { AcidFilter } from '@jpdutoit/squelchy'`
60
+
61
+ **TB-303 Acid Filter** — The iconic squelchy filter from the Roland TB-303. Features real triggered envelope that sweeps the cutoff for that classic acid house sound.
62
+
63
+ Categories: Filters · Worklets: adsr-envelope, map-voct-to-freq
64
+
65
+ ### Ports
66
+
67
+ | Slug | Direction | Signal | Description |
68
+ |---|---|---|---|
69
+ | `in` | input | audio | **Audio Input** — Audio signal for the iconic TB-303 acid filter sound. |
70
+ | `out` | output | audio | **Audio Output** — Squelchy, resonant acid bass output. |
71
+ | `trigger` | input | gate | **Trigger Input** — Trigger the envelope sweep for classic acid patterns. |
72
+ | `modFreq` | modulation | modulation | **Cutoff V/Oct** — External modulation of cutoff in semitones (V/Oct). ±12 = one octave. |
73
+
74
+ ### Params
75
+
76
+ | Param | Default | Range | Description |
77
+ |---|---|---|---|
78
+ | `note` | `67` | 15 – 135 notes | **Cutoff Note** — 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. Automatable: `params.note` is a native AudioParam. |
79
+ | `resonance` | `8` | 0 – 15 (sqrt) | **Resonance** — 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. |
80
+ | `envMod` | `0.7` | 0 – 1 | **Envelope Mod** — How much the triggered envelope sweeps the filter cutoff. |
81
+ | `accent` | `0.5` | 0 – 1 | **Accent** — Intensifies the envelope sweep for more aggressive acid sounds. |
82
+ | `decay` | `0.2` | 0.05 – 1 s (log) | **Decay Time** — How quickly the filter envelope falls. Short = plucky, long = sustained. Automatable: `params.decay` is a native AudioParam. |
83
+
84
+ ## PAN
85
+
86
+ `import { AutoPan } from '@jpdutoit/squelchy'`
87
+
88
+ **Auto-Panner** — Stereo auto-panner using LFO-controlled panning. Creates movement and animation in the stereo field.
89
+
90
+ Categories: Effects, Stereo
91
+
92
+ ### Ports
93
+
94
+ | Slug | Direction | Signal | Description |
95
+ |---|---|---|---|
96
+ | `in` | input | audio | **Audio Input** — Audio signal to pan across the stereo field. |
97
+ | `out` | output | audio | **Audio Output** — Stereo audio with automatic panning movement. |
98
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the pan LFO speed. |
99
+ | `modDepth` | modulation | modulation | **Depth CV** — Modulate the pan sweep depth. |
100
+
101
+ ### Params
102
+
103
+ | Param | Default | Range | Description |
104
+ |---|---|---|---|
105
+ | `rate` | `2` | 0.1 – 10 Hz | **Rate** — Panning LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
106
+ | `depth` | `0.8` | 0 – 1 | **Depth** — How far the pan sweeps from left to right. 1 = full stereo sweep. modDepth sums into the same AudioParam. Automatable: `params.depth` is a native AudioParam. |
107
+ | `shape` | `"sine"` | `sine` / `triangle` / `square` | **LFO Shape** — Waveform shape: sine for smooth, triangle for linear, square for hard left/right. |
108
+
109
+ ## CRUSH
110
+
111
+ `import { Bitcrusher } from '@jpdutoit/squelchy'`
112
+
113
+ **Bitcrusher** — Lo-fi digital destruction. Reduces bit depth and sample rate for crunchy, retro video game sounds. RATE controls sample-and-hold decimation.
114
+
115
+ Categories: Distortion · Worklets: bitcrusher
116
+
117
+ ### Ports
118
+
119
+ | Slug | Direction | Signal | Description |
120
+ |---|---|---|---|
121
+ | `in` | input | audio | **Audio Input** — Audio signal for lo-fi bit and sample rate reduction. |
122
+ | `out` | output | audio | **Audio Output** — Crunchy, retro bit-crushed audio output. |
123
+
124
+ ### Params
125
+
126
+ | Param | Default | Range | Description |
127
+ |---|---|---|---|
128
+ | `bits` | `8` | 1 – 16 | **Bit Depth** — Number of bits for quantization. Lower = crunchier, more lo-fi. Automatable: `params.bits` is a native AudioParam. |
129
+ | `rate` | `0.5` | 0.01 – 1 (log) | **Sample Rate** — Sample rate reduction factor. 1 = original, lower = more aliased and crunchy. Creates the classic "staircase" sample-and-hold effect. Automatable: `params.rate` is a native AudioParam. |
130
+ | `mix` | `1` | 0 – 1 | **Dry/Wet Mix** — Balance between clean and crushed signal. Automatable: `params.mix` is a native AudioParam. |
131
+
132
+ ## CHORUS
133
+
134
+ `import { Chorus } from '@jpdutoit/squelchy'`
135
+
136
+ **Chorus Effect** — 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.
137
+
138
+ Categories: Time, Effects
139
+
140
+ ### Ports
141
+
142
+ | Slug | Direction | Signal | Description |
143
+ |---|---|---|---|
144
+ | `in` | input | audio | **Audio Input** — Audio signal to thicken with chorus effect. |
145
+ | `out` | output | audio | **Audio Output** — Stereo chorus output: dry centred, voices spread left/right. |
146
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the chorus sweep speed. |
147
+ | `modMix` | modulation | modulation | **Mix CV** — Modulate the dry/wet balance. |
148
+
149
+ ### Params
150
+
151
+ | Param | Default | Range | Description |
152
+ |---|---|---|---|
153
+ | `rate` | `1.5` | 0.1 – 5 Hz | **Rate** — Chorus sweep LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
154
+ | `depth` | `0.5` | 0 – 1 | **Modulation Depth** — 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). |
155
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — 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). Automatable: `params.mix` is a native AudioParam. |
156
+
157
+ ## COMB
158
+
159
+ `import { CombFilter } from '@jpdutoit/squelchy'`
160
+
161
+ **Comb Filter** — Karplus-Strong style comb filter using short delay with feedback. Creates metallic, resonant, and pitched tones from any input.
162
+
163
+ Categories: Filters · Worklets: map-voct-to-period, comb-filter
164
+
165
+ ### Ports
166
+
167
+ | Slug | Direction | Signal | Description |
168
+ |---|---|---|---|
169
+ | `in` | input | audio | **Audio Input** — Audio signal for comb filtering. |
170
+ | `out` | output | audio | **Audio Output** — Metallic, resonant comb-filtered audio output. |
171
+ | `voct` | input | pitch | **Pitch CV** — Pitch CV input — plays the comb chromatically from keyboard or sequencer CV. Set TUNING to CHROMATIC for scale-true tracking. |
172
+ | `modFreq` | modulation | modulation | **Pitch FM** — Frequency modulation in semitones. ±12 = one octave. Connect an LFO or envelope for musical sweeps. |
173
+
174
+ ### Params
175
+
176
+ | Param | Default | Range | Description |
177
+ |---|---|---|---|
178
+ | `offset` | `55` | -48 – 96 semitones | **Pitch Offset** — 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. Automatable: `params.offset` is a native AudioParam. |
179
+ | `feedback` | `0.7` | 0 – 0.95 | **Feedback** — Resonance amount. Higher values create more pronounced, ringing tones. Automatable: `params.feedback` is a native AudioParam. |
180
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Balance between original and comb-filtered signal. Automatable: `params.mix` is a native AudioParam. |
181
+ | `tuning` | `"chromatic"` | `chromatic` / `free` | **Tuning Mode** — CHROMATIC snaps the FREQ knob to semitones; FREE allows continuous tuning. |
182
+
183
+ ## COMP
184
+
185
+ `import { Compressor } from '@jpdutoit/squelchy'`
186
+
187
+ **Dynamics Compressor** — Reduces dynamic range by attenuating loud signals. Threshold sets where compression begins, ratio controls intensity.
188
+
189
+ Categories: Dynamics
190
+
191
+ ### Ports
192
+
193
+ | Slug | Direction | Signal | Description |
194
+ |---|---|---|---|
195
+ | `in` | input | audio | **Audio Input** — Audio signal to compress. |
196
+ | `out` | output | audio | **Audio Output** — Compressed audio with makeup gain applied. |
197
+
198
+ ### Params
199
+
200
+ | Param | Default | Range | Description |
201
+ |---|---|---|---|
202
+ | `threshold` | `-24` | -60 – 0 dB | **Threshold** — Level above which compression kicks in. Lower = more compression. Automatable: `params.threshold` is a native AudioParam. |
203
+ | `ratio` | `4` | 1 – 20 (log) | **Ratio** — How much to reduce signal above threshold. 4:1 = every 4dB over becomes 1dB. Automatable: `params.ratio` is a native AudioParam. |
204
+ | `attack` | `0.003` | 0.001 – 1 s (log) | **Attack** — How fast compression responds to loud signals. Automatable: `params.attack` is a native AudioParam. |
205
+ | `release` | `0.25` | 0.01 – 1 s (log) | **Release** — How fast compression releases after signal drops. Automatable: `params.release` is a native AudioParam. |
206
+ | `knee` | `10` | 0 – 40 dB | **Knee** — Width of the transition zone around the threshold. 0 = hard knee (abrupt), 40 = soft knee (gradual). Automatable: `params.knee` is a native AudioParam. |
207
+ | `makeup` | `0` | 0 – 30 dB | **Makeup Gain** — Boosts the output level to compensate for gain reduction. Up to +30 dB. |
208
+
209
+ ## X-FADE
210
+
211
+ `import { Crossfade } from '@jpdutoit/squelchy'`
212
+
213
+ **Crossfader** — Blends between two input signals. Equal-power curve maintains consistent volume. Essential DJ tool and utility for mixing sources.
214
+
215
+ Categories: Utility
216
+
217
+ ### Ports
218
+
219
+ | Slug | Direction | Signal | Description |
220
+ |---|---|---|---|
221
+ | `a` | input | audio | **Input A** — First audio source for crossfading. |
222
+ | `b` | input | audio | **Input B** — Second audio source for crossfading. |
223
+ | `out` | output | audio | **Audio Output** — Blended mix of inputs A and B. |
224
+
225
+ ### Params
226
+
227
+ | Param | Default | Range | Description |
228
+ |---|---|---|---|
229
+ | `blend` | `0.5` | 0 – 1 | **Crossfade Position** — Position between inputs. 0 = all A, 1 = all B. Automatable: `params.blend` is a native AudioParam. |
230
+ | `curve` | `"equal-power"` | `linear` / `equal-power` | **Curve Type** — Linear or equal-power crossfade curve. |
231
+
232
+ ## DELAY
233
+
234
+ `import { Delay } from '@jpdutoit/squelchy'`
235
+
236
+ **Echo Effect** — Creates repeating echoes of the input signal. Adjust time, feedback for number of repeats, and mix for wet/dry balance.
237
+
238
+ Categories: Time · Worklets: comb-filter
239
+
240
+ ### Ports
241
+
242
+ | Slug | Direction | Signal | Description |
243
+ |---|---|---|---|
244
+ | `in` | input | audio | **Audio Input** — Audio signal to be delayed. |
245
+ | `out` | output | audio | **Audio Output** — Delayed audio signal mixed with dry signal. |
246
+
247
+ ### Params
248
+
249
+ | Param | Default | Range | Description |
250
+ |---|---|---|---|
251
+ | `time` | `0.3` | 0.01 – 1 s (log) | **Delay Time** — Time between original signal and echo. Sync to tempo for rhythmic effects. Automatable: `params.time` is a native AudioParam. |
252
+ | `feedback` | `0.4` | 0 – 0.95 | **Feedback** — How much delayed signal feeds back. Higher = more repeats. Be careful of runaway feedback! Automatable: `params.feedback` is a native AudioParam. |
253
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Balance between original (dry) and delayed (wet) signal. Automatable: `params.mix` is a native AudioParam. |
254
+
255
+ ## DIM
256
+
257
+ `import { Dimension } from '@jpdutoit/squelchy'`
258
+
259
+ **Dimension Expander** — Roland Dimension-D inspired stereo widener. Adds subtle modulation to create spacious, wide stereo images. Classic 80s lush pad sound.
260
+
261
+ Categories: Effects
262
+
263
+ ### Ports
264
+
265
+ | Slug | Direction | Signal | Description |
266
+ |---|---|---|---|
267
+ | `in` | input | audio | **Audio Input** — Audio signal for stereo widening. |
268
+ | `out` | output | audio | **Audio Output** — Spacious, wide stereo audio with subtle modulation. |
269
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the widening LFO speed. |
270
+
271
+ ### Params
272
+
273
+ | Param | Default | Range | Description |
274
+ |---|---|---|---|
275
+ | `rate` | `0.5` | 0.1 – 5 Hz | **Rate** — Widening LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
276
+ | `depth` | `0.3` | 0 – 1 | **Modulation Depth** — 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). |
277
+
278
+ ## DIST
279
+
280
+ `import { Distortion } from '@jpdutoit/squelchy'`
281
+
282
+ **Distortion Effect** — 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.
283
+
284
+ Categories: Distortion
285
+
286
+ ### Ports
287
+
288
+ | Slug | Direction | Signal | Description |
289
+ |---|---|---|---|
290
+ | `in` | input | audio | **Audio Input** — Clean audio signal to distort. |
291
+ | `out` | output | audio | **Audio Output** — Distorted audio signal output. |
292
+
293
+ ### Params
294
+
295
+ | Param | Default | Range | Description |
296
+ |---|---|---|---|
297
+ | `distortionType` | `"soft"` | `soft` / `hard` / `fuzz` | **Clipping Curve** — Which clipping transfer curve the signal is pushed into. |
298
+ | `drive` | `5` | 1 – 20 (log) | **Drive Amount** — How hard the signal is pushed into the clipping curve. The whole travel is usable: low = warm break-up, high = full clipping. |
299
+ | `frequency` | `16000` | 500 – 16000 Hz (log) | **Tone** — Post-clip lowpass (500 Hz – 16 kHz). Turn down to tame the high-frequency fizz clipping creates — the Filter knob on a RAT. Automatable: `params.frequency` is a native AudioParam. |
300
+ | `mix` | `0.8` | 0 – 1 | **Dry/Wet Mix** — Balance between clean and distorted signal. Low settings give parallel distortion. Automatable: `params.mix` is a native AudioParam. |
301
+
302
+ ## DUCK
303
+
304
+ `import { Ducker } from '@jpdutoit/squelchy'`
305
+
306
+ **Sidechain Ducker** — 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.
307
+
308
+ Categories: Dynamics · Worklets: env-follower
309
+
310
+ ### Ports
311
+
312
+ | Slug | Direction | Signal | Description |
313
+ |---|---|---|---|
314
+ | `in` | input | audio | **Audio Input** — Main audio signal to be ducked. |
315
+ | `sc` | input | audio | **Sidechain Input** — Control signal that triggers ducking. When this exceeds threshold, main input is attenuated. |
316
+ | `out` | output | audio | **Audio Output** — Ducked audio output with sidechain-controlled dynamics. |
317
+
318
+ ### Params
319
+
320
+ | Param | Default | Range | Description |
321
+ |---|---|---|---|
322
+ | `threshold` | `-24` | -60 – 0 dB | **Threshold** — Sidechain level that triggers ducking. Lower = more sensitive. |
323
+ | `amount` | `0.7` | 0 – 1 | **Duck Amount** — How much to reduce the main signal when triggered. |
324
+ | `attack` | `0.01` | 0.001 – 0.1 s (log) | **Attack** — How fast ducking kicks in after sidechain exceeds threshold. Automatable: `params.attack` is a native AudioParam. |
325
+ | `release` | `0.2` | 0.001 – 1 s (log) | **Release** — How fast signal returns to normal after sidechain drops. Automatable: `params.release` is a native AudioParam. |
326
+
327
+ ## ENV-F
328
+
329
+ `import { EnvelopeFollower } from '@jpdutoit/squelchy'`
330
+
331
+ **Envelope Follower** — 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.
332
+
333
+ Categories: Modulators, Utility · Worklets: env-follower
334
+
335
+ ### Ports
336
+
337
+ | Slug | Direction | Signal | Description |
338
+ |---|---|---|---|
339
+ | `in` | input | audio | **Audio Input** — Audio signal to analyze for envelope. |
340
+ | `env` | output | modulation | **Envelope CV** — Amplitude envelope CV, scaled by DEPTH. Connect to filter, VCA, or other modulation inputs. |
341
+
342
+ ### Params
343
+
344
+ | Param | Default | Range | Description |
345
+ |---|---|---|---|
346
+ | `attack` | `0.01` | 0.001 – 0.5 s (log) | **Attack Time** — How quickly the envelope responds to rising levels. Shorter = snappier transient tracking. Automatable: `params.attack` is a native AudioParam. |
347
+ | `release` | `0.1` | 0.001 – 2 s (log) | **Release Time** — How quickly the envelope responds to falling levels. Longer = smoother, more sustained envelope. Automatable: `params.release` is a native AudioParam. |
348
+ | `sensitivity` | `0.5` | 0 – 1 | **Sensitivity** — Input gain before envelope detection. Higher = more responsive to quiet signals. |
349
+ | `depth` | `48` | 0 – 96 semitones (sqrt) | **Output Depth** — 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). Automatable: `params.depth` is a native AudioParam. |
350
+
351
+ ## ADSR
352
+
353
+ `import { Envelope } from '@jpdutoit/squelchy'`
354
+
355
+ **ADSR Envelope** — 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.
356
+
357
+ Categories: Modulators · Worklets: adsr-envelope
358
+
359
+ ### Ports
360
+
361
+ | Slug | Direction | Signal | Description |
362
+ |---|---|---|---|
363
+ | `in` | input | audio | **Audio Input** — Audio signal to shape with the envelope. |
364
+ | `out` | output | audio | **Audio Output** — Envelope-shaped audio output. |
365
+ | `env` | output | modulation | **Envelope CV** — Scaled envelope output. Use DEPTH to control how much the envelope sweeps the target. |
366
+ | `trigger` | input | gate | **Trigger Input** — Connect a gate signal (from keyboard or sequencer) to trigger the envelope cycle. |
367
+
368
+ ### Params
369
+
370
+ | Param | Default | Range | Description |
371
+ |---|---|---|---|
372
+ | `attack` | `0.01` | 0.001 – 2 s (log) | **Attack** — Time for signal to rise from zero to full level when triggered. Automatable: `params.attack` is a native AudioParam. |
373
+ | `decay` | `0.1` | 0.001 – 2 s (log) | **Decay** — Time to fall from peak to sustain level after attack completes. Automatable: `params.decay` is a native AudioParam. |
374
+ | `sustain` | `0.7` | 0 – 1 | **Sustain** — Level held while the note is held. 0 = plucky, 1 = organ-like. Automatable: `params.sustain` is a native AudioParam. |
375
+ | `release` | `0.3` | 0.001 – 3 s (log) | **Release** — Time to fade to silence after note is released. Automatable: `params.release` is a native AudioParam. |
376
+ | `depth` | `48` | 0 – 96 semitones (sqrt) | **ENV Depth** — 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. Automatable: `params.depth` is a native AudioParam. |
377
+
378
+ ## EQ3
379
+
380
+ `import { ThreeBandEq } from '@jpdutoit/squelchy'`
381
+
382
+ **3-Band Equalizer** — Shape your sound with bass, mid, and treble controls. Boost or cut frequencies by up to 12dB. Essential for mixing and tone shaping.
383
+
384
+ Categories: Filters
385
+
386
+ ### Ports
387
+
388
+ | Slug | Direction | Signal | Description |
389
+ |---|---|---|---|
390
+ | `in` | input | audio | **Audio Input** — Audio signal to be equalized. |
391
+ | `out` | output | audio | **Audio Output** — Tone-shaped equalized audio output. |
392
+
393
+ ### Params
394
+
395
+ | Param | Default | Range | Description |
396
+ |---|---|---|---|
397
+ | `low` | `0` | -12 – 12 dB | **Bass** — Low shelf gain at 320 Hz. Boost for warmth, cut for clarity. Automatable: `params.low` is a native AudioParam. |
398
+ | `mid` | `0` | -12 – 12 dB | **Midrange** — Peaking gain at the mid frequency. The presence and body range. Automatable: `params.mid` is a native AudioParam. |
399
+ | `high` | `0` | -12 – 12 dB | **Treble** — High shelf gain at 3.2 kHz. Boost for brightness, cut for smoothness. Automatable: `params.high` is a native AudioParam. |
400
+ | `midFreq` | `1000` | 200 – 5000 Hz (log) | **Mid Frequency** — Center frequency for the mid band EQ. Automatable: `params.midFreq` is a native AudioParam. |
401
+
402
+ ## EXCITE
403
+
404
+ `import { Exciter } from '@jpdutoit/squelchy'`
405
+
406
+ **Harmonic Exciter** — Adds high-frequency harmonics and "air" to dull signals. Generates subtle saturation in the treble range for presence and sparkle.
407
+
408
+ Categories: Dynamics
409
+
410
+ ### Ports
411
+
412
+ | Slug | Direction | Signal | Description |
413
+ |---|---|---|---|
414
+ | `in` | input | audio | **Audio Input** — Audio signal for harmonic enhancement. |
415
+ | `out` | output | audio | **Audio Output** — Bright, exciting audio with added harmonics. |
416
+
417
+ ### Params
418
+
419
+ | Param | Default | Range | Description |
420
+ |---|---|---|---|
421
+ | `drive` | `0.5` | 0 – 1 | **Drive** — Amount of harmonic saturation added to high frequencies. |
422
+ | `frequency` | `4000` | 2000 – 8000 Hz (log) | **Frequency** — Cutoff frequency above which excitement is applied. |
423
+ | `mix` | `0.5` | 0 – 1 | **Mix Amount** — How much excited signal is added to the original. Automatable: `params.mix` is a native AudioParam. |
424
+
425
+ ## FLANGER
426
+
427
+ `import { Flanger } from '@jpdutoit/squelchy'`
428
+
429
+ **Flanger Effect** — Creates jet-plane swooshing by mixing signal with a short modulated delay. The feedback control adds metallic resonance for dramatic sweeps.
430
+
431
+ Categories: Time, Effects · Worklets: flanger
432
+
433
+ ### Ports
434
+
435
+ | Slug | Direction | Signal | Description |
436
+ |---|---|---|---|
437
+ | `in` | input | audio | **Audio Input** — Audio signal for flanging effect. |
438
+ | `out` | output | audio | **Audio Output** — Swooshing, jet-plane flanged audio output. |
439
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the flanger sweep speed. |
440
+ | `modDepth` | modulation | modulation | **Depth CV** — Modulate the flanger modulation depth. |
441
+ | `modFeedback` | modulation | modulation | **Feedback CV** — Modulate the resonance feedback amount. |
442
+ | `modMix` | modulation | modulation | **Mix CV** — Modulate the dry/wet balance. |
443
+
444
+ ### Params
445
+
446
+ | Param | Default | Range | Description |
447
+ |---|---|---|---|
448
+ | `rate` | `0.5` | 0.1 – 5 Hz | **Rate** — Flanger sweep LFO speed, a real a-rate AudioParam on the worklet. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
449
+ | `depth` | `0.7` | 0 – 1 | **Modulation Depth** — How much the delay time is modulated, a real AudioParam on the worklet. modDepth sums into the same AudioParam. Automatable: `params.depth` is a native AudioParam. |
450
+ | `feedback` | `0.7` | 0 – 0.95 | **Feedback** — Resonance amount, a real AudioParam on the worklet. modFeedback sums into the same AudioParam. Automatable: `params.feedback` is a native AudioParam. |
451
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Crossfade between original and flanged signal, driven by one ConstantSource (linear law: dry = 1 − mix, wet = mix). Automatable: `params.mix` is a native AudioParam. |
452
+
453
+ ## FORMANT
454
+
455
+ `import { Formant } from '@jpdutoit/squelchy'`
456
+
457
+ **Formant Filter** — 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.
458
+
459
+ Categories: Filters · Worklets: formant-table
460
+
461
+ ### Ports
462
+
463
+ | Slug | Direction | Signal | Description |
464
+ |---|---|---|---|
465
+ | `in` | input | audio | **Audio Input** — Audio signal for vowel/formant filtering. |
466
+ | `out` | output | audio | **Audio Output** — Vocal-like formant filtered audio output. |
467
+ | `modVowel` | modulation | modulation | **Vowel CV** — Control voltage to sweep through vowels A-E-I-O-U. |
468
+
469
+ ### Params
470
+
471
+ | Param | Default | Range | Description |
472
+ |---|---|---|---|
473
+ | `morph` | `0` | 0 – 5 | **Vowel Morph** — Position along the A-E-I-O-U vowel formant chain. 0 = A, 5 wraps back to A; fractional values interpolate between neighbouring vowels. |
474
+ | `resonance` | `6` | 1 – 20 (sqrt) | **Resonance** — Sharpness of the formant peaks, scaled per band. Higher values sound more pronounced and vocal. |
475
+ | `mix` | `1` | 0 – 1 | **Dry/Wet Mix** — Balance between the original signal and the formant-filtered output. 0 = dry, 1 = fully wet. |
476
+
477
+ ## SHIFT
478
+
479
+ `import { FrequencyShifter } from '@jpdutoit/squelchy'`
480
+
481
+ **Frequency Shifter** — 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.
482
+
483
+ Categories: Effects · Worklets: freq-shifter
484
+
485
+ ### Ports
486
+
487
+ | Slug | Direction | Signal | Description |
488
+ |---|---|---|---|
489
+ | `in` | input | audio | **Audio Input** — Audio signal for frequency shifting. |
490
+ | `out` | output | audio | **Audio Output** — Alien, bell-like frequency-shifted audio output. |
491
+ | `modShift` | modulation | modulation | **Shift Amount** — Modulate the shift amount in Hz. An LFO here sweeps the sidebands for rotating, Leslie-like motion. |
492
+
493
+ ### Params
494
+
495
+ | Param | Default | Range | Description |
496
+ |---|---|---|---|
497
+ | `shift` | `0` | -500 – 500 Hz | **Frequency Shift** — Amount to shift all frequencies in Hz. Positive = up, negative = down. Automatable: `params.shift` is a native AudioParam. |
498
+ | `mix` | `1` | 0 – 1 | **Dry/Wet Mix** — Balance between original and frequency-shifted signal. Automatable: `params.mix` is a native AudioParam. |
499
+
500
+ ## GATE
501
+
502
+ `import { Gate } from '@jpdutoit/squelchy'`
503
+
504
+ **Noise Gate** — 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.
505
+
506
+ Categories: Dynamics · Worklets: env-follower
507
+
508
+ ### Ports
509
+
510
+ | Slug | Direction | Signal | Description |
511
+ |---|---|---|---|
512
+ | `in` | input | audio | **Audio Input** — Audio signal to be gated. |
513
+ | `out` | output | audio | **Audio Output** — Gated audio - silent when below threshold. |
514
+
515
+ ### Params
516
+
517
+ | Param | Default | Range | Description |
518
+ |---|---|---|---|
519
+ | `threshold` | `-40` | -60 – 0 dB | **Threshold** — Level below which the gate closes and silences audio. |
520
+ | `range` | `0.8` | 0 – 1 | **Range** — How much the signal is attenuated when gate is closed. 0=full mute, lower=gentler. |
521
+ | `attack` | `0.005` | 0.001 – 0.05 s (log) | **Attack** — How fast the gate opens when signal exceeds threshold. Short = tight, long = gentle fade-in. Automatable: `params.attack` is a native AudioParam. |
522
+ | `release` | `0.1` | 0.01 – 0.5 s (log) | **Release** — How fast the gate closes when signal falls below threshold. Automatable: `params.release` is a native AudioParam. |
523
+
524
+ ## GLIDE
525
+
526
+ `import { Glide } from '@jpdutoit/squelchy'`
527
+
528
+ **Glide / Portamento** — 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.
529
+
530
+ Categories: Modulators, Utility · Worklets: glide
531
+
532
+ ### Ports
533
+
534
+ | Slug | Direction | Signal | Description |
535
+ |---|---|---|---|
536
+ | `in` | input | pitch | **Pitch CV In** — Pitch CV to smooth. Works on any CV, but tuned for semitone-space pitch. |
537
+ | `gate` | input | gate | **Gate Input** — Gate signal for legato-only glide. New notes snap to pitch; held notes glide. Leave unconnected for always-on glide. |
538
+ | `out` | output | pitch | **Pitch CV Out** — Smoothed pitch CV with portamento. Connect to any V/OCT input. |
539
+
540
+ ### Params
541
+
542
+ | Param | Default | Range | Description |
543
+ |---|---|---|---|
544
+ | `time` | `0.1` | 0.01 – 10 s (log) | **Glide Time** — How long it takes to slide between pitches. Longer = more portamento. Automatable: `params.time` is a native AudioParam. |
545
+
546
+ ## HAAS
547
+
548
+ `import { HaasWidener } from '@jpdutoit/squelchy'`
549
+
550
+ **Haas Stereo Widener** — Uses micro-delays (1-35ms) to create stereo width from mono. The Haas effect tricks the ear into perceiving wider stereo image.
551
+
552
+ Categories: Stereo
553
+
554
+ ### Ports
555
+
556
+ | Slug | Direction | Signal | Description |
557
+ |---|---|---|---|
558
+ | `in` | input | audio | **Audio Input** — Mono signal to widen using Haas effect. |
559
+ | `out` | output | audio | **Stereo Output** — Stereo-widened audio using micro-delays. |
560
+
561
+ ### Params
562
+
563
+ | Param | Default | Range | Description |
564
+ |---|---|---|---|
565
+ | `delay` | `15` | 1 – 35 ms | **Micro-Delay** — Delay time in milliseconds (1–35 ms). The Haas effect range. |
566
+ | `side` | `"right"` | `left` / `right` | **Delayed Side** — Which channel receives the delay — left or right. |
567
+ | `mix` | `1` | 0 – 1 | **Effect Level** — Amount of stereo widening effect. 0 = mono passthrough, 1 = fully delayed side. Automatable: `params.mix` is a native AudioParam. |
568
+
569
+ ## H-TREM
570
+
571
+ `import { HarmonicTremolo } from '@jpdutoit/squelchy'`
572
+
573
+ **Harmonic Tremolo** — Fender Brownface-style tremolo that splits signal by frequency. Highs and lows pulse opposite to each other for lush, watery modulation.
574
+
575
+ Categories: Effects
576
+
577
+ ### Ports
578
+
579
+ | Slug | Direction | Signal | Description |
580
+ |---|---|---|---|
581
+ | `in` | input | audio | **Audio Input** — Audio signal for harmonic tremolo. |
582
+ | `out` | output | audio | **Audio Output** — Audio with frequency-split tremolo applied. |
583
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the tremolo LFO speed. |
584
+ | `modCrossover` | modulation | modulation | **Crossover CV** — Modulate the low/high crossover frequency. |
585
+
586
+ ### Params
587
+
588
+ | Param | Default | Range | Description |
589
+ |---|---|---|---|
590
+ | `rate` | `4` | 1 – 10 Hz | **Rate** — Tremolo LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
591
+ | `depth` | `0.7` | 0 – 1 | **Modulation Depth** — Intensity of the volume modulation. Split across the low- and high-band LFO gains, so it is set-only (no single AudioParam carries it). |
592
+ | `crossover` | `800` | 200 – 2000 Hz | **Crossover Frequency** — 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. Automatable: `params.crossover` is a native AudioParam. |
593
+
594
+ ## LADDER
595
+
596
+ `import { LadderFilter } from '@jpdutoit/squelchy'`
597
+
598
+ **Moog-style Ladder Filter** — 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.
599
+
600
+ Categories: Filters · Worklets: ladder-filter, map-voct-to-freq
601
+
602
+ ### Ports
603
+
604
+ | Slug | Direction | Signal | Description |
605
+ |---|---|---|---|
606
+ | `in` | input | audio | **Audio Input** — Audio signal to filter through the transistor-ladder model. |
607
+ | `out` | output | audio | **Audio Output** — Warm 24 dB/oct lowpass output. Passband thins slightly as resonance rises — authentic ladder behavior. |
608
+ | `modFreq` | modulation | modulation | **Cutoff V/Oct** — Modulate cutoff in semitones (V/Oct). ±12 = one octave. At full resonance this plays the self-oscillation like an oscillator. |
609
+ | `modRes` | modulation | modulation | **Resonance CV** — Resonance CV: +1 sweeps the full RES range (100% = self-oscillation), adds to the knob, clamped inside the filter. |
610
+
611
+ ### Params
612
+
613
+ | Param | Default | Range | Description |
614
+ |---|---|---|---|
615
+ | `note` | `83` | 15 – 135 notes | **Cutoff Note** — 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. Automatable: `params.note` is a native AudioParam. |
616
+ | `resonance` | `2.5` | 0 – 4 (sqrt) | **Resonance** — Feedback around the whole ladder. At 100% the filter self-oscillates into a sine you can play via the V/OCT input. |
617
+ | `drive` | `0.3` | 0 – 1 | **Input Drive** — Saturation inside the ladder loop — thicker and more compressed as you push it, just like overdriving the original circuit. Automatable: `params.drive` is a native AudioParam. |
618
+
619
+ ## LFO
620
+
621
+ `import { Lfo } from '@jpdutoit/squelchy'`
622
+
623
+ **Low Frequency Oscillator** — 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.
624
+
625
+ Categories: Modulators · Worklets: waveshaper
626
+
627
+ ### Ports
628
+
629
+ | Slug | Direction | Signal | Description |
630
+ |---|---|---|---|
631
+ | `out` | output | modulation | **Modulation Output** — Low frequency oscillation output. Connect to modulation inputs (purple ports) to animate parameters. |
632
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the LFO speed. |
633
+ | `modAmount` | modulation | modulation | **Amount CV** — Modulate the LFO output depth. |
634
+ | `modSkew` | modulation | modulation | **Skew Modulation** — Modulate waveshape symmetry. |
635
+ | `modShape` | modulation | modulation | **Shape Modulation** — Modulate waveshape curvature. |
636
+
637
+ ### Params
638
+
639
+ | Param | Default | Range | Description |
640
+ |---|---|---|---|
641
+ | `skew` | `0` | -1 – 1 | **Skew** — Waveform symmetry. 0 = symmetric; ±1 folds the cycle into a rising or falling ramp. Automatable: `params.skew` is a native AudioParam. |
642
+ | `shape` | `1` | -1 – 1 | **Shape** — Waveform curvature. +1 = sine, 0 = triangle, −1 = exact square. With skew ±1 and shape 0 the output is a saw. Automatable: `params.shape` is a native AudioParam. |
643
+ | `frequency` | `2` | -10 – 20 Hz | **Frequency** — Base oscillation rate, summed with the modRate input. 0 freezes the phase; negative values run the waveform backwards. Automatable: `params.frequency` is a native AudioParam. |
644
+ | `amount` | `12` | 0 – 500 semitones (sqrt) | **Amount** — Output scale: out swings ±amount (semitones when patched to a V/Oct-style mod input). modAmount is summed onto it. Automatable: `params.amount` is a native AudioParam. |
645
+
646
+ ## LO-FI
647
+
648
+ `import { LoFi } from '@jpdutoit/squelchy'`
649
+
650
+ **Lo-Fi Processor** — Lo-fi processor with saturation, lowpass filtering, vinyl noise, and pitch wobble. Perfect for vintage, degraded textures.
651
+
652
+ Categories: Distortion, Vintage
653
+
654
+ ### Ports
655
+
656
+ | Slug | Direction | Signal | Description |
657
+ |---|---|---|---|
658
+ | `in` | input | audio | **Audio Input** — Audio signal for vintage degradation. |
659
+ | `out` | output | audio | **Audio Output** — Warm, degraded lo-fi audio with vinyl character. |
660
+ | `modCutoff` | modulation | modulation | **Cutoff CV** — Modulate the lowpass cutoff frequency. |
661
+
662
+ ### Params
663
+
664
+ | Param | Default | Range | Description |
665
+ |---|---|---|---|
666
+ | `drive` | `0.3` | 0 – 1 | **Saturation** — Amount of warm tape-like saturation and compression. Rebuilds the waveshaper curve, so it is set-only (no single AudioParam carries it). |
667
+ | `cutoff` | `4000` | 500 – 8000 Hz | **Cutoff** — Lowpass filter frequency. Lower = more muffled, vintage sound. Automatable: `params.cutoff` is a native AudioParam. |
668
+ | `noise` | `0.2` | 0 – 1 | **Vinyl Noise** — 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). |
669
+ | `wobble` | `0.1` | 0 – 1 | **Wobble** — 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). |
670
+
671
+ ## M/S
672
+
673
+ `import { MidSide } from '@jpdutoit/squelchy'`
674
+
675
+ **Mid-Side Processor** — Encodes stereo into mid (center) and side (edges) components. Adjust balance for mono compatibility or extreme widening. Essential mastering tool.
676
+
677
+ Categories: Stereo
678
+
679
+ ### Ports
680
+
681
+ | Slug | Direction | Signal | Description |
682
+ |---|---|---|---|
683
+ | `in` | input | audio | **Stereo Input** — Stereo audio signal for M/S processing. |
684
+ | `out` | output | audio | **Stereo Output** — Processed stereo audio with adjusted M/S balance. |
685
+
686
+ ### Params
687
+
688
+ | Param | Default | Range | Description |
689
+ |---|---|---|---|
690
+ | `midGain` | `1` | 0 – 2 | **Mid Gain** — Controls the center/mono content of the stereo image. Automatable: `params.midGain` is a native AudioParam. |
691
+ | `sideGain` | `1` | 0 – 2 | **Side Gain** — Controls the stereo edges/differences between left and right. Automatable: `params.sideGain` is a native AudioParam. |
692
+
693
+ ## NOISE
694
+
695
+ `import { Noise } from '@jpdutoit/squelchy'`
696
+
697
+ **Noise Generator** — Produces random audio (white, pink, brown noise). Use for percussion, wind effects, or filter sweep textures.
698
+
699
+ Categories: Sources
700
+
701
+ ### Ports
702
+
703
+ | Slug | Direction | Signal | Description |
704
+ |---|---|---|---|
705
+ | `out` | output | audio | **Noise Output** — White, pink, or brown noise output. |
706
+ | `modLevel` | modulation | modulation | **Level CV** — Modulate output level. Connect an envelope for amplitude shaping or an LFO for tremolo. |
707
+
708
+ ### Params
709
+
710
+ | Param | Default | Range | Description |
711
+ |---|---|---|---|
712
+ | `noiseType` | `"white"` | `white` / `pink` / `brown` | **Noise Color** — White, pink, or brown noise spectrum. |
713
+ | `gain` | `0.3` | 0 – 1 | **Noise Level** — Output amplitude of the noise generator. Automatable: `params.gain` is a native AudioParam. |
714
+
715
+ ## OCTAVE
716
+
717
+ `import { Octaver } from '@jpdutoit/squelchy'`
718
+
719
+ **Analog Octaver** — 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.
720
+
721
+ Categories: Effects · Worklets: freq-divider
722
+
723
+ ### Ports
724
+
725
+ | Slug | Direction | Signal | Description |
726
+ |---|---|---|---|
727
+ | `in` | input | audio | **Audio Input** — Monophonic audio signal for octave processing. |
728
+ | `out` | output | audio | **Audio Output** — Dry signal blended with true divided sub-octaves and a tracked octave-up. |
729
+
730
+ ### Params
731
+
732
+ | Param | Default | Range | Description |
733
+ |---|---|---|---|
734
+ | `octDown2` | `0.3` | 0 – 1 | **Two Octaves Down** — Level of the ÷4 divided square wave — two octaves below the input. Automatable: `params.octDown2` is a native AudioParam. |
735
+ | `octDown1` | `0.5` | 0 – 1 | **One Octave Down** — Level of the ÷2 divided square wave — one octave below the input. Automatable: `params.octDown1` is a native AudioParam. |
736
+ | `dry` | `0.7` | 0 – 1 | **Dry Level** — Level of the original unprocessed signal. Automatable: `params.dry` is a native AudioParam. |
737
+ | `octUp` | `0` | 0 – 1 | **One Octave Up** — Level of the rectified octave-up voice, bandpassed around the tracked fundamental. Automatable: `params.octUp` is a native AudioParam. |
738
+
739
+ ## PHASER
740
+
741
+ `import { Phaser } from '@jpdutoit/squelchy'`
742
+
743
+ **Phaser Effect** — Creates swooshing, jet-like sweeps by splitting signal through allpass filters. Rate controls speed, depth the intensity, feedback adds resonance.
744
+
745
+ Categories: Time, Effects
746
+
747
+ ### Ports
748
+
749
+ | Slug | Direction | Signal | Description |
750
+ |---|---|---|---|
751
+ | `in` | input | audio | **Audio Input** — Audio signal for phase-shifting effect. |
752
+ | `out` | output | audio | **Audio Output** — Swooshing, jet-like phased audio output. |
753
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the phaser sweep speed. |
754
+ | `modFeedback` | modulation | modulation | **Feedback CV** — Modulate the resonance feedback amount. |
755
+ | `modMix` | modulation | modulation | **Mix CV** — Modulate the dry/wet balance. |
756
+
757
+ ### Params
758
+
759
+ | Param | Default | Range | Description |
760
+ |---|---|---|---|
761
+ | `rate` | `0.5` | 0.1 – 10 Hz | **Rate** — Phaser sweep LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
762
+ | `depth` | `0.7` | 0 – 1 | **Modulation Depth** — Intensity of the phase shifting effect. Split proportionally across the four allpass stage gains, so it is set-only (no single AudioParam carries it). |
763
+ | `feedback` | `0.6` | 0 – 0.9 | **Feedback** — Resonance amount. Higher values create more pronounced, whistling sweeps. modFeedback sums into the same AudioParam. Automatable: `params.feedback` is a native AudioParam. |
764
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Balance between original and phased signal, driven by one ConstantSource (linear law: dry = 1 − mix, wet = mix). Automatable: `params.mix` is a native AudioParam. |
765
+
766
+ ## PING
767
+
768
+ `import { PingPong } from '@jpdutoit/squelchy'`
769
+
770
+ **Ping Pong Delay** — Stereo delay that bounces between left and right channels. Creates wide, rhythmic echoes. Spread controls how far apart the bounces are panned.
771
+
772
+ Categories: Time · Worklets: ping-pong
773
+
774
+ ### Ports
775
+
776
+ | Slug | Direction | Signal | Description |
777
+ |---|---|---|---|
778
+ | `in` | input | audio | **Audio Input** — Audio signal for ping-pong delay. |
779
+ | `out` | output | audio | **Stereo Output** — Stereo delay with bouncing echoes. |
780
+
781
+ ### Params
782
+
783
+ | Param | Default | Range | Description |
784
+ |---|---|---|---|
785
+ | `time` | `0.3` | 0.1 – 1 s (log) | **Delay Time** — Time between each stereo bounce. Automatable: `params.time` is a native AudioParam. |
786
+ | `feedback` | `0.4` | 0 – 0.9 | **Feedback** — How much delayed signal feeds back for more repeats. Automatable: `params.feedback` is a native AudioParam. |
787
+ | `spread` | `1` | 0 – 1 | **Stereo Spread** — Controls how far left/right the bounces are panned. 0% = mono center, 100% = full stereo. |
788
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Balance between original and delayed signal. Automatable: `params.mix` is a native AudioParam. |
789
+
790
+ ## RESO
791
+
792
+ `import { Resonator } from '@jpdutoit/squelchy'`
793
+
794
+ **Resonator** — 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.
795
+
796
+ Categories: Filters · Worklets: map-voct-to-freq
797
+
798
+ ### Ports
799
+
800
+ | Slug | Direction | Signal | Description |
801
+ |---|---|---|---|
802
+ | `in` | input | audio | **Audio Input** — Audio signal to excite the resonator. |
803
+ | `out` | output | audio | **Audio Output** — Resonant, pitched harmonics from the input. |
804
+ | `voct` | input | pitch | **Root V/Oct** — Pitch CV from a keyboard or sequencer — every partial plays the incoming notes. |
805
+ | `modFreq` | modulation | modulation | **Root Modulation** — Sweeps every partial in semitones, ±12 = one octave. Patch an LFO here for vowel-like wobbles. |
806
+
807
+ ### Params
808
+
809
+ | Param | Default | Range | Description |
810
+ |---|---|---|---|
811
+ | `offset` | `57` | -48 – 108 semitones | **Root Pitch Offset** — 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. Automatable: `params.offset` is a native AudioParam. |
812
+ | `structure` | `0` | 0 – 1 | **Structure** — Harmonic spacing of the resonator partials. Left = standard harmonic series, center = bell-like, right = metallic/inharmonic. |
813
+ | `damping` | `0.5` | 0 – 1 | **Damping** — 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. |
814
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Balance between original and resonated signal. Automatable: `params.mix` is a native AudioParam. |
815
+
816
+ ## REVERB
817
+
818
+ `import { Reverb } from '@jpdutoit/squelchy'`
819
+
820
+ **Reverb Effect** — 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.
821
+
822
+ Categories: Time · Worklets: fdn-reverb
823
+
824
+ ### Ports
825
+
826
+ | Slug | Direction | Signal | Description |
827
+ |---|---|---|---|
828
+ | `in` | input | audio | **Audio Input** — Audio signal to add reverb to. |
829
+ | `out` | output | audio | **Audio Output** — Reverberant audio signal mixed with dry signal. |
830
+
831
+ ### Params
832
+
833
+ | Param | Default | Range | Description |
834
+ |---|---|---|---|
835
+ | `decay` | `2` | 0.1 – 8 s (log) | **Decay Time (RT60)** — How long the tail takes to fall 60 dB. Short = room, long = hall or cathedral. Automatable: `params.decay` is a native AudioParam. |
836
+ | `mix` | `0.3` | 0 – 1 | **Dry/Wet Mix** — Equal-power balance between original (dry) and reverberant (wet) signal. Automatable: `params.mix` is a native AudioParam. |
837
+
838
+ ## RING
839
+
840
+ `import { RingModulator } from '@jpdutoit/squelchy'`
841
+
842
+ **Ring Modulator** — Multiplies input with an internal carrier oscillator, creating metallic, bell-like, and robotic tones. Classic Dalek voice effect!
843
+
844
+ Categories: Effects · Worklets: map-voct-to-freq
845
+
846
+ ### Ports
847
+
848
+ | Slug | Direction | Signal | Description |
849
+ |---|---|---|---|
850
+ | `in` | input | audio | **Audio Input** — Audio signal for ring modulation. |
851
+ | `out` | output | audio | **Audio Output** — Metallic, bell-like ring-modulated audio output. |
852
+ | `voct` | input | pitch | **Carrier Pitch CV** — Pitch CV from a keyboard or sequencer — the carrier plays the incoming notes. |
853
+ | `modFreq` | modulation | modulation | **Carrier Modulation** — Sweeps the carrier in semitones, ±12 = one octave. Patch an LFO here for gliding sci-fi sidebands. |
854
+
855
+ ### Params
856
+
857
+ | Param | Default | Range | Description |
858
+ |---|---|---|---|
859
+ | `offset` | `69` | -48 – 108 semitones | **Carrier Pitch Offset** — 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. Automatable: `params.offset` is a native AudioParam. |
860
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Balance between original and ring-modulated signal. |
861
+
862
+ ## ROTARY
863
+
864
+ `import { Rotary } from '@jpdutoit/squelchy'`
865
+
866
+ **Rotary Speaker** — 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.
867
+
868
+ Categories: Effects, Vintage
869
+
870
+ ### Ports
871
+
872
+ | Slug | Direction | Signal | Description |
873
+ |---|---|---|---|
874
+ | `in` | input | audio | **Audio Input** — Audio signal for Leslie cabinet simulation. |
875
+ | `out` | output | audio | **Audio Output** — Stereo rotary output: Doppler and tremolo swirling between the two mics. |
876
+ | `modMix` | modulation | modulation | **Mix CV** — Modulate the dry/wet balance. |
877
+
878
+ ### Params
879
+
880
+ | Param | Default | Range | Description |
881
+ |---|---|---|---|
882
+ | `speed` | `"slow"` | `slow` / `fast` | **Speed Mode** — 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. |
883
+ | `slowRate` | `0.8` | 0.5 – 2 Hz | **Slow Rate** — Horn speed in chorale mode (the drum turns at 0.85× this). Applied via an inertia ramp, so it is set-only. |
884
+ | `fastRate` | `6` | 4 – 8 Hz | **Fast Rate** — Horn speed in tremolo mode (the drum turns at 0.85× this). Applied via an inertia ramp, so it is set-only. |
885
+ | `mix` | `0.7` | 0 – 1 | **Dry/Wet Mix** — Balance between original and rotary speaker signal, driven by one ConstantSource (linear law: dry = 1 − mix, wet = mix). Automatable: `params.mix` is a native AudioParam. |
886
+
887
+ ## SAT
888
+
889
+ `import { Saturator } from '@jpdutoit/squelchy'`
890
+
891
+ **Tape Saturator** — Adds warm analog-style harmonic saturation. Drive pushes into soft clipping, warmth adds low-end emphasis. Subtle grit to heavy crunch.
892
+
893
+ Categories: Distortion
894
+
895
+ ### Ports
896
+
897
+ | Slug | Direction | Signal | Description |
898
+ |---|---|---|---|
899
+ | `in` | input | audio | **Audio Input** — Audio signal for warm saturation. |
900
+ | `out` | output | audio | **Audio Output** — Warm, harmonically-rich saturated audio output. |
901
+
902
+ ### Params
903
+
904
+ | Param | Default | Range | Description |
905
+ |---|---|---|---|
906
+ | `drive` | `0.5` | 0 – 1 | **Drive** — How hard to push into saturation. Adds harmonics and soft compression. |
907
+ | `warmth` | `0.5` | 0 – 1 | **Warmth** — Low frequency emphasis for a thicker, analog-like tone. |
908
+ | `mix` | `1` | 0 – 1 | **Dry/Wet Mix** — Balance between clean and saturated signal. Automatable: `params.mix` is a native AudioParam. |
909
+
910
+ ## SHIMMER
911
+
912
+ `import { Shimmer } from '@jpdutoit/squelchy'`
913
+
914
+ **Shimmer Reverb** — 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.
915
+
916
+ Categories: Time · Worklets: pitch-shifter, fdn-reverb
917
+
918
+ ### Ports
919
+
920
+ | Slug | Direction | Signal | Description |
921
+ |---|---|---|---|
922
+ | `in` | input | audio | **Audio Input** — Audio signal for shimmer reverb processing. |
923
+ | `out` | output | audio | **Audio Output** — Ethereal, pitch-shifted reverb output. |
924
+
925
+ ### Params
926
+
927
+ | Param | Default | Range | Description |
928
+ |---|---|---|---|
929
+ | `decay` | `3` | 0.5 – 10 s (log) | **Reverb Decay** — RT60 of the reverb tank in seconds. |
930
+ | `pitch` | `12` | -12 – 24 semitones | **Pitch Shift** — 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. |
931
+ | `mix` | `0.5` | 0 – 1 | **Dry/Wet Mix** — Equal-power balance between dry signal and shimmer output — independent of the regen amount. Automatable: `params.mix` is a native AudioParam. |
932
+ | `shimmer` | `0.5` | 0 – 0.95 | **Shimmer Regen** — How much pitch-shifted signal is fed back into the tank. High = endless rising choir. Automatable: `params.shimmer` is a native AudioParam. |
933
+
934
+ ## LIMIT
935
+
936
+ `import { SoftLimiter } from '@jpdutoit/squelchy'`
937
+
938
+ **Soft Limiter** — Gentle brickwall limiting with soft knee. Prevents clipping while preserving dynamics. Use ceiling control to set maximum output level.
939
+
940
+ Categories: Dynamics
941
+
942
+ ### Ports
943
+
944
+ | Slug | Direction | Signal | Description |
945
+ |---|---|---|---|
946
+ | `in` | input | audio | **Audio Input** — Audio signal to be limited. |
947
+ | `out` | output | audio | **Audio Output** — Limited audio with controlled peaks. |
948
+
949
+ ### Params
950
+
951
+ | Param | Default | Range | Description |
952
+ |---|---|---|---|
953
+ | `drive` | `0.5` | 0 – 1 | **Input Drive** — Pushes signal into the limiter for more saturation and loudness. |
954
+ | `knee` | `0.5` | 0 – 1 | **Soft Knee** — How gradually limiting kicks in. Higher = softer, more transparent. |
955
+ | `ceiling` | `-0.5` | -12 – 0 dB | **Ceiling** — Maximum output level in dB. Prevents clipping above this level. |
956
+
957
+ ## SPRING
958
+
959
+ `import { SpringReverb } from '@jpdutoit/squelchy'`
960
+
961
+ **Spring Tank Reverb** — 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.
962
+
963
+ Categories: Time, Vintage · Worklets: spring-reverb
964
+
965
+ ### Ports
966
+
967
+ | Slug | Direction | Signal | Description |
968
+ |---|---|---|---|
969
+ | `in` | input | audio | **Audio Input** — Audio driven into the spring tank. Hit it hard and the springs overload into a crash. |
970
+ | `knock` | input | gate | **Knock Trigger** — Rising edge whacks the tank — a mechanical thump straight into the springs, like kicking the amp. Patch a clock for rhythmic dub crashes. |
971
+ | `out` | output | audio | **Audio Output** — Dry/wet blend of the spring tank — dispersive boing, flutter echoes and all. |
972
+
973
+ ### Params
974
+
975
+ | Param | Default | Range | Description |
976
+ |---|---|---|---|
977
+ | `mix` | `0.35` | 0 – 1 | **Dry/Wet Mix** — Equal-power blend of dry signal and spring output. Automatable: `params.mix` is a native AudioParam. |
978
+ | `decay` | `1.5` | 0.3 – 4 s (log) | **Reverb Decay** — Stretch/sag of the spring's dispersion — higher values ring longer and smear more. Automatable: `params.decay` is a native AudioParam. |
979
+ | `tone` | `0.6` | 0 – 1 | **Tone** — Brightness of the spring output: darkens the rattly top end as it falls. Automatable: `params.tone` is a native AudioParam. |
980
+ | `drip` | `0.5` | 0 – 1 | **Drip** — Spring bounce character — how much the delayed tail drips and boings. Automatable: `params.drip` is a native AudioParam. |
981
+
982
+ ## SPREAD
983
+
984
+ `import { StereoSpread } from '@jpdutoit/squelchy'`
985
+
986
+ **Stereo Spreader** — 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.
987
+
988
+ Categories: Stereo
989
+
990
+ ### Ports
991
+
992
+ | Slug | Direction | Signal | Description |
993
+ |---|---|---|---|
994
+ | `in` | input | audio | **Audio Input** — Audio signal for stereo spreading. |
995
+ | `out` | output | audio | **Audio Output** — Wide stereo audio with frequency-dependent Haas widening. |
996
+
997
+ ### Params
998
+
999
+ | Param | Default | Range | Description |
1000
+ |---|---|---|---|
1001
+ | `spread` | `0.7` | 0 – 1 | **Spread Amount** — Controls the micro-delay time for Haas widening (0–5ms). More spread = wider perceived stereo image. |
1002
+ | `center` | `800` | 200 – 2000 Hz (log) | **Crossover Frequency** — Frequency above which Haas spreading is applied. Lows below this stay centered for mono compatibility. |
1003
+
1004
+ ## SUB OCT
1005
+
1006
+ `import { Subharmonic } from '@jpdutoit/squelchy'`
1007
+
1008
+ **Sub Octave Generator** — Generates square waves one and two octaves below the input using zero-crossing frequency division, like classic analog octave pedals.
1009
+
1010
+ Categories: Sources · Worklets: freq-divider
1011
+
1012
+ ### Ports
1013
+
1014
+ | Slug | Direction | Signal | Description |
1015
+ |---|---|---|---|
1016
+ | `in` | input | audio | **Audio Input** — Audio signal for sub-octave generation. |
1017
+ | `out` | output | audio | **Audio Output** — Audio with added sub-octave content. |
1018
+
1019
+ ### Params
1020
+
1021
+ | Param | Default | Range | Description |
1022
+ |---|---|---|---|
1023
+ | `direct` | `1` | 0 – 1 | **Direct Level** — Level of the dry input signal passed through to the output. Automatable: `params.direct` is a native AudioParam. |
1024
+ | `octave1` | `0.5` | 0 – 1 | **Octave Down** — Level of the first sub-octave (one octave below input via ÷2 frequency division). Automatable: `params.octave1` is a native AudioParam. |
1025
+ | `octave2` | `0.3` | 0 – 1 | **Two Octaves Down** — Level of the second sub-octave (two octaves below input via ÷4 frequency division). Automatable: `params.octave2` is a native AudioParam. |
1026
+
1027
+ ## TAPE
1028
+
1029
+ `import { TapeDelay } from '@jpdutoit/squelchy'`
1030
+
1031
+ **Tape Echo** — 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.
1032
+
1033
+ Categories: Time, Vintage · Worklets: tape-delay
1034
+
1035
+ ### Ports
1036
+
1037
+ | Slug | Direction | Signal | Description |
1038
+ |---|---|---|---|
1039
+ | `in` | input | audio | **Audio Input** — Audio signal for warm tape echo processing. |
1040
+ | `out` | output | audio | **Audio Output** — Lush tape delay with wow, flutter, per-repeat darkening, and saturation. |
1041
+
1042
+ ### Params
1043
+
1044
+ | Param | Default | Range | Description |
1045
+ |---|---|---|---|
1046
+ | `time` | `0.375` | 0.05 – 1.5 s (log) | **Delay Time** — Echo time. Changes glide with a tape-style pitch bend instead of jumping. Automatable: `params.time` is a native AudioParam. |
1047
+ | `feedback` | `0.5` | 0 – 0.95 | **Feedback** — Repeat intensity. High values create dreamy, degrading echoes. Automatable: `params.feedback` is a native AudioParam. |
1048
+ | `mix` | `0.4` | 0 – 1 | **Dry/Wet Mix** — Balance between original and delayed signal. Automatable: `params.mix` is a native AudioParam. |
1049
+ | `flutter` | `0.3` | 0 – 1 | **Wow & Flutter** — Slow wow plus fast flutter — tape transport speed wobble, proportional to delay time. Automatable: `params.flutter` is a native AudioParam. |
1050
+ | `saturation` | `0.4` | 0 – 1 | **Saturation** — Tape saturation warmth and subtle compression, applied on every pass. Automatable: `params.saturation` is a native AudioParam. |
1051
+
1052
+ ## TAPE STOP
1053
+
1054
+ `import { TapeStop } from '@jpdutoit/squelchy'`
1055
+
1056
+ **Tape Stop Effect** — Classic DJ/producer tape-stop effect with real pitch-dropping slowdown via ring-buffer resampling. Trigger to toggle between stopped and playing.
1057
+
1058
+ Categories: Time · Worklets: tape-stop
1059
+
1060
+ ### Ports
1061
+
1062
+ | Slug | Direction | Signal | Description |
1063
+ |---|---|---|---|
1064
+ | `in` | input | audio | **Audio Input** — Audio signal to apply tape stop effect. |
1065
+ | `trigger` | input | gate | **Trigger Input** — Rising edge toggles between stop and start. Works with clock or audio-rate triggers. |
1066
+ | `out` | output | audio | **Audio Output** — Audio with tape stop/start effect applied. |
1067
+
1068
+ ### Params
1069
+
1070
+ | Param | Default | Range | Description |
1071
+ |---|---|---|---|
1072
+ | `time` | `0.5` | 0.01 – 4 s (log) | **Stop/Start Time** — Duration of the tape deceleration or acceleration ramp. Automatable: `params.time` is a native AudioParam. |
1073
+ | `mix` | `1` | 0 – 1 | **Dry/Wet Mix** — Balance between original signal and tape-stopped signal. Automatable: `params.mix` is a native AudioParam. |
1074
+
1075
+ ## TILT
1076
+
1077
+ `import { Tilt } from '@jpdutoit/squelchy'`
1078
+
1079
+ **Tilt EQ** — Single-knob tone control that tilts the frequency balance around a pivot point. Positive = brighter, negative = darker. Simple but powerful.
1080
+
1081
+ Categories: Filters
1082
+
1083
+ ### Ports
1084
+
1085
+ | Slug | Direction | Signal | Description |
1086
+ |---|---|---|---|
1087
+ | `in` | input | audio | **Audio Input** — Audio signal for tilt EQ processing. |
1088
+ | `out` | output | audio | **Audio Output** — Frequency-tilted audio output. |
1089
+
1090
+ ### Params
1091
+
1092
+ | Param | Default | Range | Description |
1093
+ |---|---|---|---|
1094
+ | `tilt` | `0` | -12 – 12 dB | **Tilt Amount** — Positive tilts towards highs (brighter), negative towards lows (darker). Drives the low shelf (inverted) and high shelf gains. |
1095
+ | `frequency` | `1000` | 200 – 5000 Hz | **Pivot Frequency** — Center frequency around which the tilt occurs, shared by both the low and high shelf filters. |
1096
+
1097
+ ## TREMOLO
1098
+
1099
+ `import { Tremolo } from '@jpdutoit/squelchy'`
1100
+
1101
+ **Tremolo Effect** — Classic amplitude modulation found in vintage amps. Creates pulsing, rhythmic volume changes. Square wave shape gives choppy helicopter effect.
1102
+
1103
+ Categories: Effects
1104
+
1105
+ ### Ports
1106
+
1107
+ | Slug | Direction | Signal | Description |
1108
+ |---|---|---|---|
1109
+ | `in` | input | audio | **Audio Input** — Audio signal for amplitude modulation. |
1110
+ | `out` | output | audio | **Audio Output** — Pulsing, rhythmic tremolo audio output. |
1111
+ | `modRate` | modulation | modulation | **Rate CV** — Modulate the tremolo LFO speed. |
1112
+
1113
+ ### Params
1114
+
1115
+ | Param | Default | Range | Description |
1116
+ |---|---|---|---|
1117
+ | `rate` | `5` | 0.5 – 20 Hz | **Rate** — Amplitude-modulation LFO speed, driven directly by the oscillator frequency. modRate sums into the same AudioParam. Automatable: `params.rate` is a native AudioParam. |
1118
+ | `depth` | `0.5` | 0 – 1 | **Modulation Depth** — 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). |
1119
+ | `shape` | `"sine"` | `sine` / `triangle` / `square` | **LFO Shape** — Waveform shape: sine for smooth, triangle for linear, square for choppy. |
1120
+
1121
+ ## VCA
1122
+
1123
+ `import { Vca } from '@jpdutoit/squelchy'`
1124
+
1125
+ **Voltage Controlled Amplifier** — 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.
1126
+
1127
+ Categories: Dynamics · Worklets: vca
1128
+
1129
+ ### Ports
1130
+
1131
+ | Slug | Direction | Signal | Description |
1132
+ |---|---|---|---|
1133
+ | `in` | input | audio | **Audio Input** — Audio signal to be amplified. |
1134
+ | `out` | output | audio | **Audio Output** — Amplified audio signal output. |
1135
+ | `modGain` | modulation | modulation | **Gain CV** — Modulate the level. Scaled by CV AMT and added to GAIN, then clamped to 0–2. Envelope for volume shaping, LFO for tremolo. |
1136
+
1137
+ ### Params
1138
+
1139
+ | Param | Default | Range | Description |
1140
+ |---|---|---|---|
1141
+ | `gain` | `0.5` | 0 – 2 | **Resting level** — 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. Automatable: `params.gain` is a native AudioParam. |
1142
+ | `cvAmount` | `1` | -1 – 1 | **CV attenuverter** — Scales the control voltage from the CV input. Negative values invert it, so the signal ducks instead of swelling. Automatable: `params.cvAmount` is a native AudioParam. |
1143
+
1144
+ ## VCF
1145
+
1146
+ `import { Vcf } from '@jpdutoit/squelchy'`
1147
+
1148
+ **Voltage Controlled Filter** — 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.
1149
+
1150
+ Categories: Filters · Worklets: map-res, map-voct-to-freq
1151
+
1152
+ ### Ports
1153
+
1154
+ | Slug | Direction | Signal | Description |
1155
+ |---|---|---|---|
1156
+ | `in` | input | audio | **Audio Input** — Audio signal to be filtered. |
1157
+ | `out` | output | audio | **Audio Output** — Filtered audio signal output. |
1158
+ | `modFreq` | modulation | modulation | **Cutoff V/Oct** — Modulate cutoff in semitones (V/Oct). ±12 = one octave. Connect an LFO or envelope for musical sweeps. |
1159
+ | `modQ` | modulation | modulation | **Resonance CV** — 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. |
1160
+
1161
+ ### Params
1162
+
1163
+ | Param | Default | Range | Description |
1164
+ |---|---|---|---|
1165
+ | `filterType` | `"lowpass"` | `lowpass` / `highpass` / `bandpass` / `notch` | **Filter Type** — Selects lowpass, highpass, bandpass, or notch response. |
1166
+ | `note` | `83` | 15 – 135 notes | **Cutoff Note** — 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. Automatable: `params.note` is a native AudioParam. |
1167
+ | `resonance` | `1` | 0.1 – 20 (sqrt) | **Resonance (Q)** — 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. |
1168
+
1169
+ ## VCO
1170
+
1171
+ `import { Vco } from '@jpdutoit/squelchy'`
1172
+
1173
+ **Voltage Controlled Oscillator** — 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.
1174
+
1175
+ Categories: Sources · Worklets: map-voct-to-freq, waveshaper
1176
+
1177
+ ### Ports
1178
+
1179
+ | Slug | Direction | Signal | Description |
1180
+ |---|---|---|---|
1181
+ | `voct` | input | pitch | **Pitch CV** — Pitch CV input — plays the oscillator chromatically from keyboard or sequencer CV. |
1182
+ | `out` | output | audio | **Audio Output** — Main audio signal output from the oscillator. |
1183
+ | `modSkew` | modulation | modulation | **Skew Modulation** — Modulate waveshape symmetry. At center = symmetric, fully right = sawtooth. |
1184
+ | `modShape` | modulation | modulation | **Shape Modulation** — Modulate waveshape curvature. Bottom = square, middle = triangle, top = sine. |
1185
+ | `modDetune` | modulation | modulation | **Detune Modulation** — Modulate fine pitch in semitones. Connect an LFO for vibrato (amount ~0.1–0.3). |
1186
+
1187
+ ### Params
1188
+
1189
+ | Param | Default | Range | Description |
1190
+ |---|---|---|---|
1191
+ | `skew` | `1` | -1 – 1 | **Waveshape Skew** — Symmetry of the waveform: −1 reversed sawtooth, 0 symmetric, +1 sawtooth. Automatable: `params.skew` is a native AudioParam. |
1192
+ | `shape` | `0` | -1 – 1 | **Waveshape Curvature** — Curvature of the waveform: −1 square, 0 triangle, +1 sine. Automatable: `params.shape` is a native AudioParam. |
1193
+ | `offset` | `69` | -48 – 108 semitones | **Pitch Offset** — 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. Automatable: `params.offset` is a native AudioParam. |
1194
+ | `detune` | `0` | -1 – 1 semitones | **Detune** — Fine pitch offset in semitones; ±1 = ±100 cents. Use for detuning oscillators against each other. Automatable: `params.detune` is a native AudioParam. |
1195
+ | `gain` | `0.5` | 0 – 1 | **Output Level** — Amplitude of the oscillator output signal. Automatable: `params.gain` is a native AudioParam. |
1196
+
1197
+ ## WAH
1198
+
1199
+ `import { Wah } from '@jpdutoit/squelchy'`
1200
+
1201
+ **Auto-Wah** — 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.
1202
+
1203
+ Categories: Filters, Effects · Worklets: map-voct-to-freq
1204
+
1205
+ ### Ports
1206
+
1207
+ | Slug | Direction | Signal | Description |
1208
+ |---|---|---|---|
1209
+ | `in` | input | audio | **Audio Input** — Audio signal for wah effect processing. |
1210
+ | `out` | output | audio | **Audio Output** — Funky, vocal-like wah audio output. |
1211
+ | `modFreq` | modulation | modulation | **Frequency V/Oct** — Modulate center frequency in semitones (V/Oct). Connect an envelope follower for auto-wah. |
1212
+
1213
+ ### Params
1214
+
1215
+ | Param | Default | Range | Description |
1216
+ |---|---|---|---|
1217
+ | `note` | `79` | 55 – 95 notes | **Center Note** — 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. Automatable: `params.note` is a native AudioParam. |
1218
+ | `resonance` | `8` | 1 – 20 (log) | **Resonance** — How pronounced and vocal the wah peak sounds. |
1219
+ | `rate` | `1` | 0.1 – 10 Hz (log) | **Auto-Wah Rate** — Speed of the automatic wah sweep in Hz. Automatable: `params.rate` is a native AudioParam. |
1220
+ | `depth` | `0.6` | 0 – 1 | **Modulation Depth** — How much the frequency sweeps. Full depth ≈ 3 octaves. |
1221
+
1222
+ ## FOLD
1223
+
1224
+ `import { Wavefolder } from '@jpdutoit/squelchy'`
1225
+
1226
+ **Wavefolder** — West Coast synthesis classic. Folds waveform peaks back on themselves, adding rich harmonics. Essential for complex timbres from simple waves.
1227
+
1228
+ Categories: Distortion
1229
+
1230
+ ### Ports
1231
+
1232
+ | Slug | Direction | Signal | Description |
1233
+ |---|---|---|---|
1234
+ | `in` | input | audio | **Audio Input** — Audio signal for waveshaping/folding. |
1235
+ | `out` | output | audio | **Audio Output** — Harmonically rich wavefolded audio output. |
1236
+
1237
+ ### Params
1238
+
1239
+ | Param | Default | Range | Description |
1240
+ |---|---|---|---|
1241
+ | `folds` | `2` | 1 – 10 | **Fold Amount** — How many times the waveform folds back. More folds = richer harmonics. |
1242
+ | `symmetry` | `0` | -1 – 1 | **Symmetry** — Asymmetric folding creates even harmonics for different timbres. |
1243
+ | `mix` | `1` | 0 – 1 | **Dry/Wet Mix** — Balance between original and wavefolded signal. Automatable: `params.mix` is a native AudioParam. |
1244
+