如何在闪光灯上合成精确的频率?

时间:2011-04-05 17:28:02

标签: flash actionscript-3 actionscript audio frequency

我研究了一下,我发现了一种在flash上​​动态生成声音的方法:

import flash.media.Sound;

var mySound:Sound = new Sound();

mySound.addEventListener(SampleDataEvent.SAMPLE_DATA, sineGenerateSound);

mySound.play();

function sineGenerateSound(event:SampleDataEvent):void{ 

 for(var i:int=0;i<4092;i++){  

  var n:Number = Math.sin((i+event.position)/Math.PI/4); 
  event.data.writeFloat(n)
  event.data.writeFloat(n)
 } 
}

我只想知道如何让它产生我需要的确切频率,例如100Hz。

谢谢!

3 个答案:

答案 0 :(得分:8)

假设采样率为44.1kHz:

var freq:Number = 100; // example, 100 Hz, set this somewhere outside the for loop   
var n:Number = Math.sin((i+event.position)*freq*2.0*Math.PI/44100.0);

答案 1 :(得分:2)

如果您还没有,请查看http://lab.andre-michelle.com/。那个男人做了一些很酷的事情。

他有一些合理的合成例子。

答案 2 :(得分:2)

我在博客上写过很多关于Flash音频合成主题的文章。以下是一些好的开始:

http://labs.makemachine.net/2010/06/note-frequency/

http://labs.makemachine.net/2010/06/sine-square-waves/

http://labs.makemachine.net/category/audio/