AudioContext

L'interface AudioContext représente un graphe de traitement audio fait de modules audio reliés entre eux, chaque module correspondant à un AudioNode. Un contexte audio contrôle à la fois la création des nœuds qu'il contient et l'exécution du traitement audio, ou du décodage. On commence toujours par créer un contexte audio, et tout ce qui va se passer ensuite se situera dans ce contexte.

Un contexte audio peut être la cible d'événements, par conséquent il implémente l'interface EventTarget.

Constructeur

AudioContext()
Crée et retourne un nouvel objet AudioContext.

Propriétés

AudioContext.currentTime Lecture seule
Renvoie un double flottant, qui représente un temps en secondes en augmentation continue, utilisé pour situer dans le temps. Il commence à 0.
AudioContext.destination Lecture seule
Retourne un AudioDestinationNode représentant la destination finale de tous les fichiers audio dans un contexte. On peut le considérer comme un dispositif de rendu audio.
AudioContext.listener Lecture seule
Renvoie l'objet AudioListener, utilisé pour la spatialisation 3D.
AudioContext.sampleRate Lecture seule
Renvoie un nombre flottant représentant la fréquence d'échantillonnage (échantillons par seconde) utilisée par tous les nœuds dans ce contexte.La fréquence d'échantillonnage d'un contexte audio ne peut pas être modifiée.
AudioContext.state Lecture seule
Renvoie l'état actuel du contexte audio.
AudioContext.mozAudioChannelType Lecture seule
Sur Firefox OS, utilisé pour renvoyer la piste audio dans laquelle sera jouée le son qui sera lancé dans le contexte audio.

Event handlers

AudioContext.onstatechange
Un gestionnaire d'évènement déclenché par un évènement du type statechange. Cela a lieu quand l'état du contexte audio change, en raison de l'appel des méthodes de changement d'état (AudioContext.suspend, AudioContext.resume, ou AudioContext.close.)

Méthodes

Met également en œuvre des méthodes de l'interface EventTarget.

AudioContext.close()
Supprime le contexte audio, et libère toutes les ressources audio système qu'il utilisait.
AudioContext.createBuffer()
Crée un nouvel objet AudioBuffer vide, auquel on pourra assigner des données et que l'on pourra jouer via un AudioBufferSourceNode
AudioContext.createBufferSource()
Crée un objet AudioBufferSourceNode, qui peut être utilisé pour jouer et manipuler des données audio contenues dans un objet AudioBuffer. Les AudioBuffers sont créés avec la fonction AudioContext.createBuffer ou retournés par la fonction AudioContext.decodeAudioData quand elle décode une piste audio avec succès.
AudioContext.createMediaElementSource()
Crée un objet MediaElementAudioSourceNode associé à HTMLMediaElement. Il peut être utilisé pour manipuler le son d'éléments <video> ou <audio>.
AudioContext.createMediaStreamSource()
Crée un objet MediaStreamAudioSourceNode associé à un MediaStream correspondant à un flux audio, qui peut provenir du microphone de l'ordinateur local ou d'autres sources.
AudioContext.createMediaStreamDestination()
Crée un objet MediaStreamAudioDestinationNode associé à un MediaStream correspondant à un flux audio, qui peut être stocké dans un fichier local ou envoyé à un autre ordinateur.
AudioContext.createScriptProcessor()
Crée un objet ScriptProcessorNode qui sert à faire du traitement audio directement avec JavaScript.
AudioContext.createStereoPanner()
Crée un objet StereoPannerNode qui permet d'appliquer une panoramique sonore à une source audio.
AudioContext.createAnalyser()
Crée un objet AnalyserNode qui expose les données de temps et de fréquence, et peut être utilisé pour créer des visualisations de données.
AudioContext.createBiquadFilter()
Crée un objet BiquadFilterNode, qui représente un filtre de deuxième niveau, qui combine différents types de filtres de base : fréquences hautes, fréquences basses, passe-bande, etc.
AudioContext.createChannelMerger()
Crée un objet ChannelMergerNode qui permet de rassembler les canaux de différents flux audio en un seul flux.
AudioContext.createChannelSplitter()
Crée un objet ChannelSplitterNode utilisé pour accéder aux différents canaux d'un même flux audio et les traiter séparément.
AudioContext.createConvolver()
Crée un objet ConvolverNode, qui permet d'appliquer des effets de convolution à un graphe audio, par exemple un effet de réverb.
AudioContext.createDelay()
Crée un objet DelayNode, utilisé pour retarder le signal audio entrant d'un certain temps. Il est également 
AudioContext.createDynamicsCompressor()
Crée un objet DynamicsCompressorNode qui permet d'appliquer une compression sur un signal audio.
AudioContext.createGain()
Crée un objet GainNode qui permet de controller le niveau sonore global d'un graphe audio.
AudioContext.createIIRFilter()
Crée un objet IIRFilterNode, qui représente un filtre de second ordre configurable comme différents types de filtres communs.
AudioContext.createOscillator()
Crée un objet OscillatorNode qui représente une onde périodique. Il génère simplement un son.
AudioContext.createPanner()
Crée un objet PannerNode utilisé pour spatialiser une source audio entrante dans un espace 3D.
AudioContext.createPeriodicWave()
Crée un objet PeriodicWave, utilisé pour définir une onde périodique qui peut être utilisée pour contrôler la sortie d'un OscillatorNode.
AudioContext.createWaveShaper()
Crée un objet WaveShaperNode, qui permet d'implémenter des effets de distorsion non linéaires.
AudioContext.createAudioWorker()
Crée un objet AudioWorkerNode, qui permet d'interagir avec un thread web worker afin de générer, traiter, ou analyser le son directement. Ajouté à la spec le 29 août 2014, mais encore implémenté par aucun des navigateurs à ce jour.
AudioContext.decodeAudioData()
Décode de façon asynchrone les données d'un fichier audio contenues dans un objet ArrayBuffer. Dans ce cas, le ArrayBuffer est en général chargé depuis un attribut de réponse XMLHttpRequest quand l'attribut responseType est arraybuffer. Cette méthode ne fonctionne que sur des fichiers complets, pas sur des fragments de fichiers.
AudioContext.resume()
Reprend le défilement du temps dans un contexte audio où il a précédemment été suspendu.
AudioContext.suspend()
Suspend le défilement du temps dans un contexte audio, empêchant de façon temporaire l'accès au hardware audio, et réduisant par là l'utilisation du CPU et de la batterie.

Méthodes obsolètes

AudioContext.createJavaScriptNode()
Crée un objet JavaScriptNode, utilisé pour un traitement audio directement en JavaScript. Cette méthode est obsolète, et a été remplacée par AudioContext.createScriptProcessor().
AudioContext.createWaveTable()
Crée un objet WaveTableNode, utilisé pour définir une onde audio périodique. Cette méthode est obsolète, et a été remplacée par AudioContext.createPeriodicWave().

Exemples

Déclaration basique d'un audio context :

var contexteAudio = new AudioContext;

Variante avec gestion de la compatibilité navigateur:

var AudioContext = window.AudioContext || window.webkitAudioContext;
var contexteAudio = new AudioContext();

var oscillatorNode = contexteAudio.createOscillator();
var gainNode = contexteAudio.createGain();
var finish = contexteAudio.destination;
// etc.

Spécifications

Spécification Statut Commentaire
Web Audio API
La définition de 'AudioNode' dans cette spécification.
Version de travail  

Compatibilité des navigateurs

 
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 10.0webkit
35
25.0 (25.0)  Pas de support 15.0webkit
22
6.0webkit
createStereoPanner() 42.0 37.0 (37.0)  Pas de support Pas de support Pas de support
onstatechangestate,suspend()resume() (Oui) 40.0 (40.0) Pas de support Pas de support Pas de support
Feature Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support Pas de support 37.0 (37.0)  2.2 Pas de support Pas de support Pas de support (Oui)
createStereoPanner() Pas de support (Oui) (Oui) Pas de support Pas de support Pas de support (Oui)
onstatechangestate,suspend()resume() Pas de support (Oui) (Oui)
 

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : marie-ototoi, fscholz, tregagnon, dexterneo
 Dernière mise à jour par : marie-ototoi,