Как синтезировать точные частоты на вспышке? - PullRequest
5 голосов
/ 05 апреля 2011

Я немного исследовал и нашел способ динамически генерировать звуки на флэш-памяти:

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)
 } 
}

Я просто хотел бы знать , как я могу заставить его генерировать точную частоту, которая мне нужна , например, 100 Гц.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 05 апреля 2011

Предполагая частоту дискретизации 44,1 кГц:

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);
2 голосов
/ 05 апреля 2011

Я написал много статей на тему синтеза звука во Flash в своем блоге.Вот несколько хороших мест для начала:

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

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

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

2 голосов
/ 05 апреля 2011

Если вы еще этого не сделали, проверьте http://lab.andre -michelle.com / . Человек делает классные вещи.

У него есть несколько примеров синтеза звука.

...