feat(bin): add sfx to render notification sounds offline from TOML recipes

sfx is a single-file uv script that synthesises sounds from sine partials and seeded noise, so its output contains no samples, SoundFonts or model output, renders without a network once uv has installed numpy and mido, and comes out byte-identical on every run. Each sound in a recipe is normalised to a target loudness (ITU-R BS.1770, default -26 LUFS, the level of the macOS Glass alert) and written as WAV, with optional MP3 through ffmpeg and a MIDI file of the same notes. Unknown keys and bad note names stop the render with an error naming the table.

The new sound-design skill documents the recipe format and how to design notification sounds; link-ai-configs.sh links it for omo and Claude Code.
This commit is contained in:
David Ibia
2026-10-18 12:55:57 +01:00
parent 161d205dfd
commit 5805f45358
5 changed files with 396 additions and 4 deletions
+2 -2
View File
@@ -50,8 +50,8 @@ targets=(
# steps are in .config/omo/skills/README.md. frontend-workflow is the OmO
# delegation process skill and is not linked into Claude Code; the rest are
# shared by both harnesses.
omo_skills=(frontend-workflow impeccable web-design-guidelines product-marketing copywriting copy-editing emails cold-email content-strategy seo-audit ai-seo launch social)
claude_skills=(impeccable web-design-guidelines product-marketing copywriting copy-editing emails cold-email content-strategy seo-audit ai-seo launch social)
omo_skills=(frontend-workflow impeccable web-design-guidelines product-marketing copywriting copy-editing emails cold-email content-strategy seo-audit ai-seo launch social sound-design)
claude_skills=(impeccable web-design-guidelines product-marketing copywriting copy-editing emails cold-email content-strategy seo-audit ai-seo launch social sound-design)
for skill in "${omo_skills[@]}"; do
sources+=(".config/omo/skills/$skill")
targets+=(".omo/agent/skills/$skill")