Google Chrome の場合:
1 つの .wav ファイルが再生され、ループします。別の .wav ファイルが効果音として時々再生されます。
効果音が鳴ると、ループ音の音量が自動的に下がります。再び約 15 秒かけて徐々に音量が上がります。
(自動的にダッキングしていると思いますhttp://en.wikipedia.org/wiki/Ducking)
効果音の再生時にループの音量を下げたくありません。どうすればこの動作を防ぐことができますか?
例: http://www.matthewgatland.com/games/takedown/play/web/audiofail.html
window.AudioContext = window.AudioContext||window.webkitAudioContext;
var context = new AudioContext();
var play = function (buffer, loop) {
var source = context.createBufferSource();
source.buffer = buffer;
if (loop) source.loop = true;
source.connect(context.destination);
source.start(0);
};
var load = function (url, callback) {
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
request.onload = function() {
context.decodeAudioData(request.response, function(buffer) {
callback(buffer);
}, null);
};
request.send();
};
var musicSound;
var thudSound;
load("res/snd/music0.wav", function (buffer) {
musicSound = buffer;
});
load("res/snd/thud0.wav", function (buffer) {
thudSound = buffer;
});
サウンドがロードされたら、次を呼び出します。
play(musicSound, true); //start the music looping
//each time you call this, the music becomes quiet for a few seconds
play(thudSound, false);