2014-10-31 3 views
2

Итак, в настоящий момент два звука загружаются в буфер, который затем подключается к двум источникам. Как я могу назвать два звука в BufferLoader как «kick» и «hihat», а затем воспроизвести их с помощью kick.start (0). Я знаю, что это должно быть легко, но я не могу найти ничего в поисках.Web Audio API как назвать звуки

window.onload = init; 
var context = new AudioContext(); 
var bufferLoader; 

function init() { 

    bufferLoader = new BufferLoader(
    context, 
    [ 
     'kick.wav', 
     'hihat.wav', 
    ], 
    finishedLoading 
    ); 

    bufferLoader.load(); 
} 

function finishedLoading(bufferList) { 

    var source1 = context.createBufferSource(); 
    var source2 = context.createBufferSource(); 
    source1.buffer = bufferList[0]; 
    source2.buffer = bufferList[1]; 

    source1.connect(context.destination); 
    source2.connect(context.destination); 
    source1.start(0); 
    source2.start(0); 
}  

ответ

1

Вы можете использовать абстракции, которую я написал для себя, если вам нравится:

function audioFileLoader(fileDirectory) { 
    var soundObj = {}; 
    soundObj.fileDirectory = fileDirectory; 

    var getSound = new XMLHttpRequest(); 
    getSound.open("GET", soundObj.fileDirectory, true); 
    getSound.responseType = "arraybuffer"; 
    getSound.onload = function() { 
     audioContext.decodeAudioData(getSound.response, function(buffer) { 
      soundObj.soundToPlay = buffer; 

     }); 
    } 

    getSound.send(); 


    soundObj.play = function() { 
     var playSound = audioContext.createBufferSource(); 
     playSound.buffer = soundObj.soundToPlay; 
     playSound.connect(audioContext.destination) 
     playSound.start(audioContext.currentTime) 
    } 

    return soundObj; 

}; 

var snare = audioFileLoader("snare.mp3"); 


snare.play() 
Смежные вопросы