不停止使用Web Audio API进行传播

时间:2016-05-21 12:06:16

标签: javascript web-audio keyevent stoppropagation

我正在使用键盘通过Web Audio API播放声音。

经过一些实验黑白键事件(使用字符键)后,我发现keydown和keyup最适合启动和停止WebAudio播放。

即:keydown开始播放合成音符,keyup停止播放。

然而,如果keydown持有太长时间,当然,keydown会被反复触发。我尝试过stopPropogation,preventDefault和stopImmediatePropogation。但是,似乎没有工作。

我希望在没有' keydown'多次射击。以下是我一直在使用的内容:

'use strict';

var keyCodes = [90, 83, 88, 68, 67, 86, 71, 66, 72, 78, 74, 77, 188];
var i = 0;
var audioCtx = new AudioContext(), osc;


window.addEventListener('keydown', function(e){

e.stopPropagation();
 var kv = e.which;
  var a = keyCodes.indexOf(kv);
  console.log(kv);

  if(kv == keyCodes[a]){
   osc = audioCtx.createOscillator();
   osc.frequency.value = 10 * a;
   osc.type = "triangle";
   osc.connect(audioCtx.destination);
   osc.start(0);
   console.log("yes");
 }   

});

window.addEventListener('keyup', function(e){
  osc.stop();
});

==>我希望只要按下按键,合成器就会响起,但是一旦释放按键,合成器就会停止。< ==

我已经读过(通过N.Zakas)拿着一把钥匙向下按下按键和按键,但是我在操纵这两个键时遇到了麻烦,以便得到我想要的东西。

有任何帮助吗?谢谢!

-Erik Kimsey

0 个答案:

没有答案