custom-audio-node-connect
custom-audio-node-connect
shims the AudioNode.connect
method and lets you choose which audio nodes to actually connect to each other.
This is useful if you want your own custom nodes/effects to be chainable just like any other node.
The code in this module is copied straight from the terrific tuna
by Theodeus. All cred goes there!
Installation
npm i -S custom-audio-node-connect
Usage
const ctx = // Every time `AudioNode.connect(someAudioNode)` is called, the `inputSelector`// function will be called to determine what to actually connect to.//// In this imaginary example, BitCrusher objects has an `input` property// which is a regular GainNode. If someAudioNode has an `input` property,// we let the connecting node connect to that, otherwise we just return// the node as is.const inputSelector = nodeinput || node // Create an AudioNode, here an oscillator, together with an instance// of our custom BitCrusher effect.const osc = ctxoscfrequencyvalue = 440const crushEffect = // Connecting now works seemlessly. You'll have to implement the// BitCrusher's `connect()` and `disconnect()` methods yourself. :(osccrushEffect
API
enableCustomConnects(audioContext, inputSelector)
audioContext
An AudioContext
instance.
inputSelector
AudioNode
A function that takes any object passed to AudioNode.connect()
and return and AudioNode
that the connecting node should connect to.
See also
audio-param-shim
- An AudioParam shim that lets you act on value changes in any way you wantTheodeus/tuna
- An audio effects library for the Web Audio API.