昨日というかもうほとんど一昨日のことだけど、google waveであの楽器みたいなgadgetを作ってみた。まだproof of conceptもいいところだけど。
あの楽器というのが実際にどういうものであるべきなのかは知らないが、タップしたら光ってランダムな図形を波状に表示して発音するもののようだ。とりあえずHTML Canvasの使い方を読んで、円と矩形を書くコードをjavascriptで書いてみて、ついでにjavascriptでアニメーションなんて初めてだったのでsetTimeoutの使い方まで読んで、それで実装してみた。ホンモノは三角形を出したり矩形も回転させたりするので、コレはいまいちな部類なのだけど、rotateで意外とハマったりしたので、まだやっていない。
これだけだとwaveの出番は全然無いので、同じwave gadgetを叩いたら、見ている人のところでも音が鳴るようにコールバックを設定してみた。最初無条件にコールバック経由の再生を処理していたら、自分が発音したときにもコールバックがかかってきて二度再生されていたので、実行ユーザでフィルタしてみたら、どう動作確認すればいいのか分からなくなってしまって、そのままにしてある。
音を出しているのはSiONというflashのシンセサイザエミュレータで、これは先日書いたflashとのinteropによって実現されている。これはSiON自体にそういうサンプルがあるのを流用しただけだ...結果的には。本当はnoteOn/noteOffのinteropを自分で定義して呼び出したかったのだけど、上手くいかず、そこに悩むのはwaveいじりとは関係ないと気付いたので今回は諦めた。
あの楽器自体はSiON interopのテスト的な感じでやってみたものなので、それ自体は目的とは言えない。が、proof of concept的なものが出来た今、作ろうと思っているのは別にある。
ピアノであれば連弾のようなことも出来るかもしれないが、演奏情報の通信の同期が期待できないので、その方向での応用は厳しいかもしれない。でもしばらく前に、上原ひろみがNYCと東京の間で連弾みたいなことをやっていた映像を見たことがあって、それくらいのことが現実に出来るようになる日も来るかもしれないとも思う。いずれにしろ今のwaveではそこまでの速度は出ない。
Leave a comment