0
# Audio Effects
1
2
Comprehensive collection of audio effects including reverbs, delays, modulation, and distortion effects for processing audio signals.
3
4
## Capabilities
5
6
### Reverb Effects
7
8
Spatial reverb effects for creating sense of space and ambience.
9
10
```typescript { .api }
11
/**
12
* Convolution reverb using impulse responses
13
*/
14
class Reverb {
15
constructor(roomSize?: NormalRange);
16
17
/** Room size parameter */
18
roomSize: NormalRange;
19
20
/** Presets for different room types */
21
presets: {[name: string]: string};
22
23
/** Generate impulse response */
24
generate(): Promise<this>;
25
26
/** Connect to destination */
27
connect(destination: AudioNode): this;
28
}
29
30
/**
31
* Freeverb algorithm reverb
32
*/
33
class Freeverb {
34
constructor(roomSize?: NormalRange, dampening?: NormalRange);
35
36
/** Room size parameter */
37
roomSize: Signal<"normalRange">;
38
39
/** Dampening parameter */
40
dampening: Signal<"frequency">;
41
42
/** Wet/dry mix */
43
wet: Signal<"normalRange">;
44
}
45
46
/**
47
* John Chowning reverb algorithm
48
*/
49
class JCReverb {
50
constructor(roomSize?: NormalRange);
51
52
/** Room size parameter */
53
roomSize: Signal<"normalRange">;
54
}
55
```
56
57
### Delay Effects
58
59
Time-based delay effects for echoes and rhythmic patterns.
60
61
```typescript { .api }
62
/**
63
* Delay with feedback control
64
*/
65
class FeedbackDelay {
66
constructor(delayTime?: Time, feedback?: NormalRange);
67
68
/** Delay time */
69
delayTime: Signal<"time">;
70
71
/** Feedback amount */
72
feedback: Signal<"normalRange">;
73
74
/** Wet/dry mix */
75
wet: Signal<"normalRange">;
76
77
/** Connect to destination */
78
toDestination(): this;
79
}
80
81
/**
82
* Stereo ping-pong delay
83
*/
84
class PingPongDelay {
85
constructor(delayTime?: Time, feedback?: NormalRange);
86
87
/** Delay time */
88
delayTime: Signal<"time">;
89
90
/** Feedback amount */
91
feedback: Signal<"normalRange">;
92
93
/** Wet/dry mix */
94
wet: Signal<"normalRange">;
95
}
96
```
97
98
### Modulation Effects
99
100
Effects that modulate audio parameters over time.
101
102
```typescript { .api }
103
/**
104
* Chorus effect with multiple delayed voices
105
*/
106
class Chorus {
107
constructor(frequency?: Frequency, delayTime?: number, depth?: NormalRange);
108
109
/** LFO frequency */
110
frequency: Signal<"frequency">;
111
112
/** Delay time */
113
delayTime: number;
114
115
/** Modulation depth */
116
depth: NormalRange;
117
118
/** LFO type */
119
type: ToneOscillatorType;
120
121
/** Spread between voices */
122
spread: Degrees;
123
124
/** Start the LFO */
125
start(time?: Time): this;
126
127
/** Stop the LFO */
128
stop(time?: Time): this;
129
}
130
131
/**
132
* Phaser effect
133
*/
134
class Phaser {
135
constructor(frequency?: Frequency, octaves?: number, baseFrequency?: Frequency);
136
137
/** LFO frequency */
138
frequency: Signal<"frequency">;
139
140
/** Number of octaves */
141
octaves: number;
142
143
/** Base frequency for filtering */
144
baseFrequency: Frequency;
145
146
/** Feedback amount */
147
Q: Signal<"positive">;
148
}
149
150
/**
151
* Tremolo (amplitude modulation)
152
*/
153
class Tremolo {
154
constructor(frequency?: Frequency, depth?: NormalRange);
155
156
/** LFO frequency */
157
frequency: Signal<"frequency">;
158
159
/** Modulation depth */
160
depth: Signal<"normalRange">;
161
162
/** LFO type */
163
type: ToneOscillatorType;
164
165
/** Spread for stereo tremolo */
166
spread: Degrees;
167
168
/** Start the LFO */
169
start(time?: Time): this;
170
171
/** Stop the LFO */
172
stop(time?: Time): this;
173
}
174
175
/**
176
* Vibrato (frequency modulation)
177
*/
178
class Vibrato {
179
constructor(frequency?: Frequency, depth?: NormalRange);
180
181
/** LFO frequency */
182
frequency: Signal<"frequency">;
183
184
/** Modulation depth */
185
depth: Signal<"normalRange">;
186
187
/** LFO type */
188
type: "sine" | "square" | "triangle" | "sawtooth";
189
}
190
191
/**
192
* Auto-filter (filter sweep)
193
*/
194
class AutoFilter {
195
constructor(frequency?: Frequency, baseFrequency?: Frequency, octaves?: number);
196
197
/** LFO frequency */
198
frequency: Signal<"frequency">;
199
200
/** Modulation depth */
201
depth: Signal<"normalRange">;
202
203
/** Base frequency */
204
baseFrequency: Frequency;
205
206
/** Number of octaves to sweep */
207
octaves: number;
208
209
/** LFO type */
210
type: ToneOscillatorType;
211
212
/** Start the LFO */
213
start(time?: Time): this;
214
215
/** Stop the LFO */
216
stop(time?: Time): this;
217
218
/** Filter instance for additional configuration */
219
readonly filter: Filter;
220
}
221
222
/**
223
* Auto-panner
224
*/
225
class AutoPanner {
226
constructor(frequency?: Frequency);
227
228
/** LFO frequency */
229
frequency: Signal<"frequency">;
230
231
/** Modulation depth */
232
depth: Signal<"normalRange">;
233
234
/** LFO type */
235
type: ToneOscillatorType;
236
237
/** Start the LFO */
238
start(time?: Time): this;
239
240
/** Stop the LFO */
241
stop(time?: Time): this;
242
}
243
244
/**
245
* Auto-wah effect
246
*/
247
class AutoWah {
248
constructor(baseFrequency?: Frequency, octaves?: number, sensitivity?: Decibels);
249
250
/** Base frequency */
251
baseFrequency: Frequency;
252
253
/** Number of octaves */
254
octaves: number;
255
256
/** Input sensitivity */
257
sensitivity: Decibels;
258
259
/** Filter Q */
260
Q: Signal<"positive">;
261
262
/** Follower gain */
263
gain: Signal<"decibels">;
264
}
265
```
266
267
### Distortion Effects
268
269
Effects that add harmonic content and saturation.
270
271
```typescript { .api }
272
/**
273
* Waveshaping distortion
274
*/
275
class Distortion {
276
constructor(distortion?: NormalRange);
277
278
/** Distortion amount */
279
distortion: NormalRange;
280
281
/** Oversampling factor */
282
oversample: "none" | "2x" | "4x";
283
284
/** Wet/dry mix */
285
wet: Signal<"normalRange">;
286
}
287
288
/**
289
* Bit crusher for digital distortion
290
*/
291
class BitCrusher {
292
constructor(bits?: number);
293
294
/** Bit depth */
295
bits: Signal<"positive">;
296
297
/** Wet/dry mix */
298
wet: Signal<"normalRange">;
299
}
300
301
/**
302
* Chebyshev waveshaping
303
*/
304
class Chebyshev {
305
constructor(order?: number);
306
307
/** Polynomial order */
308
order: number;
309
310
/** Oversampling factor */
311
oversample: "none" | "2x" | "4x";
312
313
/** Wet/dry mix */
314
wet: Signal<"normalRange">;
315
}
316
```
317
318
### Pitch Effects
319
320
Effects that manipulate pitch and frequency content.
321
322
```typescript { .api }
323
/**
324
* Real-time pitch shifting
325
*/
326
class PitchShift {
327
constructor(shift?: number);
328
329
/** Pitch shift in semitones */
330
pitch: Signal<"cents">;
331
332
/** Window size for granular processing */
333
windowSize: number;
334
335
/** Delay time */
336
delayTime: Time;
337
338
/** Feedback amount */
339
feedback: Signal<"normalRange">;
340
341
/** Wet/dry mix */
342
wet: Signal<"normalRange">;
343
}
344
345
/**
346
* Frequency domain shifting
347
*/
348
class FrequencyShifter {
349
constructor(frequency?: Frequency);
350
351
/** Frequency shift amount */
352
frequency: Signal<"frequency">;
353
354
/** Wet/dry mix */
355
wet: Signal<"normalRange">;
356
}
357
```
358
359
### Stereo Effects
360
361
Effects that manipulate stereo field and imaging.
362
363
```typescript { .api }
364
/**
365
* Stereo width adjustment
366
*/
367
class StereoWidener {
368
constructor(width?: NormalRange);
369
370
/** Stereo width (0 = mono, 1 = normal, >1 = wider) */
371
width: Signal<"normalRange">;
372
}
373
```
374
375
**Usage Examples:**
376
377
```typescript
378
import { Synth, Reverb, FeedbackDelay, Chorus, start } from "tone";
379
380
await start();
381
382
// Create synth with effects chain
383
const synth = new Synth();
384
const chorus = new Chorus(4, 2.5, 0.5);
385
const delay = new FeedbackDelay("8n", 0.3);
386
const reverb = new Reverb(0.4);
387
388
// Connect in series
389
synth.chain(chorus, delay, reverb, Tone.getDestination());
390
391
// Play with effects
392
synth.triggerAttackRelease("C4", "4n");
393
394
// Animate effect parameters
395
reverb.roomSize = 0.8;
396
delay.feedback.rampTo(0.6, 2);
397
chorus.frequency.rampTo(8, 4);
398
```
399
400
## Types
401
402
```typescript { .api }
403
type BiquadFilterType = "lowpass" | "highpass" | "bandpass" | "lowshelf" | "highshelf" | "notch" | "allpass" | "peaking";
404
405
type ToneOscillatorType = "sine" | "square" | "triangle" | "sawtooth" | "sine2" | "sine3" | "sine4" | "sine5" | "sine6" | "sine7" | "sine8" | "triangle2" | "triangle3" | "triangle4" | "triangle5" | "triangle6" | "triangle7" | "triangle8" | "square2" | "square3" | "square4" | "square5" | "square6" | "square7" | "square8" | "sawtooth2" | "sawtooth3" | "sawtooth4" | "sawtooth5" | "sawtooth6" | "sawtooth7" | "sawtooth8" | string;
406
407
interface FeedbackDelayOptions {
408
delayTime: Time;
409
feedback: NormalRange;
410
wet: NormalRange;
411
maxDelay: number;
412
}
413
414
interface ReverbOptions {
415
roomSize: NormalRange;
416
dampening: NormalRange;
417
}
418
419
interface ChorusOptions {
420
frequency: Frequency;
421
delayTime: number;
422
depth: NormalRange;
423
type: "sine" | "square" | "triangle" | "sawtooth";
424
spread: Degrees;
425
}
426
427
interface DistortionOptions {
428
distortion: NormalRange;
429
oversample: "none" | "2x" | "4x";
430
wet: NormalRange;
431
}
432
```