feat(core,studio): the character presets pitch shift unlocks

Chipmunk, Giant, and Monster ship as presets on the pitchshift worklet
P1 added: Chipmunk pitches up and adds sparkle, Giant pitches down with
weight and a compressor to hold the extra low end together, Monster pitches
down further with saturation growl and a close, tight reverb. Every param
verified against the live effect registry rather than sketched — the
compressor/reverb/saturate/shelf keys all match exactly.

Each gets its own title treatment (font, size, tracking, hue) so the FX
rack's per-preset styling coverage and hue-distance/background-uniqueness
tests extend cleanly to the three new entries, and complaint-line copy in
the non-voice vocabulary the audit test enforces (no speech words — "Giant"
over CapCut's "Deep Voice", as the design doc records).

Updates plans/audio-fx-presets.md's two limits paragraphs to record that
pitch shift landed and this half of the character list now ships; Robot and
Alien stay out of scope (ring modulation, still unbuilt).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Vance Ingalls
2026-08-20 02:08:26 -07:00
co-authored by Claude Sonnet 5
parent 8e506b7c50
commit 6c128620e9
4 changed files with 50 additions and 2 deletions
@@ -150,6 +150,24 @@ export const FX_PRESET_STYLE: Record<string, FxPresetStyle> = {
color: "hsl(288, 85%, 72%)",
family: FACE.theatrical,
},
// Small, fast and squeaky — tight and bright, nothing about it sits still.
chipmunk: {
type: "text-[12px] font-black uppercase tracking-tighter",
color: "hsl(54, 88%, 66%)",
family: FACE.geometric,
},
// Huge and slow — the biggest size here, set on a face bolted to a monument.
giant: {
type: "text-[18px] font-black tracking-[0.02em]",
color: "hsl(250, 72%, 68%)",
family: FACE.engraved,
},
// Rough and too close — heavy industrial caps, growled rather than shouted.
monster: {
type: "text-[15px] font-black uppercase tracking-[0.05em]",
color: "hsl(350, 78%, 64%)",
family: FACE.condensed,
},
// --- space: rooms. Light and wide, because that is what space looks like ---
"room-tight": {