En essayant d'apprendre l'API audio, mais je reçois une erreur de référence non détectée pour la classe BufferLoader. Je suis sur chrome et c'est à jour. Cette classe ne devrait-elle pas fonctionner sans problèmes?
<html> <head> <script type=text/javascript> window.onload = init; var context; var bufferLoader; function init(){ context = new webkitAudioContext(); bufferLoader = new BufferLoader( context, [ ' https://dl.dropboxusercontent.com/u/1957768/kdFFO3.wav', ' https://dl.dropboxusercontent.com/u/1957768/geniuse%20meodies.wav', ], finishedLoading ); bufferLoader.load(); } function finishedLoading(bufferList){ //make two sources and play them 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); } </script> </head> <body> </body> </html>
La "classe" BufferLoader
est une fonction personnalisée créée pour abstraire l'utilisation de l'API Web Audio. Ce n'est pas une fonctionnalité intégrée, et doit être inclus dans votre page afin d'être utilisé; Il n'y a rien de spécial à propos de Chrome. Voici un exemple de l'expliqué: http://www.html5rocks.com/fr/tutorials/webaudio/intro/#toc-abstract
Pour l'utiliser, incluez ce code avant qu'il ne soit utilisé:
function BufferLoader(context, urlList, callback) { this.context = context; this.urlList = urlList; this.onload = callback; this.bufferList = new Array(); this.loadCount = 0; } BufferLoader.prototype.loadBuffer = function(url, index) { // Load buffer asynchronously var request = new XMLHttpRequest(); request.open("GET", url, true); request.responseType = "arraybuffer"; var loader = this; request.onload = function() { // Asynchronously decode the audio file data in request.response loader.context.decodeAudioData( request.response, function(buffer) { if (!buffer) { alert('error decoding file data: ' + url); return; } loader.bufferList[index] = buffer; if (++loader.loadCount == loader.urlList.length) loader.onload(loader.bufferList); }, function(error) { console.error('decodeAudioData error', error); } ); } request.onerror = function() { alert('BufferLoader: XHR error'); } request.send(); } BufferLoader.prototype.load = function() { for (var i = 0; i < this.urlList.length; ++i) this.loadBuffer(this.urlList[i], i); }