AudioNode
是音频图的节点,实现有:
1.<audio>
或video
元素;OscillatorNode
2.audio destination
3.中间处理模块(intermediate processing module)BiquadFilterNode
或ConvolverNode
4.音量控制,GainNode
每一个AudioNode
都有输入和输出,多个AudioNode
连接成一个图(graph).这个图保存在AudioContext
中,且每一个AudioNode
只能属于一个AudioContext
source node
没有输入,但有多个输出,可以用来生成声音.
destination node
没有输出,它所有的输入都直接播放.
processing node
既有输入又有输出,一个节点读取它的输入,做一些音频的处理,生成新的值输出或者只是让音频直接通过,比如AnalyserNode
在graph
中有多的node
会造成高延迟,所以应该将graph
做小,而且将用户控制的node
放在图的末尾,比如GainNode
,这样用户会立刻得到音量的变化的反馈.
构造
1.通过构造器创建
const analyserNode = new AnalyserNode(audioCtx, {
fftSize: 2048,
maxDecibels: -25,
minDecibels: -60,
smoothingTimeConstant: 0.5,
});
2.通过工厂方法创建
// factory method
const analyserNode = audioCtx.createAnalyser();
analyserNode.fftSize = 2048;
analyserNode.maxDecibels = -25;
analyserNode.minDecibels = -60;
analyserNode.smoothingTimeConstant = 0.5;
属性
属性 | 描述 |
---|---|
AudioNode.context | 返回BaseAudioContext |
AudioNode.numberOfInputs | 返回输入的个数 |
AudioNode.numberOfOutputs | 返回输出的个数 |
AudioNode.channelCount | 通道的个数 |
AudioNode.channelCountMode | |
AudioNode.channelInterpretation |
方法
方法 | 描述 |
---|---|
AudioNode.connect() | 将这个node的输出作为另一个node的输入 |
AudioNode.disconnect() | 断开链接 |
const audioCtx = new AudioContext();
const oscillator = new OscillatorNode(audioCtx);
const gainNode = new GainNode(audioCtx);
oscillator.connect(gainNode).connect(audioCtx.destination);
oscillator.context;
oscillator.numberOfInputs;
oscillator.numberOfOutputs;
oscillator.channelCount;
参考:
https://developer.mozilla.org/en-US/docs/Web/API/AudioNode