生成正弦波并在浏览器中播放

Generate sine wave and play it in the browser

本文关键字:浏览器 播放 正弦波      更新时间:2023-09-26

我需要一个示例代码,它可以:

  1. 生成正弦波(样本阵列),然后生成

  2. 播放

所有这些都是在浏览器中使用JavaScript中的一些HTML5 API完成的。

(我正在标记这个网络音频,尽管我不能100%确定它是否适用)

这是如何使用跨浏览器AudioContext在浏览器中播放441赫兹正弦波音调。

window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
function playSound(arr) {
  var buf = new Float32Array(arr.length)
  for (var i = 0; i < arr.length; i++) buf[i] = arr[i]
  var buffer = context.createBuffer(1, buf.length, context.sampleRate)
  buffer.copyToChannel(buf, 0)
  var source = context.createBufferSource();
  source.buffer = buffer;
  source.connect(context.destination);
  source.start(0);
}
function sineWaveAt(sampleNumber, tone) {
  var sampleFreq = context.sampleRate / tone
  return Math.sin(sampleNumber / (sampleFreq / (Math.PI * 2)))
}
var arr = [],
  volume = 0.2,
  seconds = 0.5,
  tone = 441
for (var i = 0; i < context.sampleRate * seconds; i++) {
  arr[i] = sineWaveAt(i, tone) * volume
}
playSound(arr)