0
Web Audio APIを使用してマルチトラックオーディオプレーヤーを作成しようとしています。現在、私のプレイボタンのクリックがこのように扱われる...Web Audio API:複数のMediaElementAudioSourceNodeを同時に開始する
function playProject(){
var p = $(".play-button");
p.hide();
p.siblings('.pause-button').show();
for(var i=0 ; i<audio.length ; i++){
audio[i].play();
}
}
そして、私のウェブオーディオのセットアップは次のようになります...
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var audio = [];
var channelVolume = [];
var vol = audioCtx.createGain();
$(document).ready(function(){
var obj = JSON.parse('<?php echo $json ?>');
var audioPath = "../wp-content/themes/blankslate-child/projects/"+"<?php echo $data->name ?>"+"/";
var sources = [];
var merger = audioCtx.createChannelMerger(2);
for(var i = 0; i<obj.length;i++){
audio.push(new Audio());
audio[i].src = audioPath+obj[i].name;
audio[i].loop = true;
sources.push(audioCtx.createMediaElementSource(audio[i]));
channelVolume.push(audioCtx.createGain())
sources[i].connect(channelVolume[i]);
channelVolume[i].connect(merger,0,0);
}
merger.connect(vol);
vol.connect(audioCtx.destination);
})
基本的にIループ私のオーディオ要素の全てを通って、それらを再生。これが機能する間、私はそれがそれを行う最もクリーンな方法ではないかもしれないと感じます。単一の関数呼び出しですべてのオーディオソースを同時に再生する方法はありますか?
これはあなたの質問には答えませんが、JavaScriptへのデータのエコーについては注意が必要です。あなたがしなければならないことは、 'json_encode()'を使ってデータをスクリプトで使用するために安全にすることです。また、JSONを正しくJSに直接エコーした場合、JSでは 'JSON.parse()'は必要ありません。 – Brad
私はjsonエンコードを使って$ json変数@Brad – Yawnolly
を作成しましたが、あなたの 'audioPath'にはそれがありません。また、 'JSON.parse()'は必要ありません... JSONでエンコードされたオブジェクトを直接スクリプトにエコーすることができます。 – Brad