Web Audio APIはじめました

(function () {
	var ctx = new webkitAudioContext();
	//console.log( ctx );
	var dst = ctx.destination;
	//console.log( dst );
	var buf = ctx.createBuffer( 1, 4096 * 4, ctx.sampleRate );
	var data = buf.getChannelData( 0 );
	for (var i=0; i<data.length; i++) {
		data[i] = ( i % Math.floor(44100 / 440) );
	}
	console.log( data );
	var src = ctx.createBufferSource();
	//console.log( src );
	src.buffer = buf;
	src.connect( dst );
	src.noteOn( 0 );
})();

なんか分かんないけど、こんな感じのコードで音が鳴った。
Canvasのように、まずcontextを取得するのは分かる。
W3CのAPIリファレンスを見ると、contextでいろいろ生成するみたい。
よく分かんないのでconsole.log()を使って、
何が入ってるのかChromeで確認しながら作業した。
(こういうとき英語読めたらいいなーって思う。)
とりあえず、エラーが出ないように、見よう見まねでコードを書いて、
きっと波形を入れればと思って、それっぽく初期化したら音が出た。

あと、Chromeでテストしてるけど、Chromeごと落ちることがあるらしく、
自分も1回落ちたけど、再現性はない。
下手なコードを書いたからとかじゃないらしい。
早くループさせたりフィルターをいじってみたいけど、
perlも待ってるのでバランス良くやる方向で。

おしまい。

10/26 追記
MacBookAirでスリープ解除してから
このスクリプト実行したらChromeごと落ちて、
そのあとは普通に音が鳴ったので、
このスクリプトは良くないのかも知れないです。

Leave a Comment