Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/core/src/audioFxCopy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,9 @@ export const PRESET_PROBLEM: Record<string, string> = {
"pa-system": "Make it sound like a station announcement",
intercom: "Make it sound like a door intercom",
"doofus-worble": "Make it wobble like it is seasick",
chipmunk: "Make it small and squeaky",
giant: "Make it huge and deep",
monster: "Make it a monster",
"room-tight": "It sounds dry and stuck to the speaker",
"room-natural": "It should sound like a real place",
hall: "It should sound far away and big",
Expand Down
22 changes: 22 additions & 0 deletions packages/core/src/audioFxPresets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,28 @@ export const HF_AUDIO_FX_PRESETS: readonly HfAudioFxPreset[] = [
},
],
),
preset("chipmunk", "character", "Chipmunk", "Small, fast and squeaky.", [
{ type: "pitchshift", label: "Up High", params: { semitones: 7, mix: 1 } },
{ type: "highshelf", label: "Extra Sparkle", params: { frequency: 4000, gain: 3 } },
]),
preset("giant", "character", "Giant", "Huge, slow and deep.", [
{ type: "pitchshift", label: "Down Low", params: { semitones: -5, mix: 1 } },
{ type: "lowshelf", label: "Add Weight", params: { frequency: 150, gain: 4 } },
{
type: "compressor",
label: "Hold It Together",
params: { threshold: -18, ratio: 3, attack: 10, release: 120, knee: 6, makeup: 2, mix: 1 },
},
]),
preset("monster", "character", "Monster", "Deep, rough and too close.", [
{ type: "pitchshift", label: "Down Low", params: { semitones: -8, mix: 1 } },
{ type: "saturate", label: "Growl", params: { type: "tanh", threshold: -12, output: -1 } },
{
type: "reverb",
label: "Right Behind You",
params: { size: 0.3, damping: 0.5, wet: 0.22, dry: 0.85 },
},
]),

// ---------------------------------------------------------------- space --
preset("room-tight", "space", "Tight Room", "A small hard room — presence without wash.", [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
9 changes: 7 additions & 2 deletions plans/audio-fx-presets.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ These are ordinary filter + saturation + bitcrush recipes and we can do all of
them. **The character half of CapCut's list we cannot do**: Chipmunk, Deep
Voice, Robot, Alien, Monster, Elf — every one of those is pitch, formant or
ring modulation, and the registry has no pitch shifter, no time-stretch and no
ring mod. Out of scope unless a new effect is added.
ring mod. Out of scope unless a new effect is added. **Update (2026-08-14,
PR #3276/#3277):** a pitch shifter landed, and Chipmunk, Giant, and Monster now
ship as presets; Robot and Alien are still out of scope (they need ring
modulation, which the registry still does not have).

---

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

---

Expand Down
Loading