小编sch*_*nky的帖子

Web音频振荡器仅在Firefox中单击

我正在尝试使用网络音频振荡器创建一个简单的节拍器,因此不需要外部音频文件.我通过非常快速地上下调节振荡器的音量来创建节拍器的声音(因为你不能多次使用start()和stop()),然后以设定的间隔重复该功能.它最终听起来像一个漂亮的小木块.

下面的代码在Chrome,Safari和Opera中运行/听起来很棒.但是在Firefox中,当音量增加时,会出现令人讨厌的间歇性"点击".我已经尝试改变攻击/释放时间以摆脱点击,但它们必须真的,很久才会一直消失.事实上,很长一段时间,振荡器听起来像一个持续的音符.

var audio = new (window.AudioContext || window.webkitAudioContext)();
var tick = audio.createOscillator();
var tickVol = audio.createGain();

tick.type = 'sine'; 
tick.frequency.value = 1000;
tickVol.gain.value = 0; //setting the volume to 0 before I connect everything
tick.connect(tickVol);
tickVol.connect(audio.destination);
tick.start(0);

var metronome = {
    start: function repeat() {
        now = audio.currentTime;

        //Make sure volume is 0 and that no events are changing it
        tickVol.gain.cancelScheduledValues(now);
        tickVol.gain.setValueAtTime(0, now);

        //Play the osc with a super fast attack and release so it sounds like a click …
Run Code Online (Sandbox Code Playgroud)

javascript firefox web-audio-api

6
推荐指数
1
解决办法
815
查看次数

标签 统计

firefox ×1

javascript ×1

web-audio-api ×1