Skip to content

fix(desktop): clean up clicks and artifacts in all notification sounds - #3335

Open
joahg wants to merge 2 commits into
block:mainfrom
joahg:joahg/clean-flutter-notification-sound
Open

fix(desktop): clean up clicks and artifacts in all notification sounds#3335
joahg wants to merge 2 commits into
block:mainfrom
joahg:joahg/clean-flutter-notification-sound

Conversation

@joahg

@joahg joahg commented Jul 28, 2026

Copy link
Copy Markdown
Member

Summary

The default notification sound (flutter.mp3) sounded crunchy, and follow-up analysis found every one of the other 11 notification sounds had audible clicks at start and/or end.

flutter — spectral analysis showed three culprits:

  • a full-spectrum click at onset (~0.01s)
  • hard phase discontinuities between the four note segments (0.14s / 0.23s / 0.33s)
  • broadband high-frequency hash from ~2.4 kHz up to ~16.8 kHz

All 11 other sounds (bong, boo, dng, doo, doodone, doong, doop, flirl, oh-no, ping, unison):

  • onset clicks — every file starts mid-waveform at high amplitude (e.g. flirl's first sample is +0.57 of full scale), an instant discontinuity pop
  • end clicks — every file is hard-truncated at the file boundary while still audible (−21 to −36 dBFS in the final 2 ms)
  • clippingoh-no decodes above full scale (+0.6 dBFS); doong hits 0 dBFS; boo/doodone/unison are within 0.2 dB of full scale

Fix

Reprocessed all samples with the same ffmpeg chain:

  • adeclick to remove onset clicks and phase discontinuities
  • 9 kHz low-pass (all harmonic content tops out well below this) and 60 Hz high-pass
  • 10 ms onset fade-in and 80–130 ms tail fade-out so every file starts and ends at true silence
  • per-file makeup gain so mean loudness matches each original (within ~0.3 dB)
  • peak limiting to −0.8 dBFS on the four near-full-scale sounds (boo, doodone, doong, unison)
  • re-encoded at 192 kbps / 48 kHz stereo; durations unchanged

Regenerated all waveform SVGs via scripts/generate-sound-waveforms.mjs.

Verified programmatically: all files now start at ~0 amplitude and end below −55 dBFS, with no sample-level discontinuities.

Tracking: AGNTOPS-339

The default flutter notification sound had a full-spectrum click at
onset, hard phase discontinuities between note segments, and broadband
high-frequency hash — audible as crunch. Reprocessed the sample with
de-clicking, a 9 kHz low-pass to remove the hash while keeping all
harmonics, gentle onset/tail fades, and makeup gain so perceived
loudness matches the original. Regenerated the waveform SVG.

Amp-Thread-ID: https://ampcode.com/threads/T-019fa998-ed98-7793-84ca-4950ef2eb536
Co-authored-by: Amp <amp@ampcode.com>
Signed-off-by: Joah Gerstenberg <joah@squareup.com>
@joahg
joahg marked this pull request as ready for review July 28, 2026 16:47
@joahg
joahg requested a review from a team as a code owner July 28, 2026 16:47
…on sounds

All 11 remaining notification sounds had audible clicks: every file
started mid-waveform at high amplitude (onset pop, e.g. flirl at +0.57
full scale) and was hard-truncated at the file boundary while still
audible (end click, -21 to -36 dBFS at the last 2ms). oh-no also
decoded above full scale (+0.6 dBFS) and doong hit 0 dBFS.

Applied the same treatment as flutter: de-click, 9 kHz low-pass, 60 Hz
high-pass, 10 ms onset fade, tail fade-out, and per-file makeup gain so
mean loudness matches each original. Peak-limited the four near-full-
scale sounds to -0.8 dBFS. Regenerated waveform SVGs.

Co-authored-by: Amp <amp@ampcode.com>
Signed-off-by: Joah Gerstenberg <joah@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019fa9ab-1c34-77cf-b69e-dc55b553c341
@joahg joahg changed the title fix(desktop): clean up crunchy default notification sound fix(desktop): clean up clicks and artifacts in all notification sounds Jul 28, 2026
@cameronhotchkies cameronhotchkies added the triage-ready Appropriate for agentic review label Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

triage-ready Appropriate for agentic review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants