2011-04-05 21 views
5

我研究了一下,我發現了一種動態生成的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的。

謝謝!

回答

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); 
+0

非常感謝您!這個網站很棒,謝謝! – Lucas 2011-04-05 17:49:00

+0

盧卡斯,看起來你是新來的。要將答案標記爲已接受,請點擊旁邊的複選框。這樣做會獎勵聲望點給提供幫助的人。 – JeremyFromEarth 2011-04-05 18:03:03

+0

任務完成=)謝謝! – Lucas 2011-04-06 18:40:05