Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

使用createOscillator播放特定频率声音

  在AudioAPI中,createOscillator方法可以创建一个固定频率的振荡器,或者说这个对象可以发出一个固定频率的声音。创建多个这个对象,把它与键盘操作关联起来,键盘就可以变得像电子琴一样使用。当然,由于频率是固定的,所以不太好听。
  下面例子中可以按键盘上中间的一排按键(A到K)来发出不同的声音。 <script>
var AudioContext=AudioContext||webkitAudioContext;
var context=new AudioContext;
//为每个键盘位对应一个频率
var s={65:256,83:288,68:320,70:341,71:384,72:426,74:480,75:512};
//为每个频率创建一个Oscillator
for(var i in s)
  value=s[i],
  s[i]=context.createOscillator(),
  s[i].frequency.value=value,
  s[i].start();
//键盘按下时将相应频率的Oscillator连接到输出源上
addEventListener("keydown",function(e){
  if(e=s[e.keyCode])e.connect(context.destination);
});
//键盘松开时将相应频率的Oscillator的连接取消
addEventListener("keyup",function(e){
  if(e=s[e.keyCode])e.disconnect();
});
</script>
  其实用createScriptProcessor也可以做到同样的效果,它需要程序不断的输入数据数组,处理起来比较麻烦,性能上也并不高。不过由于它的频率是可以调控的,所以可以发出很逼真的声音,甚至可以模拟各种乐器的音色。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^