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); } }