生成正弦波并在浏览器中播放 [英] Generate sine wave and play it in the browser

查看:191
本文介绍了生成正弦波并在浏览器中播放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一个示例代码:


  1. 生成正弦波(数组样品)然后

播放

全部在浏览器中使用JavaScript中的一些HTML5 API完成。

All done in browser using some HTML5 API in JavaScript.

(我正在标记此网络音频,尽管我不是100%确定它是适用的)

(I am tagging this web-audio, although I am not 100% sure it is applicable)

推荐答案

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

This is how to play 441 Hertz sine wave tone in the browser using the cross-browser AudioContext.

<script>
    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)
</script>

这篇关于生成正弦波并在浏览器中播放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆