日曜日, 5月 25, 2008

adobe made some noise

BIT-101のコード試してもSamplesCallbackEventがどこにあるのかわからず発狂しかけた。
Astro Dynamic Sound! » BIT-101 Blog
Joa Ebertがフルコードをzipでくれ!てるからそれ参考にした。
Simple Astro synthesizer at blog.je2050.de - Blog of Joa Ebert

最新のsdkをダウンロードしてパスを通す。
Download Flex 3 - Flex SDK - Confluence

flex-config.xmlも書き換えておくこと。
Targeting Flash Player 10 Beta with Flex SDK 3.0.x
osxのスタンドアローンのflash playerはないのかな。
コンパイルしたらとりあえずブラウザにdrag & dropしてる。

SDKの中にruntime/playerフォルダがあって、各OS毎のflash playerインストーラーがある。

そのうち環境構築も含めてまとまった記事を書く。

(11/1)書き直しました。不要なimportをなくして、akihiro kamijo: Flash Player 10 の動的サウンド生成機能 (Sound クラス)を参考にサンプル数を増やした。
さて、イベントハンドラ内では 2048 以上 8192 以下のサンプルデータを書き込みます。パフォーマンス上はできるだけ多くのサンプルデータを (つまり 8192 個) 書くのが有利と考えられます。


package {
import flash.display.Sprite;
import flash.media.Sound;
import flash.events.Event;
import flash.events.SampleDataEvent;

public class SoundTest extends Sprite{
private var sound:Sound;
private var freq:Number = 440;
private var rate:Number = 44100;
private var phase:Number = 0;

public function SoundTest() {
init();
}

private function init():void {
sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, sineWaveGenerator);
sound.play();
}

private function sineWaveGenerator(event:SampleDataEvent):void {
for(var i:int = 0; i < 8192; i++) {
phase += freq / rate;
var phaseAngle:Number = phase * Math.PI * 2;
var sample:Number = Math.sin(phaseAngle)*0.25;
event.data.writeFloat(sample);
event.data.writeFloat(sample);
}
}
}
}

0 件のコメント: