Signal & Gain
Signal, Param, Gain, Volume, and Channel provide low-level control over audio signal flow and parameter automation.
Param
Param represents an automatable audio parameter. Many properties on instruments, effects, and components return Param.t values.
1// Param is returned by many properties:2let vol = synth->Synth.volume // Param.t34// Get/set value5vol->Param.getValue() // float6vol->Param.setValue(-12.0)78// Automation9vol->Param.linearRampTo(-6.0, "1m")10vol->Param.exponentialRampTo(0.0, "2m")11vol->Param.rampTo(-3.0, "500ms")12vol->Param.setValueAtTime(-12.0, "0:0:0")1314// Advanced scheduling15vol->Param.linearRampToValueAtTime(0.0, "4m")16vol->Param.exponentialRampToValueAtTime(-6.0, "2m")17vol->Param.setTargetAtTime(-12.0, "0", 0.5)18vol->Param.cancelScheduledValues("0")19vol->Param.cancelAndHoldAtTime("1m")20vol->Param.setRampPoint("0")Signal
A schedulable signal value. Like Param but can be connected to other nodes.
1let sig = Signal.make()2let sig2 = Signal.makeWithValue(0.5)3let sig3 = Signal.makeWithOptions({4 value: 1.0,5 units: "number",6})78sig->Signal.getValue() // float9sig->Signal.setValue(0.75)10sig->Signal.maxValue // float11sig->Signal.minValue // float1213// Same scheduling as Param14sig->Signal.linearRampTo(1.0, "1m")15sig->Signal.rampTo(0.5, "2m")1617// Connect to other nodes18sig->Signal.connect(node->AudioNode.t)1920// Cast to Param or AudioNode21sig->Signal.asParam // Param.t22sig->Signal.asAudioNode // AudioNode.tGain
1let gain = Gain.make()2let gain2 = Gain.makeWithGain(0.5)3let gain3 = Gain.makeWithOptions({gain: 0.8})45gain->Gain.gain // Param.tVolume
1let vol = Volume.make()2let vol2 = Volume.makeWithVolume(-12.0)3let vol3 = Volume.makeWithOptions({volume: -6.0, mute: false})45vol->Volume.volume // Param.t6vol->Volume.mute // bool7vol->Volume.setMute(true)Channel
1let ch = Channel.make()2let ch2 = Channel.makeWithOptions({3 volume: -6.0,4 pan: 0.0,5 mute: false,6 solo: false,7})89ch->Channel.volume // Param.t10ch->Channel.pan // Param.t11ch->Channel.mute // bool12ch->Channel.solo // bool13ch->Channel.send("bus-name", -12.0) // returns Gain.t14ch->Channel.receive("bus-name")CrossFade
1let xfade = CrossFade.make()23xfade->CrossFade.fade // Param.t4xfade->CrossFade.a // Gain.t5xfade->CrossFade.b // Gain.t