Skip to content

Commit cd95622

Browse files
vanceingallsclaude
andcommitted
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 <[email protected]>
1 parent 0ec9de4 commit cd95622

4 files changed

Lines changed: 50 additions & 2 deletions

File tree

‎packages/core/src/audioFxCopy.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,9 @@ export const PRESET_PROBLEM: Record<string, string> = {
339339
"pa-system": "Make it sound like a station announcement",
340340
intercom: "Make it sound like a door intercom",
341341
"doofus-worble": "Make it wobble like it is seasick",
342+
chipmunk: "Make it small and squeaky",
343+
giant: "Make it huge and deep",
344+
monster: "Make it a monster",
342345
"room-tight": "It sounds dry and stuck to the speaker",
343346
"room-natural": "It should sound like a real place",
344347
hall: "It should sound far away and big",

‎packages/core/src/audioFxPresets.ts‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,28 @@ export const HF_AUDIO_FX_PRESETS: readonly HfAudioFxPreset[] = [
333333
},
334334
],
335335
),
336+
preset("chipmunk", "character", "Chipmunk", "Small, fast and squeaky.", [
337+
{ type: "pitchshift", label: "Up High", params: { semitones: 7, mix: 1 } },
338+
{ type: "highshelf", label: "Extra Sparkle", params: { frequency: 4000, gain: 3 } },
339+
]),
340+
preset("giant", "character", "Giant", "Huge, slow and deep.", [
341+
{ type: "pitchshift", label: "Down Low", params: { semitones: -5, mix: 1 } },
342+
{ type: "lowshelf", label: "Add Weight", params: { frequency: 150, gain: 4 } },
343+
{
344+
type: "compressor",
345+
label: "Hold It Together",
346+
params: { threshold: -18, ratio: 3, attack: 10, release: 120, knee: 6, makeup: 2, mix: 1 },
347+
},
348+
]),
349+
preset("monster", "character", "Monster", "Deep, rough and too close.", [
350+
{ type: "pitchshift", label: "Down Low", params: { semitones: -8, mix: 1 } },
351+
{ type: "saturate", label: "Growl", params: { type: "tanh", threshold: -12, output: -1 } },
352+
{
353+
type: "reverb",
354+
label: "Right Behind You",
355+
params: { size: 0.3, damping: 0.5, wet: 0.22, dry: 0.85 },
356+
},
357+
]),
336358

337359
// ---------------------------------------------------------------- space --
338360
preset("room-tight", "space", "Tight Room", "A small hard room — presence without wash.", [

‎packages/studio/src/components/editor/propertyPanelFxPresetStyle.ts‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,24 @@ export const FX_PRESET_STYLE: Record<string, FxPresetStyle> = {
150150
color: "hsl(288, 85%, 72%)",
151151
family: FACE.theatrical,
152152
},
153+
// Small, fast and squeaky — tight and bright, nothing about it sits still.
154+
chipmunk: {
155+
type: "text-[12px] font-black uppercase tracking-tighter",
156+
color: "hsl(54, 88%, 66%)",
157+
family: FACE.geometric,
158+
},
159+
// Huge and slow — the biggest size here, set on a face bolted to a monument.
160+
giant: {
161+
type: "text-[18px] font-black tracking-[0.02em]",
162+
color: "hsl(250, 72%, 68%)",
163+
family: FACE.engraved,
164+
},
165+
// Rough and too close — heavy industrial caps, growled rather than shouted.
166+
monster: {
167+
type: "text-[15px] font-black uppercase tracking-[0.05em]",
168+
color: "hsl(350, 78%, 64%)",
169+
family: FACE.condensed,
170+
},
153171

154172
// --- space: rooms. Light and wide, because that is what space looks like ---
155173
"room-tight": {

‎plans/audio-fx-presets.md‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,10 @@ These are ordinary filter + saturation + bitcrush recipes and we can do all of
8888
them. **The character half of CapCut's list we cannot do**: Chipmunk, Deep
8989
Voice, Robot, Alien, Monster, Elf — every one of those is pitch, formant or
9090
ring modulation, and the registry has no pitch shifter, no time-stretch and no
91-
ring mod. Out of scope unless a new effect is added.
91+
ring mod. Out of scope unless a new effect is added. **Update (2026-08-14,
92+
PR #3276/#3277):** a pitch shifter landed, and Chipmunk, Giant, and Monster now
93+
ship as presets; Robot and Alien are still out of scope (they need ring
94+
modulation, which the registry still does not have).
9295

9396
---
9497

@@ -112,7 +115,9 @@ Plus two force multipliers the catalog depends on:
112115
**Hard limits, stated once:** no noise reduction, no de-reverberation, no pitch
113116
or formant shift, no time-stretch, no spectral repair, no stereo widening
114117
beyond `chorus`, no true multiband compression (though stacked peaking + a
115-
`mix`-blended compressor approximates it).
118+
`mix`-blended compressor approximates it). **Update (2026-08-14, PR
119+
#3276):** pitch shift landed as a worklet effect — the "no pitch or formant
120+
shift" limit above is now half-lifted (pitch, still no formant shift).
116121

117122
---
118123

0 commit comments

Comments
 (0)