今回は ChannelSplitterNode をつかって入力を分けてみます。
具体的にはLとRに分解し、左右を入れ替えて再生してみましょう。
この音( http://jsrun.it/assets/a/0/D/c/a0Dco.mp3 )をLRで分解し、左右を入れ替えて再度くっつけます。
JavaScript
"use strict"; var audioCtx = new AudioContext(), splitter = audioCtx.createChannelSplitter(2), merger = audioCtx.createChannelMerger(2), request = new XMLHttpRequest();; audioCtx.destination.channelCount = 2; splitter.connect(merger, 0, 1); // LをRに splitter.connect(merger, 1, 0); // RをLに merger.connect(audioCtx.destination, 0); request.open("GET", "http://jsrun.it/assets/a/0/D/c/a0Dco.mp3", 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(splitter); source.start(); }); }; request.send(); }
無事に左右が入れ替わりました。