Audio: fix pop/crackle — exponential ramps + longer release tail

Linear gain ramps + osc.stop() too close to release end caused
waveform discontinuities. Switched to exponentialRamp (natural
decay curve), 0.0001 floor (-80dB), 50ms extra headroom before
oscillator stop.
This commit is contained in:
you
2026-03-22 18:31:36 +00:00
parent 288c1b048b
commit 4e8b1b2584
2 changed files with 5 additions and 5 deletions
+4 -4
View File
@@ -98,14 +98,14 @@
envGain.gain.setValueAtTime(0, noteStart);
envGain.gain.linearRampToValueAtTime(voiceVol, noteStart + a);
envGain.gain.linearRampToValueAtTime(voiceVol * s, noteStart + a + d);
envGain.gain.setValueAtTime(voiceVol * s, noteEnd);
envGain.gain.linearRampToValueAtTime(0.001, noteEnd + r);
envGain.gain.exponentialRampToValueAtTime(Math.max(voiceVol * s, 0.0001), noteStart + a + d);
envGain.gain.setValueAtTime(Math.max(voiceVol * s, 0.0001), noteEnd);
envGain.gain.exponentialRampToValueAtTime(0.0001, noteEnd + r);
osc.connect(envGain);
envGain.connect(filter);
osc.start(noteStart);
osc.stop(noteEnd + r + 0.01);
osc.stop(noteEnd + r + 0.05);
osc.onended = () => { osc.disconnect(); envGain.disconnect(); };
}
+1 -1
View File
@@ -91,7 +91,7 @@
<script src="traces.js?v=1774135052" onerror="console.error('Failed to load:', this.src)"></script>
<script src="analytics.js?v=1774126708" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio.js?v=1774200683" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-v1-constellation.js?v=1774199178" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-v1-constellation.js?v=1774204296" onerror="console.error('Failed to load:', this.src)"></script>
<script src="live.js?v=1774203115" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observers.js?v=1774290000" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observer-detail.js?v=1774028201" onerror="console.error('Failed to load:', this.src)"></script>