音声(サウンド)データの動的生成と再生
ActionScript 3.0にはByteArrayクラスがあり、任意のバイナリデータを生成することができます。
つまりどのようなフォーマットのデータも作成可能ということです。
この機能のおかげで、Flash 9では音声データを動的に生成して、そしてそれを再生できる可能性があります。
実際に実現してライブラリ化してる方がいたので、使ってみたいと思います。
参考URL : http://www.flashcodersbrighton.org/wordpress/?p=9
how to make actionscript 3 play generated pcm wave data
実行例
※ このFlashを見るにはFlash Player 9が必要です。
メインクラス
package
{
import flash.display.*;
import flash.events.*;
import nu.mine.flashnet.sound.core.*;
public class HelloDynamicSound extends Sprite
{
private var engine:PlaybackEngine;
public function HelloDynamicSound() {
var playbackBufferSize:uint = 2048 * 100;
// 音声データ生成クラス
var dataProvider:IAudioDataProvider = new SineWaveProvider();
// 再生エンジン
engine = new PlaybackEngine(dataProvider, playbackBufferSize);
engine.addEventListener(PlaybackEngine.READY, engineReady, false, 0, true);
}
private function engineReady(event:Event):void {
engine.start();
}
}
}
音声データ生成クラス(サイン波を生成)
package
{
import nu.mine.flashnet.sound.core.*;
public class SineWaveProvider extends AudioDataProvider
{
private var phase:Number;
public function SineWaveProvider() {
// 44.1kHz, 16 bit, 1 channel
var fmt:PCMSoundFormat = new PCMSoundFormat(44100, 16, 1);
super(fmt);
phase = 0.0;
}
protected override function fillBuffer(numSamples:uint):void {
for (var i:uint = 0; i < numSamples; i++) {
buffer.writeMonoSample(Math.sin(phase) * 0.1);
phase += 440 * (2 * Math.PI / soundFormat.sampleRate);
}
}
}
}
|