akko
Version:
Music visualising framework based on WebGL and Web Audio API.
290 lines (244 loc) • 6.95 kB
TypeScript
declare enum PanningModelType
{
equalpower,
HRTF,
soundfield
}
declare enum DistanceModelType
{
linear,
inverse,
exponential
}
declare enum BiquadFilterType
{
lowpass,
highpass,
bandpass,
lowshelf,
highshelf,
peaking,
notch,
allpass
}
declare enum OscillatorType
{
sine,
square,
sawtooth,
triangle,
custom
}
interface AudioContext
{
destination:AudioDestinationNode; // readonly
sampleRate: number; // readonly
currentTime:number; // readonly
listener:AudioListener; // readonly
activeSourceCount: number; // readonly
createBuffer(numberOfChannels:number, length:number, sampleRate:number):AudioBuffer;
createBuffer(buffer:ArrayBuffer, mixToMono:boolean):AudioBuffer;
decodeAudioData(audioData:ArrayBuffer, decodeSuccessCallback?:Function, decodeErrorCallback?:Function);
createBufferSource():AudioBufferSourceNode;
createMediaElementSource(mediaElement:HTMLMediaElement):MediaElementAudioSourceNode;
createMediaStreamSource(mediaStreamMediaStream):MediaStreamAudioSourceNode;
createMediaStreamDestination():MediaStreamAudioDestinationNode;
createScriptProcessor(bufferSize, 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:Float32Array,imag:Float32Array):WaveTable;
}
declare var webkitAudioContext:
{
prototype: AudioContext;
new(): AudioContext;
}
declare var AudioContext:
{
prototype: AudioContext;
new(): AudioContext;
}
interface OfflineAudioContext extends AudioContext
{
startRendering():void;
oncomplete:Function;
}
interface AudioNode
{
context:AudioContext; // readonly
numberOfInputs:number; // readonly
numberOfOutputs:number; // readonly
connect(destination:AudioNode, output?:number, input?:number):void;
connect(destination:AudioParam, output?:number):void;
disconnect(output?:number):void;
}
interface AudioSourceNode extends AudioNode
{
}
interface AudioDestinationNode extends AudioNode
{
maxNumberOfChannels:number; // readonly
numberOfChannels:number;
}
interface AudioParam
{
value:number;
computedValue:number; // readonly
minValue:number; // readonly
maxValue:number; // readonly
defaultValue:number; // readonly
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:Float32Array, startTime:number, duration:number):void;
cancelScheduledValues(startTime:number):void;
}
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 AudioBufferSourceNode extends AudioSourceNode
{
UNSCHEDULED_STATE: number;
SCHEDULED_STATE:number;
PLAYING_STATE:number;
FINISHED_STATE:number;
playbackState:number; // readonly
buffer: AudioBuffer;
playbackRate:AudioParam;
loop:boolean;
loopStart:number;
loopEnd:number;
start(when:number, offset?:number, duration?:number):void;
stop(when:number):void;
}
interface MediaElementAudioSourceNode extends AudioSourceNode
{
}
interface MediaStreamAudioSourceNode extends AudioSourceNode
{
}
interface MediaStreamAudioDestinationNode extends AudioDestinationNode
{
stream:MediaStream; // readonly
}
interface MediaStream
{
}
interface ScriptProcessorNode extends AudioNode
{
onaudioprocess:EventListener;
bufferSize:number; // readonly
}
interface AudioProcessingEvent extends Event
{
node:ScriptProcessorNode;
playbackTime:number; // readonly
inputBuffer:AudioBuffer; // readonly
outputBuffer:AudioBuffer; // readonly
}
interface AnalyserNode extends AudioNode
{
getFloatFrequencyData(array:Float32Array):void;
getByteFrequencyData(array:Uint8Array):void;
getByteTimeDomainData(array:Uint8Array):void;
fftSize:number;
frequencyBinCount:number; // readonly
minDecibels:number;
maxDecibels:number;
smoothingTimeConstant:number;
}
interface GainNode extends AudioNode
{
gain:AudioParam; // readonly
}
interface DelayNode
{
delayTime:AudioParam; // readonly
}
interface BiquadFilterNode extends AudioNode
{
type:BiquadFilterType;
frequency:AudioParam; // readonly
detune:AudioParam; // readonly
Q:AudioParam; // readonly
gain:AudioParam; // readonly
getFrequencyResponse(frequencyHz:Float32Array, magResponse:Float32Array, phaseResponse:Float32Array):void;
}
interface WaveShaperNode extends AudioNode
{
curve:Float32Array;
}
interface PannerNode
{
panningModel:PanningModelType;
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:DistanceModelType;
refDistance:number;
maxDistance:number;
rolloffFactor:number;
coneInnerAngle:number;
coneOuterAngle:number;
coneOuterGain:number;
}
interface ChannelSplitterNode extends AudioNode
{
}
interface ChannelMergerNode extends AudioNode
{
}
interface ConvolverNode extends AudioNode
{
buffer:AudioBuffer;
normalize:boolean;
}
interface DynamicsCompressorNode extends AudioNode
{
threshold:AudioParam; // readonly
knee:AudioParam; // readonly
ratio:AudioParam; // readonly
reduction:AudioParam; // readonly
attack:AudioParam; // readonly
release:AudioParam; // readonly
}
interface OscillatorNode extends AudioSourceNode
{
type:OscillatorType;
UNSCHEDULED_STATE:number;
SCHEDULED_STATE: number;
PLAYING_STATE: number;
FINISHED_STATE:number;
playbackState:number; // readonly
frequency:AudioParam; // readonly
detune:AudioParam; // readonly
start(when:number):void;
stop(when:number):void;
setWaveTable(waveTable:WaveTable):void;
}
interface WaveTable
{
}
interface AudioBuffer
{
sampleRate: number; // readonly
length: number; // readonly
duration: number; // readonly
numberOfChannels: number; // readonly
getChannelData(channel:number): Float32Array;
}