July 20, 2007

ActionScript3での音生成

Written by Satoshi HORII | Flash , Synthesis

AS3では、ByteArrayクラスの実装によって、swfで音生成が可能なのではと仮説が出てきました。
http://blog.davr.org/2006/04/21/dynamic-sound-in-85
ここでの手法は、サウンドがアッタチされたswfをメモリ上に生成して音を生成してます。

それを元に、
http://blog.andre-michelle.com/2006/as3-audiocyclebuffer/
が出来て、TR-909が出来た。
LIVE@POPFORGE

これを作った、Andre Michelleが、popforgeという音響合成のライブラリをリリースしました。
http://code.google.com/p/popforge/

今のところ、Flex環境のみです。

SVNレポジトリから展開すると、クラスファイルと、サンプルファイルなどがあります。
そのサンプルファイルの内の"CreateASound"では、1秒のサイン波の音を生成します。
ソースの中の以下の部分で、音の波形を1サンプルごとに書き込んでるようなイメージでしょうか。
cm_wav.gif



//-- CREATE ONE SECOND OF AUDIO (SINUS WAVE)
for( var i: int = 0 ; i < 44100 ; i++ )
{
//-- create an amplitude [-1,1]
amplitude = Math.sin( phase * Math.PI * 2 );
//-- create a sample
sample = new Sample( amplitude, amplitude );
//-- push in array
samples.push( sample );
//-- increase phase
phase += freq / Audio.RATE44100;
}


この場合、変数amplitudeの扱い様で、シンプルな合成ができたりしそうだったので、
Maxパッチで書くと、以下のようになるように、してみたのが、こちら(画面をクリックしてください)。(FlashPlayer9以上が必要です)
cm_max.gif
クリック位置に応じた周波数の異なる音を生成します。
マウスリスナーと、3行ほど追加しただけです。

他のサンプル、"PlayWavfile"では、サウンドファイル再生でピッチコントロールをデモしてます。
サウンドファイルを変えただけで、そのままビルドしたものは、こちら
Directorでは標準でピッチコントロールが出来てたので、いろいろ遊んでたのを思い出します。

コンピュータ音楽?歴史・テクノロジー・アート
Curtis Roads 青柳 龍也 後藤 真孝
東京電機大学出版局 (2001/01)
売り上げランキング: 73108
おすすめ度の平均: 5.0
5 最高の一言
5 一家に一冊
5 この分野にとって偉大な一冊
ActionScript 3.0 アニメーション
Keith Peters 永井 勝則
ボーンデジタル (2007/10/30)
売り上げランキング: 1388

関連記事




次の記事

Nov 01, 07
Written by Katsuhiko Harada | Device , info
GAINERを使うためのチュートリアルや作品例など情報満載の書籍「+GAINER」が発売!! [Flash][Max/MSP][Processing]+Gainerで新しい体験を!!...

前の記事

Jul 03, 07
Written by Satoshi HORII | Flash , Max+Others
FLASHでOSC(OpenSoundControl)を可能にするfloscのAS3用のクラスが作成されてます。 Flosc...