今回は ChannelMerger をつかってL・Rから別の音を再生します。
この音( http://jsrun.it/assets/G/9/D/7/G9D75.mp3 )とこの音( http://jsrun.it/assets/W/Z/8/F/WZ8Fo.mp3 ) をLRから出力してみましょう。
JavaScript
"use strict"; var audioCtx = new AudioContext(), merger = audioCtx.createChannelMerger(2); // チャンネル数; audioCtx.destination.channelCount = 2; merger.connect(audioCtx.destination); play("http://jsrun.it/assets/G/9/D/7/G9D75.mp3", 0); play("http://jsrun.it/assets/W/Z/8/F/WZ8Fo.mp3", 1); function play(path, channel) { var request = new XMLHttpRequest(); request.open("GET", path, true); request.responseType = "arraybuffer"; request.onload = function() { audioCtx.decodeAudioData(request.response, function(evt) { var source = audioCtx.createBufferSource(); source.buffer = evt; source.loop = true; source.connect(merger, 0, channel); source.start(); }); }; request.send(); }
厳密に同時に再生していないのでちょっとずれるかもしれません。
あと、前回もなんですけどきれいなループになっていないのが気になります。(GarageBandの書き出しがうまくいきませんでした)