/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ /* * The origin of this IDL file is * https://webaudio.github.io/web-audio-api/#BaseAudioContext */ enum AudioContextState { "suspended", "running", "closed" }; callback DecodeErrorCallback = undefined (DOMException error); callback DecodeSuccessCallback = undefined (AudioBuffer decodedData); [Exposed=Window] interface BaseAudioContext : EventTarget { readonly attribute AudioDestinationNode destination; readonly attribute float sampleRate; readonly attribute double currentTime; readonly attribute AudioListener listener; readonly attribute AudioContextState state; Promise resume(); attribute EventHandler onstatechange; [Throws] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long length, float sampleRate); Promise decodeAudioData(ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback); [Throws] AudioBufferSourceNode createBufferSource(); [Throws] ConstantSourceNode createConstantSource(); // ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, // optional unsigned long numberOfInputChannels = 2, // optional unsigned long numberOfOutputChannels = 2); [Throws] AnalyserNode createAnalyser(); [Throws] GainNode createGain(); // DelayNode createDelay(optional double maxDelayTime = 1); [Throws] BiquadFilterNode createBiquadFilter(); [Throws] IIRFilterNode createIIRFilter(sequence feedforward, sequence feedback); // WaveShaperNode createWaveShaper(); [Throws] PannerNode createPanner(); [Throws] StereoPannerNode createStereoPanner(); // ConvolverNode createConvolver(); [Throws] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6); [Throws] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6); // DynamicsCompressorNode createDynamicsCompressor(); [Throws] OscillatorNode createOscillator(); // PeriodicWave createPeriodicWave(sequence real, // sequence imag, // optional PeriodicWaveConstraints constraints); };