在Wed Audio API中淡化2个声音

时间:2017-08-02 09:33:23

标签: web-audio-api

我正试图在本页的钢琴应用程序中同时淡出2个声音:

http://www.intmath.com/trigonometric-graphs/music-note-frequencies-interactive.php

我正在使用“声音”方法,指数淡出在单音符模式下正常工作;

   vca.gain.exponentialRampToValueAtTime(0.001, audioContext.currentTime + 1);  
   oscillator.stop(audioContext.currentTime + 1);

然而,在选择“组合信号:是”(您听到220 Hz音符加上播放的音符)后,上述内容将正确淡出非220 Hz音符,但基本A-220以全音量播放关键时刻后整整1秒的持续时间。这很难看,特别是在小型扬声器上。

我现在已经在“合并”情况下禁用了淡出(两种声音都会立即停止,这比没有消失的情况更好。)

这是在按键上调用的函数:

function doUp(thisKey, e) {
  if(audioContext) {
     for(i=-1; i<18; i++) {     
        if( typeof(active_voices['key'+i]) != "undefined") {
            active_voices['key'+i].stop();
            delete active_voices['key'+i];  
        }
     }
  }
  audioOn = false;
} 

我尝试将中间“if”的第一行更改为以下内容,但它没有改进:

active_voices['key'+i].stop(audioContext.currentTime + 1);

如何同时淡出2个声音?

TIA。

0 个答案:

没有答案