# 音频源

# 媒体元素

MediaElementAudioSourceNode 媒体元素音频源接口,代表来自 HTML 媒体元素 <audio><video> 的音频源

# 媒体流

MediaStreamAudioSourceNode 媒体流音频源接口,表示来自 MediaStream 的音频源,比如 WebRTC,本地麦克风。

# 音频缓冲

AudioBuffer 音频片段接口,代表一段音频数据

可以通过 AudioContext.decodeAudioData()方法从音频文件创建

AudioBufferSourceNode 音频缓存源接口,表示一段音频数据组成的音频源

AudioBufferSourceNode 接口继承自 AudioScheduledSourceNode,表现为一个音频源,它包含了一些写在内存中的音频数据,通常储存在一个 ArrayBuffer 对象中。

async function loadSound(audioCtx, url) {
  const response = await fetch(url);
  // Turn into an array buffer of raw binary data
  const buffer = await response.arrayBuffer();
  // Decode the entire binary MP3 into an AudioBuffer
  const audioBuffer = await audioCtx.decodeAudioData(buffer);

  return audioBuffer;
}
async function init() {
  const audioBuffer = await loadSound("https://...");
  await audioContext.resume();
  const source = audioContext.createBufferSource();
  // Assign the loaded buffer
  source.buffer = audioBuffer;
  // Connect to destination
  source.connect(audioContext.destination);
  // play
  source.start(0);
}

# 振荡器

OscillatorNode 振荡器接口,用于产生波形(发生器)

OscillatorNode() 构造函数创建一个新 对象,该对象表示周期性波形,如正弦波,可选择设置节点的属性值以匹配指定对象中的值

const oscillatorNode = new OscillatorNode(audioCtx, options);

options

  • type 节点产生的波的形状,默认为sine。可选值:sine square sawtooth triangle custom
  • frequency 周期性波形的频率,单位是Hz。 默认值是 440.
  • detune
  • periodicWave
  • channelCount
  • channelCountMode
  • channelInterpretation