Sazameki: Flashを使ったオーディオ操作のためのオンラインプラットホーム

Sazamekiとは、Adobe Flashを使ったオーディオ操作のためのオンラインオープンソースのプラットホームであり、同時にActionScript3ライブラリの名前でもあります。

「sazameki」を活用することで、Flash内でオンライン上で音を生成したり、また、その音をFlashで活用したり加工したりといったことできます。

Sazamekiの使用方法は以下のようです。使いしやすいと思いますね。

sazameki.coreは、Flash内で生成したり変更したりした波形データを、flash.media.Soundオブジェクトにコンバートするためのクラすです。波形データは、org.sazameki.audio.core.Sampleクラスのインスタンスの配列で表現します。また、その波形のサンプルレートなどの情報は、org.sazameki.audio.core.AudioSettingのインスタンスを作ってそこに指定します。

まず、はオンラインデモ

sazamek-flash-based-online-audio-manipulating-platform-with-AS3-open-source-library

では、サンプルソースコード:


package{
import flash.display.Sprite;
import org.sazameki.audio.core.AudioSetting;
import org.sazameki.audio.core.Sample;
import org.sazameki.audio.core.SoundFactory;
import org.sazameki.audio.events.AudioEvent;
class SazamekiCoreSample extends Sprite
{
public function SazamekiCoreSample():void
{
//convert signals(array of org.sazameki.core.Sample)
//to flash.media.Sound object
//generate samples
//波形データを生成します。
var samples:Array=makeNoiseSamples();
//stereo,44.1kHz,16bit audio.
//44.1kHz/16bit/ステレオの音声だ、ということを設定しておきます。
var audioSetting:AudioSetting=new AudioSetting(2,44100,16);
//prepare factory
//変換のためのクラスを準備します。
var factory:SoundFactory=new SoundFactory();
//add event listener to factory
//イベントリスナー登録します。※Sound生成完了するとAudioEvent.COMPLETEが呼ばれます。
factory.addEventListener(AudioEvent.COMPLETE,onCoreSoundCreated);
//generate flash.media.Sound Object
//生成。
factory.generateSound(samples,audioSetting);
}
private function makeNoiseSamples():Array
{
//simply generate 1sec(44100samples) noise
//1秒分(44100サンプル)のノイズを生成しています。
var arr:Array=new Array();
for(var i:int=0;i<44100;i++){ //SampleはSample.leftに左チャンネル、Sample.rightに右チャンネルのデータを入れます。 //-1から1までのNumberで指定します。 arr.push(new Sample(Math.random()-0.5,Math.random()-0.5)); } return arr; } private function onCoreSoundCreated(e:AudioEvent) { //AudioEvent.sound is Sound object //e(AudioEvent).soundに生成されたSoundオブジェクトが格納されています。 e.sound.play(); } } }

関連情報
公式サイト
processor指定の書き方

Leave a Reply

Your email address will not be published. Required fields are marked *