Everything is synthesized via Web Audio (oscillators/filters) — no
external audio files, since sourcing licensed music/SFX isn't something
to do without the rights to it, and synthesis fits the HUD aesthetic
anyway:
- Claim: rising power-up blip
- Link: descending zap
- Field closes: ascending 4-note arpeggio (distinct from a plain link —
checks fields.length before/after to tell them apart)
- Rejected action: low buzz
- Minor UI (marker select, sync): short neutral blip
- Background: generative ambient loop (minor-pentatonic arpeggio through
a lowpass filter + short feedback delay), starts on map mount, stops
on unmount (was leaking into the login screen on logout otherwise)
🔊/🔇 toggle in the header, persisted to localStorage (regress_muted),
takes effect immediately including stopping/resuming the ambient loop.