diff --git a/src-v2/audio/apu/APU.ts b/src-v2/audio/apu/APU.ts index 6878055..feae305 100644 --- a/src-v2/audio/apu/APU.ts +++ b/src-v2/audio/apu/APU.ts @@ -77,19 +77,18 @@ export class GameBoyAPU { this.audioContext = audioContext || new AudioContext(); this.config = { ...DEFAULT_V2_CONFIG, ...config }; - // Create colorizer with DMG preset for authentic sound + // Create colorizer (but don't use it for now - bypassed) this.colorizer = new GameBoyColorizer( this.audioContext, - GameBoyColorizer.createPreset('dmg') + GameBoyColorizer.createPreset() ); // Create master gain this.masterGain = this.audioContext.createGain(); this.masterGain.gain.value = this.config.masterVolume; - // Wire: master -> colorizer -> destination - this.masterGain.connect(this.colorizer.getInput()); - this.colorizer.getOutput().connect(this.audioContext.destination); + // SIMPLIFIED: master -> destination (bypass colorizer to avoid distortion) + this.masterGain.connect(this.audioContext.destination); // Initialize all channels this.initializeChannels(); diff --git a/src-v2/audio/apu/WaveChannel.ts b/src-v2/audio/apu/WaveChannel.ts index 27f5cf2..32353fe 100644 --- a/src-v2/audio/apu/WaveChannel.ts +++ b/src-v2/audio/apu/WaveChannel.ts @@ -34,7 +34,6 @@ export class WaveChannel { private volume: WaveVolume = 1; // Default to 100% private outputNode: GainNode; private currentPreset: WavePreset; - private lowpassFilter: BiquadFilterNode; constructor( audioContext: AudioContext, @@ -45,14 +44,6 @@ export class WaveChannel { this.outputNode = outputNode; this.currentPreset = preset; - // Create a low-pass filter to warm up the sound - // GB wave channel had natural rolloff from the DAC - this.lowpassFilter = audioContext.createBiquadFilter(); - this.lowpassFilter.type = 'lowpass'; - this.lowpassFilter.frequency.value = 2000; // Cut harsh highs - this.lowpassFilter.Q.value = 0.7; - this.lowpassFilter.connect(outputNode); - // Initialize wavetable with preset this.waveTable = new WaveTable(); this.loadPreset(preset); @@ -158,9 +149,9 @@ export class WaveChannel { const stopTime = now + duration + releaseTime; gain.gain.linearRampToValueAtTime(0.001, stopTime); - // Connect nodes through low-pass filter for warmer sound + // Connect nodes directly to output oscillator.connect(gain); - gain.connect(this.lowpassFilter); + gain.connect(this.outputNode); // Schedule playback oscillator.start(now); @@ -220,7 +211,7 @@ export class WaveChannel { gain.gain.linearRampToValueAtTime(0.001, stopTime); oscillator.connect(gain); - gain.connect(this.lowpassFilter); + gain.connect(this.outputNode); oscillator.start(now); oscillator.stop(stopTime + 0.01);