読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

WebGL + three.js + Web Audio API をいじる - 簡易シーケンサーを作る

WebGL three.js Web Audio API JavaScript HTML5 Audio

簡易シーケンサーを作る

なんとなくナムコ風の波形メモリ音源を作ってみている。8音同時発音できるようになったところで、MMLっぽいシーケンサーを作って鳴らしてみた。かなりいい加減なつくりだが、まあまあいい音が鳴るように思う。4ビットで32サンプルというものながら、デチューンとかショートディレイを使うと結構いい音がなるのだ。これはPSGをいい音にする昔ながらのテクニックである。若干プチっているが。。Web Audio APIの機能を使っているので下のテスト画面はChromeでないと動作しない。

タイミング制御はWeb Audio APIの仕組みを使っている。これを使わないとたぶんjavascriptタイマーの精度ではリズムが揺れ揺れになってしまうだろう。「A Tale of Two Clocks - Scheduling Web Audio with Precision」の記事がとても役に立った。ただAudioParamなプロパティは正確なタイミング制御ができるんだけれども、AudioParamでないものについては自前でタイミングを取らないといけない。これをどうするかが課題である。またバックグラウンドだとなんか音がおかしくなるんだよねぇ。フォアグラウンドに戻すと直る。なんでだろうか。。それらを解決・妥協・あきらめて、フロー制御できるようにしたりすればゲーム用としてはいいかなと思っている。

BGMはこれで鳴らすとして、効果音をどのように鳴らそうか。昔のナムコのゲームって効果音も譜面があったんだよね。べーマガの付録についてて、PSGのPLAY文で鳴らすことができた。速いフレーズで音階を上下するとほんと効果音になるんだよね。あとは爆発音やリズム用にノイズ・ジェネレーターを付けるかな。