Web Audio APIとWeb MIDI APIでパターンシーケンサー風楽器作った

Web Audio APIとWeb MIDI APIの応用例として楽器を作ってみました。
適当にボタンを押すだけでもそれっぽい曲になるので遊んでみてください。
 
http://aikelab.net/webrhy/
http://github.com/aike/webrhy

Webrhy

 
僕はYouTubeDenkitribeさんBakaOscillatorさんのパフォーマンスが大好きなんですが、あの域に達するにはそれなりの技術とアレンジ能力が必要でなかなか真似できるものではありません。
 
でも、このアプリをつかうと、わりとそれっぽい演奏が楽しめます。
 

 
それぞれのボタンにはパターンがわりあてられています。適当でかまわないのでリアルタイムにどんどん選んでいってください。なんとなく曲っぽくなるかと思います。慣れてきたら曲の展開や盛り上がりをつくったりもできます。ライブ演奏指向のアプリのため、パターンの並びをソングとしてあらかじめ組むことはできません(いまのところ)。
 
パターンは自作するのではなく、完全にランダムに生成されます。とはいえ、変な音にならないよういろいろ工夫しています。
シンセとベースは主和音や関連和音から音を選んだ単音フレーズにして、音がぶつからずに聞けるようにしています。シンセの方は、アクセント的にスケール音から生成したパターンをおりまぜています。
左端のパターン0はミュートです。その隣のパターン1はかならず主和音であるAmになるようにしたので、ちょっとカオスな感じになってきたらこのボタンを押すと落ち着いた感じに戻ります。
 
ドラムは、表拍の四分音符は必ずキックを鳴らして四つ打ちはくずさないようにしています。その上で右側に行くほど手数が増えて盛り上がるようなフレーズにしています。一番右端のパターンはスネアを連打するフィルインになっています。
 
その他、ショートカットキーとして[ESC]と[RETURN]は全ミュートになります。さんざん盛り上げて、フィルイン→全ミュートみたいにするとエンディングっぽくなります。
 
音源としては、あらかじめ内蔵されているWeb Audio APIを使ったシンセ音源の他、Web MIDI APIMIDI接続した外部音源も使用できます。
 

 
ウェブオーディオ/MIDIの大きな可能性として、ライブパフォーマンスへの応用があると思っています。おそらく本格的なレコーディング品質のアプリが出そろうにはまだ少し時間がかかり、その前にAbleton LiveKORG ELECTRIBE、volcaのような楽器と打ち込みの中間的な存在や、VJとの連携といったあたりにWebアプリが得意な分野があるような気がしています。