AudioContext
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
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
Non standard 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
, ouAudioContext.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 unAudioBufferSourceNode
AudioContext.createBufferSource()
-
Crée un objet
AudioBufferSourceNode
, qui peut être utilisé pour jouer et manipuler des données audio contenues dans un objetAudioBuffer
. LesAudioBuffer
s sont créés avec la fonctionAudioContext.createBuffer
ou retournés par la fonctionAudioContext.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é à unMediaStream
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é à unMediaStream
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'unOscillatorNode
. 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éponseXMLHttpRequest
quand l'attributresponseType
estarraybuffer
. 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 parAudioContext.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 parAudioContext.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
Specification |
---|
Web Audio API # AudioContext |
Compatibilité des navigateurs
BCD tables only load in the browser