aves_slim
Version:
Audio spectrum analyzer written in type script. Developed using web audio api.
40 lines (36 loc) • 1.16 kB
text/typescript
export default class {
public audioCtx: AudioContext
public sampleRate: number
public audioBuffer: AudioBuffer
public source: AudioBufferSourceNode
public sourceElement: MediaElementAudioSourceNode
public audioElement: HTMLMediaElement
// private
constructor() {
if (!window) {
throw new Error('Window object not found!!')
}
this.audioCtx = new AudioContext()
this.sampleRate = this.audioCtx.sampleRate
this.source = this.audioCtx.createBufferSource()
this.source.connect(this.audioCtx.destination)
}
decodeAudio(audioData: ArrayBuffer): Promise<AudioBufferSourceNode> {
return this.audioCtx.decodeAudioData(audioData).then((buffer: AudioBuffer) => {
this.audioBuffer = buffer
this.source.buffer = buffer
return this.source
})
}
setAudioElement(audioElement: HTMLMediaElement) {
this.sourceElement = this.audioCtx.createMediaElementSource(audioElement)
this.sourceElement.connect(this.audioCtx.destination)
this.audioElement = audioElement
}
start() {
this.source.start(0)
}
stop() {
this.source.stop()
}
}