From 4d4690577e8bb4470e11218a36d253b1bb6d0e2b Mon Sep 17 00:00:00 2001 From: Baruch Berger Date: Thu, 22 Nov 2012 21:28:35 +0100 Subject: [PATCH 1/3] added waa.d.ts and readme.md --- webaudioapi/readme.md | 14 +++ webaudioapi/waa.d.ts | 247 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 261 insertions(+) create mode 100644 webaudioapi/readme.md create mode 100644 webaudioapi/waa.d.ts diff --git a/webaudioapi/readme.md b/webaudioapi/readme.md new file mode 100644 index 0000000000..c655486227 --- /dev/null +++ b/webaudioapi/readme.md @@ -0,0 +1,14 @@ +# Web Audio API Definition Notes + + +## The Web Audio API + + +The Web Audio API is currently still under development. However WebKit browsers have started an implementation of the proposed specifications which can be found at: [w3.org](http://www.w3.org/TR/webaudio/). + +The WebKit nightly builds try to keep up with the editors draft version of the specifications [w3.org](https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html) + + +### Adding the reference to your project + + /// diff --git a/webaudioapi/waa.d.ts b/webaudioapi/waa.d.ts new file mode 100644 index 0000000000..b90c4b9597 --- /dev/null +++ b/webaudioapi/waa.d.ts @@ -0,0 +1,247 @@ +// Type definitions for the Web Audio API, currently only implemented in WebKit browsers +// Conforms to the: http://www.w3.org/TR/2012/WD-webaudio-20120802/ specification +// Definitions by: Baruch Berger (https://github.com/bbss) +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface webkitAudioContext { + destination: AudioDestinationNode; + sampleRate: number; + currentTime: number; + listener: AudioListener; + activeSourceCount: number; + + createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; + createBuffer(buffer: ArrayBuffer, mixToMono: bool): AudioBuffer; + + decodeAudioData(audioData: ArrayBuffer, successCallback: any, errorCallback?: any): void; + + createBufferSource(): AudioBufferSourceNode; + + createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + + createMediaStreamSource(mediaStream: any): MediaStreamAudioSourceNode; + + createAnalyser(): RealtimeAnalyserNode; + createGainNode(): AudioGainNode; + createDelayNode(maxDelayTime?: number): DelayNode; + createBiquadFilter(): BiquadFilterNode; + createPanner():AudioPannerNode; + createConvolver(): ConvolverNode; + + createChannelSplitter(numberOfOutputs?: number):AudioChannelSplitter; + createChannelMerger(numberOfInputs?: number): AudioChannelMerger; + + createDynamicsCompressor(): DynamicsCompressorNode; + + createOscillator(): Oscillator; + createWaveTable(real: any,imag: any): WaveTable; +} + +declare var webkitAudioContext: { + + new (): webkitAudioContext; + +} + +interface Oscillator extends AudioSourceNode { + + type: number; + playbackState: number; + frequency: AudioParam; + detune: AudioParam; + noteOn(when: number): void; + noteOff(when: number): void; + setWaveTable(waveTable: WaveTable): void; + +} + +interface AudioDestinationNode extends AudioNode { + + maxNumberOfChannels: number; + numberOfChannels: number; + +} + +interface AudioNode { + + connect(destination: AudioNode, output?: number, input?: number): void; + connect(destination: AudioParam, output?: number): void; + disconnect(output?: number): void; + context: webkitAudioContext; + numberOfInputs: number; + numberOfOutputs: number; + +}; + +interface AudioSourceNode extends AudioNode { + +} + + + +interface AudioParam { + + value: number; + minValue: number; + maxValue: number; + defaultValue: number; + setValueAtTime(value: number, time: number): void; + linearRampToValueAtTime(value: number, time: number): void; + exponentialRampToValueAtTime(value: number, time: number): void; + setTargetValueAtTime(targetValue: number,time: number, timeConstant: number): void; + setValueCurveAtTime(values: number[], time: number, duration: number): void; + cancelScheduledValues(startTime: number): void; + +} + +interface AudioGain extends AudioParam { + +} + +interface AudioGainNode extends AudioNode { + + gain: AudioGain; + +} + +interface DelayNode extends AudioNode { + + delayTime: AudioParam; + +} + +interface AudioBuffer { + + sampleRate: number; + length: number; + duration: number; + numberOfChannels: number; + getChannelData(channel: number): any; + +} + +interface AudioBufferSourceNode extends AudioSourceNode { + + playbackState: number; + buffer: AudioBuffer; + playbackRate: AudioParam; + loop: bool; + noteOn(when: number): void; + noteGrainOn(when: number, grainOffset: number, grainDuration: number): void; + noteOff(when: number): void; + +} + +interface MediaElementAudioSourceNode extends AudioSourceNode { + +} + +interface JavaScriptAudioNode extends AudioNode { + + onaudioprocess: EventListener; + bufferSize: number; + +} + +interface AudioProcessingEvent extends Event { + + node: JavaScriptAudioNode; + playbackTime: number; + inputBuffer: AudioBuffer; + outputBuffer: AudioBuffer; + +} + +interface AudioPannerNode extends AudioNode { + + panningModel: number; + setPosition(x: number, y: number, z: number): void; + setOrientation(x: number, y: number, z: number): void; + setVelocity(x: number, y: number, z: number): void; + distanceModel: number; + refDistance: number; + maxDistance: number; + rolloffFactor: number; + coneInnerAngle: number; + coneOuterAngle: number; + coneOuterGain: number; + distanceGain: AudioGain; + coneGain: AudioGain; + +} + +interface AudioListener { + + dopplerFactor: number; + speedOfSound: number; + setPosition(x: number, y: number, z: number): void; + setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void; + setVelocity(x: number, y: number, z: number): void; + +} + +interface RealtimeAnalyserNode extends AudioNode { + + getFloatFrequencyData(array: any): void; + getByteFrequencyData(array: any): void; + getByteTimeDomainData(array: any): void; + fftSize: number; + frequencyBinCount: number; + minDecibels: number; + maxDecibels: number; + smoothingTimeConstant: number; + +} + +interface AudioChannelSplitter extends AudioNode { + +} + +interface AudioChannelMerger extends AudioNode { + +} + +interface DynamicsCompressorNode extends AudioNode { + + threshold: AudioParam; + knee: AudioParam; + ratio: AudioParam; + reduction: AudioParam; + attack: AudioParam; + release: AudioParam; + +} + +interface BiquadFilterNode extends AudioNode { + + type: number; + frequency: AudioParam; + Q: AudioParam; + gain: AudioParam; + + getFrequencyResponse(frequencyHz: any, magResponse: any, phaseResponse: any): void; + +} + +interface WaveShaperNode extends AudioNode { + + curve: any; + +} + +interface MediaStreamAudioSourceNode extends AudioSourceNode { + + + +} + +interface ConvolverNode extends AudioNode { + + buffer: AudioBuffer; + normalize: bool; + +} + +interface WaveTable { + +} From 9c62cfa86caf77db760758876c18f28f7438b7e0 Mon Sep 17 00:00:00 2001 From: Baruch Berger Date: Thu, 22 Nov 2012 23:22:52 +0100 Subject: [PATCH 2/3] Added nightly build definitions file --- webaudioapi/waa-nightly.d.ts | 245 +++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 webaudioapi/waa-nightly.d.ts diff --git a/webaudioapi/waa-nightly.d.ts b/webaudioapi/waa-nightly.d.ts new file mode 100644 index 0000000000..c20b1f44ad --- /dev/null +++ b/webaudioapi/waa-nightly.d.ts @@ -0,0 +1,245 @@ +interface webkitAudioContext { + + destination: AudioDestinationNode; + sampleRate: number; + currentTime: number; + listener: AudioListener; + activeSourceCount: number; + + createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; + + createBuffer(buffer: ArrayBuffer, mixToMono: bool): AudioBuffer; + + decodeAudioData(audioData: ArrayBuffer, successCallback: any, errorCallback?: any): void; + createBufferSource(): AudioBufferSourceNode; + + createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode; + createScriptProcessor(bufferSize: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; + createAnalyser(): AnalyserNode; + createGain(): GainNode; + createDelay(maxDelayTime?: number): DelayNode; + createBiquadFilter(): BiquadFilterNode; + createWaveShaper(): WaveShaperNode; + createPanner(): PannerNode; + createConvolver(): ConvolverNode; + createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode; + createChannelMerger(numberOfInputs?: number): ChannelMergerNode; + createDynamicsCompressor(): DynamicsCompressorNode; + createOscillator(): OscillatorNode; + createWaveTable(real: any, imag: any): WaveTable; + +} + + +declare var webkitAudioContext: { + + new (value?: any): webkitAudioContext; + +} + + +interface AudioNode { + + connect(destination: AudioNode, output?: number, input?: number): void; + connect(destination: AudioParam, output?: number): void; + disconnect(output?: number): void; + context: webkitAudioContext; + numberOfInputs: number; + numberOfOutputs: number; + +} + + +interface AudioSourceNode extends AudioNode { + +} + +interface AudioDestinationNode extends AudioNode { + + maxNumberOfChannels: number; + numberOfChannels: number; + +} + +interface AudioParam { + + value: number; + computedValue: number; + minValue: number; + maxValue: number; + defaultValue: number; + setValueAtTime(value: number, startTime: number): void; + linearRampToValueAtTime(value: number, endTime: number): void; + exponentialRampToValueAtTime(value: number, endTime: number): void; + setTargetAtTime(target: number, startTime: number, timeConstant: number): void; + setValueCurveAtTime(values: any, startTime: number, duration: number): void; + cancelScheduledValues(startTime: number): void; + +} + +interface GainNode extends AudioNode { + + gain: AudioParam; + +} + +interface DelayNode extends AudioNode { + + delayTime: AudioParam; + +}; + +interface AudioBuffer { + + sampleRate: number; + length: number; + duration: number; + numberOfChannels: number; + getChannelData(channel): any; + +} + +interface AudioBufferSourceNode extends AudioSourceNode { + //actually enum + playbackState: number; + + buffer: AudioBuffer; + playbackRate: AudioParam; + loop: bool; + loopStart: number; + loopEnd: number; + start(when: number, offset?: number, duration?: number): void; + stop(when: number): void; + +} + +interface MediaElementAudioSourceNode extends AudioSourceNode { + +} + +interface ScriptProcessorNode extends AudioNode { + + onaudioproces: EventListener; + bufferSize: number; + +} + +interface AudioProcessingEvent extends Event { + + node: ScriptProcessorNode; + playbackTime: number; + inputBuffer: AudioBuffer; + outputBuffer: AudioBuffer; + +} + +interface PannerNode extends AudioNode { + //actually enum + panningModel: number; + distanceModel: number; + + setPosition(x: number, y: number, z: number): void; + setOrientation(x: number, y: number, z: number): void; + setVelocity(x: number, y: number, z: number): void; + refDistance: number; + maxDistance: number; + rolloffFactor: number; + coneInnerAngle: number; + coneOuterAngle: number; + coneOuterGain: number; + +} + +interface AudioListener { + + dopplerFactor: number; + speedOfSound: number; + setPosition(x: number, y: number, z: number): void; + setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void; + setVelocity(x: number, y: number, z: number): void; + +} + +interface ConvolverNode extends AudioNode { + + buffer: AudioBuffer; + normalize: bool; + +} + +interface AnalyserNode extends AudioNode { + + getFloatFrequencyData(array: any): void; + getByteFrequencyData(array: any): void; + getByteTimeDomainData(array: any): void; + fftSize: number; + frequencyBinCount: number; + minDecibels: number; + maxDecibels: number; + smoothingTimeConstant: number; + +} + +interface ChannelSplitterNode extends AudioNode { + +} + +interface ChannelMergerNode extends AudioNode { + +} + +interface DynamicsCompressorNode extends AudioNode { + + threshold: AudioParam; + knee: AudioParam; + ratio: AudioParam; + reduction: AudioParam; + attack: AudioParam; + release: AudioParam; + +} + +interface BiquadFilterNode extends AudioNode { + + //actually enum + type: number; + + frequency: AudioParam; + Q: AudioParam; + gain: AudioParam; + getFrequencyResponse(frequencyHz: any, magResponse: any, phaseResponse: any): void; + +} + +interface WaveShaperNode extends AudioNode { + + curve: any; + +} + +interface OscillatorNode extends AudioSourceNode { + + //actually enums + type: number; + playbackState: number; + + frequency: AudioParam; + detune: AudioParam; + start(when: number): void; + stop(when: number): void; + setWaveTable(waveTable: WaveTable): void; + +} + +interface WaveTable { + +} + +interface MediaStreamAudioSourceNode extends AudioSourceNode { + +} + +interface MediaStream { + +} \ No newline at end of file From 50edcd20537c04525f2323644b3a599781e158c9 Mon Sep 17 00:00:00 2001 From: Baruch Berger Date: Thu, 22 Nov 2012 23:56:00 +0100 Subject: [PATCH 3/3] Updated readme and added informative comment on nightly build definitions. --- webaudioapi/readme.md | 2 ++ webaudioapi/waa-nightly.d.ts | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/webaudioapi/readme.md b/webaudioapi/readme.md index c655486227..08eac0767f 100644 --- a/webaudioapi/readme.md +++ b/webaudioapi/readme.md @@ -12,3 +12,5 @@ The WebKit nightly builds try to keep up with the editors draft version of the s ### Adding the reference to your project /// +or + /// \ No newline at end of file diff --git a/webaudioapi/waa-nightly.d.ts b/webaudioapi/waa-nightly.d.ts index c20b1f44ad..38ef2f4015 100644 --- a/webaudioapi/waa-nightly.d.ts +++ b/webaudioapi/waa-nightly.d.ts @@ -1,3 +1,8 @@ +// Type definitions for the Web Audio API, currently only implemented in WebKit browsers (nightly builds) +// Conforms to the: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html specification +// Definitions by: Baruch Berger (https://github.com/bbss) +// Definitions: https://github.com/borisyankov/DefinitelyTyped + interface webkitAudioContext { destination: AudioDestinationNode;