Web Audio APIでギター音源作ったよ
Web Audio APIを使ってメタルなエレキギターのパワーコードの音を鳴らすウェブ楽器を作りました。ASCIIキーボードでリフを弾いてるだけでちょっと楽しいです。
http://aikelab.net/pg01/
Web Audioを使ったシンセはいくつか作られてきましたが、サンプラー系の本格的な音源があまりないので試しに作ってみました。サンプラーといっても録音機能はないのでいわゆるRomplerです。
最近のモダンなサンプラーにはたいてい以下のような機能がついています。
・ベロシティレイヤー
・ラウンドロビン
・リリーストリガ
ベロシティレイヤーとは、鍵盤を叩く強さ(正確には速度)によって再生サンプルを切り替えるもので、大きい音ほど倍音が増えるような楽器の表現に欠かせません。
ラウンドロビンは、同じ音程の音を連続的に鳴らすときサンプラー特有の機械的な音にならないように、同じ音程のサンプリング音を複数用意して、それらを順番に鳴らすことで機械臭さを避けるものです。
リリーストリガは、鍵盤を押したときにサンプリング音を再生するだけでなく鍵盤を離したときにも別のサンプリング音を鳴らすものです。指と弦がこすれるノイズやリリース時の減衰のニュアンスの表現などリアルな音源によく使われます。
今回作ったギター音源ではこれらの機能をすべて実装しました。ベロシティレイヤーではミュート音とサスティン音の切り替えをおこなっています。ただしASCIIキーボードやマウスではベロシティを表現できないのでWebMidiLinkでメッセージ受信したときに使える機能です。
各音程のミュート音、サスティン音それぞれに対して4個ずつのサンプリング音を用意してラウンドロビンで回しています。これによりいわゆる「マシンガン効果」を防止しています。リリーストリガではサスティン音のノートオフ時に自然な減衰を付加しています。
Web Audio APIの使い方としては特に目新しいものではありませんがウェブ楽器を作るためのノウハウの参考にお試しください。