2012/06/25 (2012年06月 のアーカイブ)
お客様の中にWebシンセプログラマはいらっしゃいませんか
そろそろWebベースのシンセサイザーもなんとか作れる環境が整いつつあるのですが、今のところはまだ、音源部とシーケンサー部をまとめてクローズドなアプリにするしかありません。今後を考えるとここをどうするかが課題です。
やはり複数の楽器を同期運転したいですよね!! Web楽器のurlを指定してプラグインのように使う、というのができればなあ・・・
という事でまじめに考えて見た。
HTML5のpostMessageでクロスドメインの連携ができますので、ここにMIDIメッセージをのせてホストからWebシンセに送ります。パフォーマンスの問題もあるので今のところはやりとりするのはMIDIのみとして、音の出口はとりあえずそれぞれのWebシンセが WebAudioAPIなりを叩いて勝手に出します。
postMessageで送れるのは文字列のみなのでこんな感じのフォーマットにします。
"midi,90,3c,64"
頭の"midi"は識別子で後はmidiメッセージを16進文字列にしてコンマで繋いだだけです。コンマでsplitしてparseInt(str,16)で数値化できる感じです。取りあえずノートオン、ノートオフとオールサウンドオフができれば演奏はできます。
リズムマシンのようなプラグイン側にシーケンスを持っているものの場合はMIDI Syncを送ればよさそうですね。
という事でこちらにサンプルを作ってみました。
http://www.g200kg.com/en/docs/webmidilink/index.html
まだとてもプリミティブなものなのですが、WebModularを複数ロードして同時演奏します。ドメインをまたいでも大丈夫なはずなんですが、どなたかこんな感じで同期演奏やりませんか?
さっそくモハヨナオ @mohayonao氏が連携のサンプルを作ってくださいました!!
https://dl.dropbox.com/u/645229/webmodular-and-timbre/index.html
WebModularとtimbre.jsのリズム音源が連携して動作します!
http://script-synthesizer.herokuapp.com/
追加でtimbre.jsをシンセ化されています!!
さらにaike @aike1000氏のミニムーグ風WebSynthが対応してくださいました!!
WebMidiLinkページでInstrumentにURL(http://aikelab.net/websynth/)を入れると起動します。
Posted by g200kg : 2012/06/25 21:22:44