<audio> !
<audio controls
src="http://media.w3.org/2010/07/bunny/04-Death_Becomes_Fur.oga">
Votre navigateur ne supporte pas l'élément audio.
</audio>
Ou encore...
<audio controls="controls">
<source src="song.ogg" type="audio/ogg" />
<source src="/song.mp3" type="audio/mp3" />
Votre navigateur ne supporte pas l'élément audio.
</audio>
<video>, l'élément <audio> a une API JavaScript API,
et on peut lui associer des éléments <track>jeu testable à plusieurs sur http://jeuweb-amsel.rhcloud.com:8000/
try {
var context = new AudioContext();
...
}
catch(e) {
alert('Web Audio API n'est pas supporté par votre navigateur');
}
Les échantillons sont en mémoire vive (pas de streaming),
Jeux, applications musicales, etc.
Modèle de graphe pour les traitements temps réel.
var dogBarkingBuffer = null;
var context = new AudioContext();
function loadDogSound(url) {
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
// Decode asynchronously
request.onload = function() {
context.decodeAudioData(request.response, function(buffer) {
dogBarkingBuffer = buffer;
}, onError);
}
request.send();
}
var context = new AudioContext();
function playSound(buffer) {
// create sound source
var source = context.createBufferSource();
// What to play, an audio buffer
source.buffer = buffer;
// connect source to destination (speakers in that case)
source.connect(context.destination);
// Play the sound
source.start(0);
}
// Create the filter
var filter = context.createBiquadFilter();
// Create the audio graph.
source.connect(filter);
filter.connect(context.destination);
// Create and specify parameters for the low-pass filter.
filter.type = "lowpass"; // Low-pass filter. See BiquadFilterNode docs
filter.frequency.value = 440; // Set cutoff to 440 HZ
// Playback the sound.
source.start(0);
function gotStream(stream) {
var context = new AudioContext();
// Create an AudioNode from the stream.
var mediaStreamSource =
audioContext.createMediaStreamSource( stream );
// Connect it to the destination to hear yourself
// (or any other node for processing!)
mediaStreamSource.connect( audioContext.destination );
}
navigator.getUserMedia( {audio:true}, gotStream );
var context = new AudioContext();
// Create a source node with 1024, the number of samples to generate
// on each call. 0, our node has NO INPUTS as far as we just want to generate sound
// 2 for stereo...
var node = context.createScriptProcessor(1024, 0, 2);
// Specify the audio generation function
node.onaudioprocess = generateAudio;
// Connect the node to a destination, i.e. the audio output.
node.connect(context.destination);