feat(audio): Audio source dropdown (None/Soundtrack/Music) + Volume rename #32

Merged
benstull merged 3 commits from worktree-audio-music-option into main 2026-07-02 05:28:12 +00:00
Owner

Summary

Splits the single 0–10 Audio slider into two Output controls:

  • Audio — a dropdown selecting the source: None / Soundtrack / Music
  • Volume — the renamed 0–10 slider (master gain for the active source)

Music is one ethereal, relaxing ambient loop played the same at every altitude (no per-altitude crossfade), per the innerflo.me brief.

Music asset (CC0)

  • deadrobotmusic — "Ambient F Sharp Minor Ethereal Choir Pad 1" (freesound #808032), CC0, 3:34.
  • Sourced from the hq preview, looped + loudness-normalized via build_audio_media.py, committed via git-LFS at audio/music/ethereal.loop.mp3.
  • Added to the candidate-pool doc and the public credits colophon.

Design

  • Routing lives in a pure, node-tested HEFScrub.audioPlan(source, level, frac); app.js restAudio/blendAudio consult it. None greys out Volume.
  • Welcome-screen mirror level slider relabeled Volume too. i18n for en/es/fr/ja.
  • Spec: docs/superpowers/specs/2026-07-01-audio-music-option-design.md

Tests

  • +5 node unit (audioPlan), +4 e2e (audio-source.spec.ts). 38 node unit + 36 e2e green; live probe confirms Music actually plays (#aud advances, #aud-b silent).

Operator NEXT

  • By-ear review of the Music track, then Cloudflare redeploy (push media to R2). Asset is already in the repo, so no sourcing step remains.

🤖 Generated with Claude Code

## Summary Splits the single 0–10 **Audio** slider into two Output controls: - **Audio** — a dropdown selecting the source: **None / Soundtrack / Music** - **Volume** — the renamed 0–10 slider (master gain for the active source) **Music** is one ethereal, relaxing ambient loop played the same at every altitude (no per-altitude crossfade), per the innerflo.me brief. ## Music asset (CC0) - deadrobotmusic — "Ambient F Sharp Minor Ethereal Choir Pad 1" (freesound #808032), CC0, 3:34. - Sourced from the hq preview, looped + loudness-normalized via `build_audio_media.py`, committed via git-LFS at `audio/music/ethereal.loop.mp3`. - Added to the candidate-pool doc and the public credits colophon. ## Design - Routing lives in a pure, node-tested `HEFScrub.audioPlan(source, level, frac)`; `app.js` restAudio/blendAudio consult it. None greys out Volume. - Welcome-screen mirror level slider relabeled Volume too. i18n for en/es/fr/ja. - Spec: `docs/superpowers/specs/2026-07-01-audio-music-option-design.md` ## Tests - +5 node unit (`audioPlan`), +4 e2e (`audio-source.spec.ts`). 38 node unit + 36 e2e green; live probe confirms Music actually plays (#aud advances, #aud-b silent). ## Operator NEXT - By-ear review of the Music track, then Cloudflare redeploy (push media to R2). Asset is already in the repo, so no sourcing step remains. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
benstull added 3 commits 2026-07-02 05:27:55 +00:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Split the single 0–10 'Audio' slider into two controls:
- Audio  — a dropdown selecting the source: None / Soundtrack / Music
- Volume — the renamed 0–10 slider (master gain for the active source)

Music is one ethereal, relaxing ambient loop played the same at every
altitude (no per-altitude crossfade), per the innerflo.me brief. Sourced
CC0: deadrobotmusic 'Ambient F Sharp Minor Ethereal Choir Pad' (freesound
#808032); added to build_audio_media.py, the candidate-pool doc, and the
public credits colophon. Media stays gitignored; run build_audio_media.py.

Routing lives in a pure, node-tested HEFScrub.audioPlan(source, level, frac);
app.js's restAudio/blendAudio consult it. None greys out Volume. The welcome
screen's mirror level slider is relabeled Volume too. i18n for all 4 langs.

Spec: docs/superpowers/specs/2026-07-01-audio-music-option-design.md
Tests: +5 node unit (audioPlan), +4 e2e (audio-source.spec.ts); 32 related
e2e green, 38 node unit green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Music-option asset produced by build_audio_media.py: deadrobotmusic
'Ambient F Sharp Minor Ethereal Choir Pad' (CC0), sourced from the freesound
hq preview and looped/loudness-normalized to ethereal.loop.mp3 (3:34). Both
the raw source and the served loop are committed via git-LFS, matching the
per-scale soundtracks; served at /media/audio/music/ethereal.loop.mp3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
benstull merged commit f6b45b6cd7 into main 2026-07-02 05:28:12 +00:00
Sign in to join this conversation.