Skip to content

Effects

Effects process audio signals. Connect them between a source and the destination to modify the sound. All effects have a wet property to control the mix.

Reverb

1let reverb = Reverb.make()
2let reverb2 = Reverb.makeWithDecay(3.0)
3let reverb3 = Reverb.makeWithOptions({
4 decay: 2.5,
5 preDelay: 0.01,
6 wet: 0.8,
7})
8
9reverb->Reverb.decay // time
10reverb->Reverb.setDecay(4.0)
11reverb->Reverb.preDelay // time
12reverb->Reverb.wet // Param.t
13reverb->Reverb.ready // promise<unit>
14reverb->Reverb.generate() // promise<t>

Freeverb

1let verb = Freeverb.make()
2let verb2 = Freeverb.makeWithOptions({
3 roomSize: 0.8,
4 dampening: 3000.0,
5})
6
7verb->Freeverb.roomSize // Param.t
8verb->Freeverb.dampening // Param.t

FeedbackDelay

1let delay = FeedbackDelay.make()
2let delay2 = FeedbackDelay.makeWithOptions({
3 delayTime: "8n",
4 feedback: 0.3,
5 wet: 0.5,
6})
7
8delay->FeedbackDelay.delayTime // Param.t
9delay->FeedbackDelay.feedback // Param.t

PingPongDelay

1let ppd = PingPongDelay.make()
2let ppd2 = PingPongDelay.makeWithOptions({
3 delayTime: "4n",
4 feedback: 0.4,
5})

Chorus

1let chorus = Chorus.make()
2let chorus2 = Chorus.makeWithOptions({
3 frequency: 1.5,
4 delayTime: 3.5,
5 depth: 0.7,
6})
7
8chorus->Chorus.frequency // Param.t
9chorus->Chorus.delayTime // float
10chorus->Chorus.depth // float
11chorus->Chorus.start()

Distortion

1let dist = Distortion.make()
2let dist2 = Distortion.makeWithOptions({
3 distortion: 0.8,
4 oversample: "4x",
5})
6
7dist->Distortion.distortion // float
8dist->Distortion.setDistortion(0.5)

Phaser

1let phaser = Phaser.make()
2let phaser2 = Phaser.makeWithOptions({
3 frequency: 0.5,
4 octaves: 3,
5 baseFrequency: 350.0,
6})

Tremolo & Vibrato

1let trem = Tremolo.make()
2trem->Tremolo.start()
3trem->Tremolo.frequency // Param.t
4trem->Tremolo.depth // Param.t
5
6let vib = Vibrato.make()
7vib->Vibrato.frequency // Param.t
8vib->Vibrato.depth // Param.t

Other Effects

Additional effects include AutoFilter, AutoPanner, AutoWah, BitCrusher, Chebyshev, FrequencyShifter, JCReverb, PitchShift, and StereoWidener. They all follow the same pattern:

1// All effects follow this pattern:
2let effect = SomeEffect.make()
3// or
4let effect = SomeEffect.makeWithOptions({...})
5
6// Connect in a chain
7synth->Synth.asAudioNode
8->AudioNode.connect(effect->SomeEffect.asAudioNode)
9->AudioNode.toDestination
10
11// Control wet/dry mix
12effect->SomeEffect.wet // Param.t
13
14// Cleanup
15effect->SomeEffect.dispose()
Was this page helpful?