audio-param-transform
Apply multiple transforms with custom functions to Web Audio API AudioParams.
Install
$ npm install audio-param-transform
API
var extendTransform = require('audio-param-transform')
extendTransform(audioParam, audioContext)
Pass in the AudioParam you wish to add a transform()
method to and the relevant AudioContext.
Returns the extended param.
param.transform(func, defaultValue)
Returns an instance of TransformAudioParam applied to the target AudioParam which works the same as the base AudioParam, except applying the specified func(a, b)
to all values, ramps and curves.
If you do not specify a function, the specified value for this transform will override all previous transforms (if any).
TransformAudioParam#setValueAtTime(value, at)
TransformAudioParam#linearRampToValueAtTime(value, endTime)
TransformAudioParam#exponentialRampToValueAtTime(value, endTime)
TransformAudioParam#setValueCurveAtTime(float32ArrayCurve, at, duration)
TransformAudioParam#cancelScheduledValues(from)
TransformAudioParam#getValueAt(time)
Example
Creating a transpose param.
var extendTransform = require('audio-param-transform')
var audioContext = new AudioContext()
var oscillator = audioContext.createOscillator()
oscillator.connect(audioContext.destination)
var baseFrequencyParam = oscillator.frequency.transform()
var transposeParam = oscillator.frequency.transform(transpose)
var on = false
setInterval(function(){
if (on){
transposeParam.linearRampToValueAtTime(12, audioContext.currentTime + 0.3)
} else {
transposeParam.linearRampToValueAtTime(0, audioContext.currentTime + 0.3)
}
on = !on
}, 1000)
function transpose(a,b){
return a * Math.pow(2, (b || 0) / 12)
}