google-closure-compiler
Version:
Check, compile, optimize and compress Javascript with Closure-Compiler
1,804 lines (1,445 loc) • 38.7 kB
JavaScript
/*
* Copyright 2012 The Closure Compiler Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview Definitions for the API related to audio.
* Definitions for the Web Audio API.
* This file is based on the W3C Working Draft 08 December 2015.
* @see http://www.w3.org/TR/webaudio/
*
* @externs
*/
/**
* @implements {EventTarget}
* @constructor
*/
function BaseAudioContext() {}
/** @type {!AudioDestinationNode} */
BaseAudioContext.prototype.destination;
/** @type {number} */
BaseAudioContext.prototype.sampleRate;
/** @type {number} */
BaseAudioContext.prototype.currentTime;
/** @type {!AudioListener} */
BaseAudioContext.prototype.listener;
/** @type {!AudioWorklet} */
BaseAudioContext.prototype.audioWorklet;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#BaseAudioContext for valid values
*/
BaseAudioContext.prototype.state;
/**
* @param {number} numberOfChannels
* @param {number} length
* @param {number} sampleRate
* @return {!AudioBuffer}
*/
BaseAudioContext.prototype.createBuffer = function(
numberOfChannels, length, sampleRate) {};
/**
* @param {!ArrayBuffer} audioData
* @param {function(!AudioBuffer)=} successCallback
* @param {function(?)=} errorCallback
* @return {!Promise<!AudioBuffer>}
*/
BaseAudioContext.prototype.decodeAudioData = function(
audioData, successCallback, errorCallback) {};
/**
* @return {!AudioBufferSourceNode}
*/
BaseAudioContext.prototype.createBufferSource = function() {};
/**
* @deprecated Use createAudioWorker instead
* @param {number=} bufferSize
* @param {number=} numberOfInputChannels_opt
* @param {number=} numberOfOutputChannels_opt
* @return {!ScriptProcessorNode}
*/
BaseAudioContext.prototype.createScriptProcessor = function(
bufferSize, numberOfInputChannels_opt, numberOfOutputChannels_opt) {};
/**
* @return {!AnalyserNode}
*/
BaseAudioContext.prototype.createAnalyser = function() {};
/**
* @return {!GainNode}
*/
BaseAudioContext.prototype.createGain = function() {};
/**
* @param {number=} maxDelayTime
* @return {!DelayNode}
*/
BaseAudioContext.prototype.createDelay = function(maxDelayTime) {};
/**
* @return {!BiquadFilterNode}
*/
BaseAudioContext.prototype.createBiquadFilter = function() {};
/**
* @return {!WaveShaperNode}
*/
BaseAudioContext.prototype.createWaveShaper = function() {};
/**
* @return {!PannerNode}
*/
BaseAudioContext.prototype.createPanner = function() {};
/**
* @return {!StereoPannerNode}
*/
BaseAudioContext.prototype.createStereoPanner = function() {};
/**
* @return {!ConvolverNode}
*/
BaseAudioContext.prototype.createConvolver = function() {};
/**
* @param {number=} numberOfOutputs
* @return {!ChannelSplitterNode}
*/
BaseAudioContext.prototype.createChannelSplitter = function(numberOfOutputs) {};
/**
* @param {number=} numberOfInputs
* @return {!ChannelMergerNode}
*/
BaseAudioContext.prototype.createChannelMerger = function(numberOfInputs) {};
/**
* @return {!ConstantSourceNode}
*/
BaseAudioContext.prototype.createConstantSource = function() {};
/**
* @return {!DynamicsCompressorNode}
*/
BaseAudioContext.prototype.createDynamicsCompressor = function() {};
/**
* @return {!OscillatorNode}
*/
BaseAudioContext.prototype.createOscillator = function() {};
/**
* @param {!Float32Array} real
* @param {!Float32Array} imag
* @return {!PeriodicWave}
*/
BaseAudioContext.prototype.createPeriodicWave = function(real, imag) {};
/**
* @return {!Promise<void>}
*/
BaseAudioContext.prototype.resume = function() {};
/**
* @return {!Promise<void>}
*/
BaseAudioContext.prototype.suspend = function() {};
/**
* @return {!Promise<void>}
*/
BaseAudioContext.prototype.close = function() {};
/** @type {?function(!Event)} */
BaseAudioContext.prototype.onstatechange;
/**
* @param {string} scriptURL
* @return {!Promise<!AudioWorker>}
*/
BaseAudioContext.prototype.createAudioWorker = function(scriptURL) {};
/**
* @param {!IArrayLike<number>} feedforward
* @param {!IArrayLike<number>} feedback
* @return {!IIRFilterNode}
*/
BaseAudioContext.prototype.createIIRFilter = function(feedforward, feedback) {};
/**
* @return {!SpatialPannerNode}
*/
BaseAudioContext.prototype.createSpatialPanner = function() {};
/**
* @record
* @see https://webaudio.github.io/web-audio-api/#idl-def-AudioContextOptions
*/
function AudioContextOptions() {};
/** @type {(undefined|string|number)} */
AudioContextOptions.prototype.latencyHint;
/** @type {(undefined|number)} */
AudioContextOptions.prototype.sampleRate;
/**
* Includes the non-standard contextOptions optional options parameter
* implemented by Chrome and Firefox.
* @param {!AudioContextOptions=} contextOptions
* @constructor
* @extends {BaseAudioContext}
*/
function AudioContext(contextOptions) {}
/** @type {number} */
AudioContext.prototype.baseLatency;
/** @type {number} */
AudioContext.prototype.outputLatency;
/**
* @param {!HTMLMediaElement} mediaElement
* @return {!MediaElementAudioSourceNode}
*/
AudioContext.prototype.createMediaElementSource = function(mediaElement) {};
/**
* @return {!MediaStreamAudioDestinationNode}
*/
AudioContext.prototype.createMediaStreamDestination = function() {};
/**
* @param {!MediaStream} mediaStream
* @return {!MediaStreamAudioSourceNode}
*/
AudioContext.prototype.createMediaStreamSource = function(mediaStream) {};
/**
* @deprecated Use createScriptProcessor instead.
* @param {number} bufferSize
* @param {number} numberOfInputs
* @param {number} numberOfOuputs
* @return {!ScriptProcessorNode}
*/
AudioContext.prototype.createJavaScriptNode = function(
bufferSize, numberOfInputs, numberOfOuputs) {};
/**
* @deprecated Use createGain instead.
* @return {!GainNode}
*/
AudioContext.prototype.createGainNode = function() {};
/**
* @deprecated Use createDelay instead.
* @param {number=} maxDelayTime
* @return {!DelayNode}
*/
AudioContext.prototype.createDelayNode = function(maxDelayTime) {};
/**
* @return {!AudioTimestamp}
*/
AudioContext.prototype.getOutputTimestamp = function() {};
/**
* @record
*/
function AudioTimestamp() {};
/** @type {number} */
AudioTimestamp.prototype.contextTime;
/** @type {number} */
AudioTimestamp.prototype.performanceTime;
/**
* @param {number} numberOfChannels
* @param {number} length
* @param {number} sampleRate
* @constructor
* @extends {BaseAudioContext}
*/
function OfflineAudioContext(numberOfChannels, length, sampleRate) {}
/**
* @return {!Promise<!AudioBuffer>}
*/
OfflineAudioContext.prototype.startRendering = function() {};
/** @type {function(!OfflineAudioCompletionEvent)} */
OfflineAudioContext.prototype.oncomplete;
/**
* @constructor
* @extends {Event}
*/
function OfflineAudioCompletionEvent() {}
/** @type {AudioBuffer} */
OfflineAudioCompletionEvent.prototype.renderedBuffer;
/**
* @constructor
* @implements {EventTarget}
* @see https://www.w3.org/TR/webaudio/#the-audionode-interface
*/
function AudioNode() {}
/**
* @override
*/
AudioNode.prototype.addEventListener = function(
type, listener, opt_useCapture) {};
/**
* @override
*/
AudioNode.prototype.removeEventListener = function(
type, listener, opt_useCapture) {};
/**
* @override
* @return {boolean}
*/
AudioNode.prototype.dispatchEvent = function(evt) {};
/**
* @param {!AudioNode|!AudioParam} destination
* @param {number=} output
* @param {number=} input
* @return {AudioNode|void}
*/
AudioNode.prototype.connect = function(destination, output, input) {};
/**
* @param {!AudioNode|!AudioParam|number=} destination
* @param {number=} output
* @param {number=} input
*/
AudioNode.prototype.disconnect = function(destination, output, input) {};
/** @type {!AudioContext} */
AudioNode.prototype.context;
/** @type {number} */
AudioNode.prototype.numberOfInputs;
/** @type {number} */
AudioNode.prototype.numberOfOutputs;
/** @type {number} */
AudioNode.prototype.channelCount;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-audionode-interface for valid values
*/
AudioNode.prototype.channelCountMode;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-audionode-interface for valid values
*/
AudioNode.prototype.channelInterpretation;
/**
* @constructor
* @extends {AudioNode}
*/
function AudioScheduledSourceNode() {}
/** @type {?function(!Event)} */
AudioScheduledSourceNode.prototype.onended;
/**
* @param {(number|undefined)} when
* @return {undefined}
*/
AudioScheduledSourceNode.prototype.start = function(when) {};
/**
* @param {(number|undefined)} when
* @return {undefined}
*/
AudioScheduledSourceNode.prototype.stop = function(when) {};
/**
* @constructor
* @extends {AudioNode}
*/
function AudioSourceNode() {}
/**
* @constructor
* @extends {AudioNode}
*/
function AudioDestinationNode() {}
/**
* @deprecated Use AudioDestinationNode#maxChannelCount
* @type {number}
*/
AudioDestinationNode.prototype.numberOfChannels;
/** @type {number} */
AudioDestinationNode.prototype.maxChannelCount;
/**
* @constructor
*/
function AudioParam() {}
/** @type {number} */
AudioParam.prototype.value;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#dom-audioparam-automationrate for valid
* values.
*/
AudioParam.prototype.automationRate;
/**
* @deprecated
* @type {number}
*/
AudioParam.prototype.maxValue;
/**
* @deprecated
* @type {number}
*/
AudioParam.prototype.minValue;
/** @type {number} */
AudioParam.prototype.defaultValue;
/**
* @deprecated
* @type {number}
*/
AudioParam.prototype.units;
/**
* @param {number} value
* @param {number} startTime
* @return {!AudioParam}
* @throws {!TypeError} if startTime is negative or not a finite number
*/
AudioParam.prototype.setValueAtTime = function(value, startTime) {};
/**
* @param {number} value
* @param {number} endTime
* @return {!AudioParam}
* @throws {!TypeError} if endTime is negative or not a finite number
*/
AudioParam.prototype.linearRampToValueAtTime = function(value, endTime) {};
/**
* @param {number} value
* @param {number} endTime
* @return {!AudioParam}
* @throws {!TypeError} if endTime is negative or not a finite number
*/
AudioParam.prototype.exponentialRampToValueAtTime = function(value, endTime) {};
/**
* @param {number} target
* @param {number} startTime
* @param {number} timeConstant
* @return {!AudioParam}
* @throws {!TypeError} if startTime is negative or not a finite number, or
* timeConstant is not strictly positive
*/
AudioParam.prototype.setTargetAtTime = function(
target, startTime, timeConstant) {};
/**
* @deprecated Use setTargetAtTime instead.
* @param {number} target
* @param {number} startTime
* @param {number} timeConstant
* @return {!AudioParam}
*/
AudioParam.prototype.setTargetValueAtTime = function(
target, startTime, timeConstant) {};
/**
* @param {!Float32Array} values
* @param {number} startTime
* @param {number} duration
* @return {!AudioParam}
* @throws {!TypeError} if startTime is negative or not a finite number
*/
AudioParam.prototype.setValueCurveAtTime = function(
values, startTime, duration) {};
/**
* @param {number} startTime
* @return {!AudioParam}
* @throws {!TypeError} if startTime is negative or not a finite number
*/
AudioParam.prototype.cancelScheduledValues = function(startTime) {};
/**
* @param {number} cancelTime
* @return {!AudioParam}
*/
AudioParam.prototype.cancelAndHoldAtTime = function(cancelTime) {};
/**
* @constructor
* @extends {AudioParam}
*/
function AudioGain() {}
/**
* @constructor
* @extends {AudioNode}
*/
function GainNode() {}
/** @type {!AudioParam} */
GainNode.prototype.gain;
/**
* @record
*/
function AudioNodeOptions() {};
/** @type {(number|undefined)} */
AudioNodeOptions.prototype.channelCount;
/** @type {(string|undefined)} */
AudioNodeOptions.prototype.channelCountMode;
/** @type {(string|undefined)} */
AudioNodeOptions.prototype.channelInterpretation;
/**
* @record
* @extends {AudioNodeOptions}
*/
function IIRFilterOptions() {};
/** @type {!Array<number>} */
IIRFilterOptions.prototype.feedback;
/** @type {!Array<number>} */
IIRFilterOptions.prototype.feedforward;
/**
* @record
* @extends {AudioNodeOptions}
*/
function DelayOptions() {};
/** @type {(number|undefined)} */
DelayOptions.prototype.delayTime;
/** @type {(number|undefined)} */
DelayOptions.prototype.maxDelayTime;
/**
* @constructor
* @extends {AudioNode}
*/
function DelayNode() {}
/** @type {!AudioParam} */
DelayNode.prototype.delayTime;
/**
* @constructor
*/
function AudioBuffer() {}
/**
* @deprecated
* @type {!AudioGain}
*/
AudioBuffer.prototype.gain;
/** @type {number} */
AudioBuffer.prototype.sampleRate;
/** @type {number} */
AudioBuffer.prototype.length;
/** @type {number} */
AudioBuffer.prototype.duration;
/** @type {number} */
AudioBuffer.prototype.numberOfChannels;
/**
* @param {number} channel
* @return {!Float32Array}
*/
AudioBuffer.prototype.getChannelData = function(channel) {};
/**
* @param {!Float32Array} destination
* @param {number} channelNumber
* @param {number=} startInChannel
*/
AudioBuffer.prototype.copyFromChannel = function(
destination, channelNumber, startInChannel) {};
/**
* @param {!Float32Array} source
* @param {number} channelNumber
* @param {number=} startInChannel
*/
AudioBuffer.prototype.copyToChannel = function(
source, channelNumber, startInChannel) {};
/**
* @constructor
* @extends {AudioNode}
*/
function AudioBufferSourceNode() {}
/**
* @deprecated
* @const {number}
*/
AudioBufferSourceNode.prototype.UNSCHEDULED_STATE;
/**
* @deprecated
* @const {number}
*/
AudioBufferSourceNode.prototype.SCHEDULED_STATE;
/**
* @deprecated
* @const {number}
*/
AudioBufferSourceNode.prototype.PLAYING_STATE;
/**
* @deprecated
* @const {number}
*/
AudioBufferSourceNode.prototype.FINISHED_STATE;
/**
* @deprecated
* @type {number}
*/
AudioBufferSourceNode.prototype.playbackState;
/** @type {AudioBuffer} */
AudioBufferSourceNode.prototype.buffer;
/**
* @deprecated
* @type {number}
*/
AudioBufferSourceNode.prototype.gain;
/** @type {!AudioParam} */
AudioBufferSourceNode.prototype.playbackRate;
/** @type {boolean} */
AudioBufferSourceNode.prototype.loop;
/** @type {number} */
AudioBufferSourceNode.prototype.loopStart;
/** @type {number} */
AudioBufferSourceNode.prototype.loopEnd;
/** @type {?function(!Event): void} */
AudioBufferSourceNode.prototype.onended;
/** @type {!AudioParam} */
AudioBufferSourceNode.prototype.detune;
/**
* @param {number=} when
* @param {number=} opt_offset
* @param {number=} opt_duration
* @throws {!TypeError} if any parameter is negative
*/
AudioBufferSourceNode.prototype.start = function(
when, opt_offset, opt_duration) {};
/**
* @param {number=} when
* @throws {!TypeError} if when is negative
*/
AudioBufferSourceNode.prototype.stop = function(when) {};
/**
* @deprecated Use AudioBufferSourceNode#start
* @param {number} when
* @return {undefined}
*/
AudioBufferSourceNode.prototype.noteOn = function(when) {};
/**
* @param {number=} when
* @param {number=} opt_offset
* @param {number=} opt_duration
* @deprecated Use AudioBufferSourceNode#start
*/
AudioBufferSourceNode.prototype.noteGrainOn = function(
when, opt_offset, opt_duration) {};
/**
* @param {number} when
* @deprecated Use AudioBufferSourceNode#stop
*/
AudioBufferSourceNode.prototype.noteOff = function(when) {};
/**
* @record
* @see https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode/MediaElementAudioSourceNode
*/
function MediaElementAudioSourceOptions() {};
/** @type {(HTMLMediaElement|undefined)} */
MediaElementAudioSourceOptions.prototype.mediaElement;
/** @type {(number|undefined)} */
MediaElementAudioSourceOptions.prototype.channelCount;
/** @type {(string|undefined)} */
MediaElementAudioSourceOptions.prototype.channelCountMode;
/** @type {(string|undefined)} */
MediaElementAudioSourceOptions.prototype.channelInterpretation;
/**
* @constructor
* @param {!AudioContext} context
* @param {!MediaElementAudioSourceOptions} options
* @extends {AudioNode}
* @see https://webaudio.github.io/web-audio-api/#MediaElementAudioSourceNode-constructors
*/
function MediaElementAudioSourceNode(context, options) {}
/**
* @constructor
*/
function AudioWorker() {}
/** @type {?function(!Event)} */
AudioWorker.prototype.onloaded;
/** @type {?function(!Event)} */
AudioWorker.prototype.onmessage;
/** @type {!Array<!AudioWorkerParamDescriptor>} */
AudioWorker.prototype.parameters;
/**
* @param {string} name
* @param {number} defaultValue
* @return {!AudioParam}
*/
AudioWorker.prototype.addParameter = function(name, defaultValue) {};
/**
* @param {number} numberOfInputs
* @param {number} numberOfOutputs
* @return {!AudioWorkerNode}
*/
AudioWorker.prototype.createNode = function(numberOfInputs, numberOfOutputs) {};
/**
* @param {*} message
* @param {!Array<!Transferable>=} transfer
*/
AudioWorker.prototype.postMessage = function(message, transfer) {};
/**
* @param {string} name
*/
AudioWorker.prototype.removeParameter = function(name) {};
/**
*/
AudioWorker.prototype.terminate = function() {};
/**
* @constructor
* @extends {AudioNode}
*/
function AudioWorkerNode() {}
/** @type {?function(!Event)} */
AudioWorkerNode.prototype.onmessage;
/**
* @param {*} message
* @param {!Array<!Transferable>=} transfer
*/
AudioWorkerNode.prototype.postMessage = function(message, transfer) {};
/**
* @constructor
*/
function AudioWorkerParamDescriptor() {}
/** @type {number} */
AudioWorkerParamDescriptor.prototype.defaultValue;
/** @type {string} */
AudioWorkerParamDescriptor.prototype.name;
/**
* @constructor
*/
function AudioWorkerGlobalScope() {}
/** @type {?function(!Event)} */
AudioWorkerGlobalScope.prototype.onaudioprocess;
/** @type {?function(!Event)} */
AudioWorkerGlobalScope.prototype.onnodecreate;
/** @type {!Array<!AudioWorkerParamDescriptor>} */
AudioWorkerGlobalScope.prototype.parameters;
/** @type {number} */
AudioWorkerGlobalScope.prototype.sampleRate;
/**
* @param {string} name
* @param {number} defaultValue
* @return {!AudioParam}
*/
AudioWorkerGlobalScope.prototype.addParameter = function(name, defaultValue) {};
/**
* @param {string} name
*/
AudioWorkerGlobalScope.prototype.removeParameter = function(name) {};
/**
* @constructor
*/
function AudioWorkerNodeProcessor() {}
/** @type {?function(!Event)} */
AudioWorkerNodeProcessor.prototype.onmessage;
/**
* @param {*} message
* @param {!Array<!Transferable>=} transfer
*/
AudioWorkerNodeProcessor.prototype.postMessage = function(message, transfer) {};
/**
* @constructor
* @extends {AudioNode}
* @deprecated Use AudioWorkerNode
*/
function JavaScriptAudioNode() {}
/**
* @type {EventListener|(function(!AudioProcessingEvent):(boolean|undefined))}
* @deprecated Use AudioWorkerNode
*/
JavaScriptAudioNode.prototype.onaudioprocess;
/**
* @type {number}
* @deprecated Use AudioWorkerNode
*/
JavaScriptAudioNode.prototype.bufferSize;
/**
* @constructor
* @extends {AudioNode}
* @deprecated Use AudioWorkerNode
*/
function ScriptProcessorNode() {}
/**
* @type {EventListener|(function(!AudioProcessingEvent):(boolean|undefined))}
* @deprecated Use AudioWorkerNode
*/
ScriptProcessorNode.prototype.onaudioprocess;
/**
* @type {number}
* @deprecated Use AudioWorkerNode
*/
ScriptProcessorNode.prototype.bufferSize;
/**
* @constructor
* @extends {Event}
*/
function AudioWorkerNodeCreationEvent() {}
/** @type {!Array} */
AudioWorkerNodeCreationEvent.prototype.inputs;
/** @type {!AudioWorkerNodeProcessor} */
AudioWorkerNodeCreationEvent.prototype.node;
/** @type {!Array} */
AudioWorkerNodeCreationEvent.prototype.outputs;
/**
* @constructor
* @extends {Event}
*/
function AudioProcessEvent() {}
/** @type {!Float32Array} */
AudioProcessEvent.prototype.inputs;
/** @type {!AudioWorkerNodeProcessor} */
AudioProcessEvent.prototype.node;
/** @type {!Float32Array} */
AudioProcessEvent.prototype.outputs;
/** @type {!Object} */
AudioProcessEvent.prototype.parameters;
/** @type {number} */
AudioProcessEvent.prototype.playbackTime;
/**
* @constructor
* @extends {Event}
* @deprecated Use AudioProcessEvent
*/
function AudioProcessingEvent() {}
/**
* @type {!ScriptProcessorNode}
* @deprecated Use AudioProcessEvent
*/
AudioProcessingEvent.prototype.node;
/**
* @type {number}
* @deprecated Use AudioProcessEvent
*/
AudioProcessingEvent.prototype.playbackTime;
/**
* @type {!AudioBuffer}
* @deprecated Use AudioProcessEvent
*/
AudioProcessingEvent.prototype.inputBuffer;
/**
* @type {!AudioBuffer}
* @deprecated Use AudioProcessEvent
*/
AudioProcessingEvent.prototype.outputBuffer;
/**
* @deprecated
* @constructor
* @extends {AudioNode}
*/
function AudioPannerNode() {}
/**
* @deprecated
* @const {number}
*/
AudioPannerNode.prototype.EQUALPOWER;
/**
* @deprecated
* @const {number}
*/
AudioPannerNode.prototype.HRTF;
/**
* @deprecated
* @const {number}
*/
AudioPannerNode.prototype.SOUNDFIELD;
/**
* @deprecated
* @const {number}
*/
AudioPannerNode.prototype.LINEAR_DISTANCE;
/**
* @deprecated
* @const {number}
*/
AudioPannerNode.prototype.INVERSE_DISTANCE;
/**
* @deprecated
* @const {number}
*/
AudioPannerNode.prototype.EXPONENTIAL_DISTANCE;
/**
* @deprecated
* @type {number|string}
*/
AudioPannerNode.prototype.panningModel;
/**
* @deprecated
* @param {number} x
* @param {number} y
* @param {number} z
* @return {undefined}
*/
AudioPannerNode.prototype.setPosition = function(x, y, z) {};
/**
* @deprecated
* @param {number} x
* @param {number} y
* @param {number} z
* @return {undefined}
*/
AudioPannerNode.prototype.setOrientation = function(x, y, z) {};
/**
* @deprecated
* @param {number} x
* @param {number} y
* @param {number} z
* @return {undefined}
*/
AudioPannerNode.prototype.setVelocity = function(x, y, z) {};
/**
* @deprecated
* @type {number|string}
*/
AudioPannerNode.prototype.distanceModel;
/**
* @deprecated
* @type {number}
*/
AudioPannerNode.prototype.refDistance;
/**
* @deprecated
* @type {number}
*/
AudioPannerNode.prototype.maxDistance;
/**
* @deprecated
* @type {number}
*/
AudioPannerNode.prototype.rolloffFactor;
/**
* @deprecated
* @type {number}
*/
AudioPannerNode.prototype.coneInnerAngle;
/**
* @deprecated
* @type {number}
*/
AudioPannerNode.prototype.coneOuterAngle;
/**
* @deprecated
* @type {number}
*/
AudioPannerNode.prototype.coneOuterGain;
/**
* @deprecated
* @type {!AudioGain}
*/
AudioPannerNode.prototype.coneGain;
/**
* @deprecated
* @type {!AudioGain}
*/
AudioPannerNode.prototype.distanceGain;
/**
* @constructor
* @extends {AudioNode}
*/
function PannerNode() {}
/** @type {number} */
PannerNode.prototype.coneInnerAngle;
/** @type {number} */
PannerNode.prototype.coneOuterAngle;
/** @type {number} */
PannerNode.prototype.coneOuterGain;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-pannernode-interface for valid values
*/
PannerNode.prototype.distanceModel;
/** @type {number} */
PannerNode.prototype.maxDistance;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-pannernode-interface for valid values
*/
PannerNode.prototype.panningModel;
/** @type {number} */
PannerNode.prototype.refDistance;
/** @type {number} */
PannerNode.prototype.rolloffFactor;
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
PannerNode.prototype.setOrientation = function(x, y, z) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
PannerNode.prototype.setPosition = function(x, y, z) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
*/
PannerNode.prototype.setVelocity = function(x, y, z) {};
/**
* @constructor
* @deprecated Use SpatialListener
*/
function AudioListener() {}
/**
* @type {number}
* @deprecated Use SpatialListener
*/
AudioListener.prototype.gain;
/**
* @type {number}
* @deprecated Use SpatialListener
*/
AudioListener.prototype.dopplerFactor;
/**
* @type {number}
* @deprecated Use SpatialListener
*/
AudioListener.prototype.speedOfSound;
/**
* @param {number} x
* @param {number} y
* @param {number} z
* @deprecated Use SpatialListener
*/
AudioListener.prototype.setPosition = function(x, y, z) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
* @param {number} xUp
* @param {number} yUp
* @param {number} zUp
* @deprecated Use SpatialListener
*/
AudioListener.prototype.setOrientation = function(x, y, z, xUp, yUp, zUp) {};
/**
* @param {number} x
* @param {number} y
* @param {number} z
* @deprecated Use SpatialListener
*/
AudioListener.prototype.setVelocity = function(x, y, z) {};
/**
* @constructor
* @extends {AudioNode}
*/
function SpatialPannerNode() {}
/** @type {number} */
SpatialPannerNode.prototype.coneInnerAngle;
/** @type {number} */
SpatialPannerNode.prototype.coneOuterAngle;
/** @type {number} */
SpatialPannerNode.prototype.coneOuterGain;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-pannernode-interface for valid values
*/
SpatialPannerNode.prototype.distanceModel;
/** @type {number} */
SpatialPannerNode.prototype.maxDistance;
/** @type {!AudioParam} */
SpatialPannerNode.prototype.orientationX;
/** @type {!AudioParam} */
SpatialPannerNode.prototype.orientationY;
/** @type {!AudioParam} */
SpatialPannerNode.prototype.orientationZ;
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-pannernode-interface for valid values
*/
SpatialPannerNode.prototype.panningModel;
/** @type {!AudioParam} */
SpatialPannerNode.prototype.positionX;
/** @type {!AudioParam} */
SpatialPannerNode.prototype.positionY;
/** @type {!AudioParam} */
SpatialPannerNode.prototype.positionZ;
/** @type {number} */
SpatialPannerNode.prototype.refDistance;
/** @type {number} */
SpatialPannerNode.prototype.rolloffFactor;
/**
* @constructor
*/
function SpatialListener() {}
/** @type {!AudioParam} */
SpatialListener.prototype.forwardX;
/** @type {!AudioParam} */
SpatialListener.prototype.forwardY;
/** @type {!AudioParam} */
SpatialListener.prototype.forwardZ;
/** @type {!AudioParam} */
SpatialListener.prototype.positionX;
/** @type {!AudioParam} */
SpatialListener.prototype.positionY;
/** @type {!AudioParam} */
SpatialListener.prototype.positionZ;
/** @type {!AudioParam} */
SpatialListener.prototype.upX;
/** @type {!AudioParam} */
SpatialListener.prototype.upY;
/** @type {!AudioParam} */
SpatialListener.prototype.upZ;
/**
* @constructor
* @extends {AudioNode}
* @see http://webaudio.github.io/web-audio-api/#the-stereopannernode-interface
*/
function StereoPannerNode() {}
/** @type {!AudioParam} */
StereoPannerNode.prototype.pan;
/**
* @record
* @extends {AudioNodeOptions}
*/
function ConvolverOptions() {};
/** @type {(AudioBuffer|undefined)} */
ConvolverOptions.prototype.buffer;
/** @type {(boolean|undefined)} */
ConvolverOptions.prototype.disableNormalization;
/**
* @constructor
* @extends {AudioNode}
* @param {!BaseAudioContext} context
* @param {!ConvolverOptions=} options
*/
function ConvolverNode(context, options) {}
/** @type {?AudioBuffer} */
ConvolverNode.prototype.buffer;
/** @type {boolean} */
ConvolverNode.prototype.normalize;
/**
* @constructor
* @extends {AudioNode}
*/
var AnalyserNode = function() {};
/**
* @param {!Float32Array} array
*/
AnalyserNode.prototype.getFloatFrequencyData = function(array) {};
/**
* @param {!Uint8Array} array
*/
AnalyserNode.prototype.getByteFrequencyData = function(array) {};
/**
* @param {!Uint8Array} array
*/
AnalyserNode.prototype.getByteTimeDomainData = function(array) {};
/**
* @param {!Float32Array} array
*/
AnalyserNode.prototype.getFloatTimeDomainData = function(array) {};
/** @type {number} */
AnalyserNode.prototype.fftSize;
/** @type {number} */
AnalyserNode.prototype.frequencyBinCount;
/** @type {number} */
AnalyserNode.prototype.minDecibels;
/** @type {number} */
AnalyserNode.prototype.maxDecibels;
/** @type {number} */
AnalyserNode.prototype.smoothingTimeConstant;
/**
* @constructor
* @extends {AnalyserNode}
* @deprecated Use AnalyserNode
*
* This constructor has been added for backwards compatibility.
*/
var RealtimeAnalyserNode = function() {};
/**
* @record
* @see https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode/ChannelSplitterNode
*/
function ChannelSplitterOptions() {};
/** @type {(number|undefined)} */
ChannelSplitterOptions.prototype.numberOfOutputs;
/** @type {(number|undefined)} */
ChannelSplitterOptions.prototype.channelCount;
/** @type {(string|undefined)} */
ChannelSplitterOptions.prototype.channelCountMode;
/** @type {(string|undefined)} */
ChannelSplitterOptions.prototype.channelInterpretation;
/**
* @constructor
* @param {!BaseAudioContext} context
* @param {!ChannelSplitterOptions=} options
* @extends {AudioNode}
* @see https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode/ChannelSplitterNode
*/
function ChannelSplitterNode(context, options) {}
/**
* @constructor
* @extends {ChannelSplitterNode}
* @deprecated Use ChannelSplitterNode
*
* This constructor has been added for backwards compatibility.
*/
function AudioChannelSplitter() {}
/**
* @record
* @see https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode/ChannelMergerNode
*/
function ChannelMergerOptions() {};
/** @type {(number|undefined)} */
ChannelMergerOptions.prototype.numberOfInputs;
/** @type {(number|undefined)} */
ChannelMergerOptions.prototype.channelCount;
/** @type {(string|undefined)} */
ChannelMergerOptions.prototype.channelCountMode;
/** @type {(string|undefined)} */
ChannelMergerOptions.prototype.channelInterpretation;
/**
* @constructor
* @param {!BaseAudioContext} context
* @param {!ChannelMergerOptions=} options
* @extends {AudioNode}
* @see https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode/ChannelMergerNode
*/
function ChannelMergerNode(context, options) {}
/**
* @constructor
* @extends {ChannelMergerNode}
* @deprecated Use ChannelMergerNode
*
* This constructor has been added for backwards compatibility.
*/
function AudioChannelMerger() {}
/**
* @constructor
* @extends {AudioNode}
*/
function DynamicsCompressorNode() {}
/** @type {!AudioParam} */
DynamicsCompressorNode.prototype.threshold;
/** @type {!AudioParam} */
DynamicsCompressorNode.prototype.knee;
/** @type {!AudioParam} */
DynamicsCompressorNode.prototype.ratio;
/** @type {number} */
DynamicsCompressorNode.prototype.reduction;
/** @type {!AudioParam} */
DynamicsCompressorNode.prototype.attack;
/** @type {!AudioParam} */
DynamicsCompressorNode.prototype.release;
/**
* @constructor
* @extends {AudioNode}
*/
function BiquadFilterNode() {}
/**
* A read-able and write-able string that specifies the type of the filter.
* See http://webaudio.github.io/web-audio-api/#the-biquadfilternode-interface
* for valid values.
* @type {string}
*/
BiquadFilterNode.prototype.type;
/** @type {!AudioParam} */
BiquadFilterNode.prototype.frequency;
/** @type {!AudioParam} */
BiquadFilterNode.prototype.detune;
/** @type {!AudioParam} */
BiquadFilterNode.prototype.Q;
/** @type {!AudioParam} */
BiquadFilterNode.prototype.gain;
/**
* @param {Float32Array} frequencyHz
* @param {Float32Array} magResponse
* @param {Float32Array} phaseResponse
* @return {undefined}
*/
BiquadFilterNode.prototype.getFrequencyResponse = function(
frequencyHz, magResponse, phaseResponse) {};
/**
* @constructor
* @param {!BaseAudioContext} context
* @param {!IIRFilterOptions=} options
* @extends {AudioNode}
*/
function IIRFilterNode(context, options) {}
/**
* @param {!Float32Array} frequencyHz
* @param {!Float32Array} magResponse
* @param {!Float32Array} phaseResponse
* @return {undefined}
*/
IIRFilterNode.prototype.getFrequencyResponse = function(
frequencyHz, magResponse, phaseResponse) {};
/**
* @constructor
* @extends {AudioNode}
*/
function WaveShaperNode() {}
/** @type {Float32Array} */
WaveShaperNode.prototype.curve;
/** @type {string} */
WaveShaperNode.prototype.oversample;
/**
* @deprecated
* @constructor
*/
function WaveTable() {}
/**
* @record
* @extends {AudioNodeOptions}
*/
function OscillatorOptions() {}
/** @type {number|undefined} */
OscillatorOptions.prototype.detune;
/** @type {number|undefined} */
OscillatorOptions.prototype.frequency;
/** @type {!PeriodicWave|undefined} */
OscillatorOptions.prototype.periodicWave;
/** @type {string|undefined} */
OscillatorOptions.prototype.type;
/**
* @constructor
* @param {!BaseAudioContext} context
* @param {!OscillatorOptions=} options
* @extends {AudioNode}
*/
function OscillatorNode(context, options) {}
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#the-oscillatornode-interface for valid
* values
*/
OscillatorNode.prototype.type;
/**
* @deprecated
* @type {number}
*/
OscillatorNode.prototype.playbackState;
/** @type {!AudioParam} */
OscillatorNode.prototype.frequency;
/** @type {!AudioParam} */
OscillatorNode.prototype.detune;
/**
* @param {number=} when
*/
OscillatorNode.prototype.start = function(when) {};
/**
* @param {number=} when
*/
OscillatorNode.prototype.stop = function(when) {};
/**
* @deprecated
* @param {!WaveTable} waveTable
*/
OscillatorNode.prototype.setWaveTable = function(waveTable) {};
/**
* @param {!PeriodicWave} periodicWave
*/
OscillatorNode.prototype.setPeriodicWave = function(periodicWave) {};
/** @type {?function(!Event)} */
OscillatorNode.prototype.onended;
/**
* @record
*/
function PeriodicWaveConstraints() { }
/** @type {boolean|undefined} */
PeriodicWaveConstraints.prototype.disableNormalization;
/**
* @record
* @extends {PeriodicWaveConstraints}
*/
function PeriodicWaveOptions() {}
/** @type {(!Array<number>|!Float32Array)|undefined} */
PeriodicWaveOptions.prototype.imag;
/** @type {(!Array<number>|!Float32Array)|undefined} */
PeriodicWaveOptions.prototype.real;
/**
* @constructor
* @param {!BaseAudioContext} context
* @param {!PeriodicWaveOptions=} options
*/
function PeriodicWave(context, options) {}
/**
* @record
* @see https://www.w3.org/TR/webaudio/#dictdef-constantsourceoptions
*/
function ConstantSourceOptions() {};
/** @const {(number|undefined)} */
ConstantSourceOptions.offset;
/**
* @param {!BaseAudioContext} context
* @param {!ConstantSourceOptions=} options
* @constructor
* @extends {AudioNode}
* @see https://www.w3.org/TR/webaudio/#ConstantSourceNode
*/
function ConstantSourceNode(context, options) {}
/**
* @param {number=} when
*/
ConstantSourceNode.prototype.start = function(when) {};
/**
* @param {number=} when
*/
ConstantSourceNode.prototype.stop = function(when) {};
/** @type {!AudioParam} */
ConstantSourceNode.prototype.offset;
/**
* @constructor
* @extends {AudioNode}
*/
function MediaStreamAudioSourceNode() {}
/** @type {!MediaStream} */
MediaStreamAudioSourceNode.prototype.mediaStream;
/**
* @constructor
* @extends {AudioNode}
* @param {!AudioContext} context
* @param {!AudioNodeOptions=} options
*/
function MediaStreamAudioDestinationNode(context, options) {}
/** @type {!MediaStream} */
MediaStreamAudioDestinationNode.prototype.stream;
/**
* @constructor
* @see https://www.w3.org/TR/webaudio/#audioworklet
* @implements {Worklet}
*/
function AudioWorklet() {}
/**
* @constructor
* @see https://www.w3.org/TR/webaudio/#audioworkletglobalscope
* @implements {WorkletGlobalScope}
*/
function AudioWorkletGlobalScope() {}
/** @type {number} */
AudioWorkletGlobalScope.prototype.currentFrame;
/** @type {number} */
AudioWorkletGlobalScope.prototype.currentTime;
/** @type {number} */
AudioWorkletGlobalScope.prototype.sampleRate;
/**
* @param {!string} name
* @param {!function()} processorCtor
*/
AudioWorkletGlobalScope.prototype.registerProcessor = function(
name, processorCtor) {};
/**
* @constructor
* @extends {AudioNode}
* @param {!BaseAudioContext} context
* @param {string} name
* @param {!AudioWorkletNodeOptions=} options
* @see https://www.w3.org/TR/webaudio/#audioworkletnode
*/
function AudioWorkletNode(context, name, options) {}
/** @type {?function(!ErrorEvent)} */
AudioWorkletNode.prototype.onprocessorerror;
/** @type {!Object<string, !AudioParam>} */
AudioWorkletNode.prototype.parameters;
/** @type {!MessagePort} */
AudioWorkletNode.prototype.port;
/**
* @record
* @see https://webaudio.github.io/web-audio-api/#dictdef-audioworkletnodeoptions
*/
function AudioWorkletNodeOptions() {};
/** @type {number|undefined} */
AudioWorkletNodeOptions.prototype.numberOfInputs;
/** @type {number|undefined} */
AudioWorkletNodeOptions.prototype.numberOfOutputs;
/** @type {!Array<number>|undefined} */
AudioWorkletNodeOptions.prototype.outputChannelCount;
/** @type {!Object<string, number>|undefined} */
AudioWorkletNodeOptions.prototype.parameterData;
/** @type {?|undefined} */
AudioWorkletNodeOptions.prototype.processorOptions;
/**
* @constructor
* @param {!AudioWorkletNodeOptions=} options
* @see https://www.w3.org/TR/webaudio/#audioworkletprocessor
*/
function AudioWorkletProcessor(options) {}
/** @type {!MessagePort} */
AudioWorkletProcessor.prototype.port;
/**
* @param {!Array<!Array<!Float32Array>>} inputs
* @param {!Array<!Array<!Float32Array>>} outputs
* @param {!Object<string, !Float32Array>} parameters
* @return {boolean}
*/
AudioWorkletProcessor.prototype.process = function(
inputs, outputs, parameters) {};
/**
* @record
* @see https://www.w3.org/TR/webaudio/#dictdef-audioparamdescriptor
*/
function AudioParamDescriptor() {};
/**
* @type {string}
* See https://www.w3.org/TR/webaudio/#dom-audioparam-automationrate for valid
* values.
*/
AudioParamDescriptor.prototype.automationRate;
/** @type {number} */
AudioParamDescriptor.prototype.defaultValue;
/** @type {number} */
AudioParamDescriptor.prototype.maxValue;
/** @type {number} */
AudioParamDescriptor.prototype.minValue;
/** @type {string} */
AudioParamDescriptor.prototype.name;