Set Initial Value Before Ramp
Set initial value before ramping to avoid glitches.
Incorrect (no initial value):
gain.gain.exponentialRampToValueAtTime(0.001, t + 0.05);Correct (initial value set):
gain.gain.setValueAtTime(0.3, t);
gain.gain.exponentialRampToValueAtTime(0.001, t + 0.05);