2016/01/20 (2016年01月 のアーカイブ)
Web Audio API メソッドチェーン
Web Audio API の WD10-Oct-2013 と WD08-Dec-2015 の違いとしてメソッドチェーンに関するサポートがあります。両者のIDLを並べてみるとこんな感じになります。
一番上の connect(AudioNode) の戻り値が void から AudioNode に変わっています。ここで返されるAudioNode は接続した先の AudioNode です。これで何がしたいのかというと...
var ctx = new AudioContext(); // オーディオコンテキストに...
var osc = ctx.createOscillator(); // オシレータと
var gain = ctx.crateGain(); // ゲインがあるとして
// 今までは
osc.connect(gain); // オシレータをゲインに繋いで
gain.connect(ctx.destination); // ゲインをデスティネーションに繋ぐ
//だったのが、これからは
osc.connect(gain).connect(ctx.destination); //オシレータ => ゲイン => デスティネーション を一気に繋ぐ
同じように AudioParam のオートメーションに関しても API が変更されています。
オートメーションメソッドの返り値が軒並み AudioParam に変更されています。 connect に比べるといまいちですが、こんな書き方でしょうか。
ctx = new AudioContext();
gain = ctx.createGain(); // ゲインがあります
// 今までは
gain.setValueAtTime(1, ctx.currentTime + 0.1); // 0.1Sec後に 1
gain.setValueAtTime(0, ctx.currentTime + 0.2); // 0.2Sec後に 0
// だったのがこれからは
gain.setValueAtTime(1, ctx.currentTime + 0.1).setValueAtTime(0, ctx.currentTime + 0.2);
// 一気に0.1Sec後に1、0.2Sec後に0
Posted by g200kg : 2016/01/20 17:27:39