Spaces:
Running
Running
File size: 950 Bytes
27630e2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
export class AudioPlayer {
constructor(audioContext, url) {
this.audioContext = audioContext;
this.audio = new Audio();
this.audio.crossOrigin = 'anonymous';
this.audio.src = url;
this.gainNode = this.audioContext.createGain();
this.analyser = this.audioContext.createAnalyser();
this.source = this.audioContext.createMediaElementSource(this.audio);
this.source.connect(this.analyser);
this.analyser.connect(this.gainNode);
this.gainNode.connect(this.audioContext.destination);
this.isPlaying = false;
// Set fixed volume
this.gainNode.gain.value = 0.5;
}
play() {
this.audioContext.resume();
this.audio.play();
this.isPlaying = true;
}
pause() {
this.audio.pause();
this.isPlaying = false;
}
connectAnalyser(analyser) {
this.source.disconnect(this.analyser);
this.source.connect(analyser);
analyser.connect(this.gainNode);
}
} |