Skip to content

Commit 9bfbace

Browse files
vanceingallsclaude
andcommitted
docs(plans): record why the de-esser and tone match were not built
De-esser is deferred with its two design constraints written down, because neither is visible until you try to build it: analyseCarveDynamics' 85-150 ms hop cannot land on 50-150 ms sibilants and needs re-parameterising, and MAX_AUTOMATION_POINTS is 512 while a long voiceover holds hundreds of sibilant events at three or four points each — so a naive lane blows the cap and the scheduler truncates it silently, leaving an envelope that stops partway through the clip. The leveller is its structural template. Tone match is superseded for v1. It existed to let a casual author fix a track's tone without understanding frequencies, and the Tone EQ now does that with a control they already know and does it predictably. What is left is matching one track to another, which is genuinely advanced and carries real unknowns nobody has asked us to resolve. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 3513d6d commit 9bfbace

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

plans/audio-fx-presets.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,33 @@ also dissolved the duplicate-name problem at the root.
454454
it to an absolute figure turns levelling into a volume change. The 80th
455455
percentile of the track's own speaking windows is the figure that works.
456456

457+
## 6c. The two scripts NOT built, and why
458+
459+
**De-esser — deferred, not abandoned.** The leveller is its structural template:
460+
analysis → profile → result → remove → summary, with a mutation pass over each.
461+
Two constraints have to be designed for before it is written, and neither is
462+
visible until you try:
463+
464+
1. `analyseCarveDynamics` cannot be reused unchanged. Its hop is
465+
`max(FRAME, length / POINT_BUDGET)` — 85 ms at best, ~150 ms on a
466+
real-length track — while sibilants are 50–150 ms events. At that resolution
467+
the envelope cannot land on them, and its `ATTACK_S`/`RELEASE_S` are tuned
468+
for musical ducking besides. Same machinery, re-parameterised for a
469+
sibilance timescale.
470+
2. **`MAX_AUTOMATION_POINTS` is 512.** A dip needs three or four points, and a
471+
long voiceover holds hundreds of sibilant events, so a naive lane blows the
472+
cap and the scheduler truncates it — silently, leaving an envelope that
473+
stops partway through the clip. Budget it up front: strongest-N events, or
474+
merge adjacent dips.
475+
476+
**Tone match — superseded for v1.** It existed to give a casual author a way to
477+
fix the tone of a track without understanding frequencies. The Tone EQ now does
478+
that with a control they already know, and it does it *predictably*, which
479+
matching against a reference clip does not. What remains is genuinely advanced
480+
— matching one track to another — and it carries real unknowns: which reference,
481+
how much correction, what to do when the two sources have different content.
482+
Not worth building before anyone has asked for it.
483+
457484
## 7. What to build first
458485

459486
1. **Character presets** (§5c) — highest ratio of delight to risk. Pure

0 commit comments

Comments
 (0)