|
| 1 | +# Presets, jobs and one-knob profiles |
| 2 | + |
| 3 | +Everything here is a shortcut to a chain you could have built by hand. A preset |
| 4 | +writes ordinary nodes tagged with `fromPreset`, a job writes one ordinary node |
| 5 | +with a name, and a profile is one control over several parameters of one effect. |
| 6 | +Nothing is opaque: open any of them and you find effects from |
| 7 | +[`fx-registry.md`](./fx-registry.md) with their parameters showing. |
| 8 | + |
| 9 | +Reach for one when it names the problem you actually have. Build by hand when |
| 10 | +none of them does — a preset applied because it was nearby is worse than three |
| 11 | +deliberate nodes. |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## Diagnose first: what to listen for, and what fixes it |
| 16 | + |
| 17 | +Work from the symptom, not from the effect list. Most bad audio is one or two of |
| 18 | +these, and the fix is usually a job rather than a whole preset. |
| 19 | + |
| 20 | +| It sounds like | Where it lives | Reach for | |
| 21 | +| --- | --- | --- | |
| 22 | +| Hum, rumble, traffic, footsteps, handling | 20–80 Hz | `rumble-cut` preset, or a `highpass` at 80 Hz | |
| 23 | +| Boomy, chesty, too close to the mic | 80–250 Hz | **Tame Boominess** job (200 Hz, −4 dB) | |
| 24 | +| Muffled, like it is behind cardboard | 250–600 Hz | **Reduce Mud** job (250 Hz, −3 dB) | |
| 25 | +| Boxy, like a small room | ~400 Hz | **Reduce Boxiness** job (400 Hz, −3 dB) | |
| 26 | +| Words hard to make out, sits behind the music | 2–5 kHz | **Add Clarity** job (3 kHz, +2.5 dB), or carve the bed | |
| 27 | +| Harsh, brittle, tiring over a whole listen | 3–5 kHz | **Soften Harshness** job (3.2 kHz, −3 dB) | |
| 28 | +| Sibilant — `s` sounds spitting | 5–10 kHz | Nothing shipped does this properly; see "Not covered" below | |
| 29 | +| Dull, closed-in, lifeless | 10–20 kHz | `highshelf` lift, or `voice-broadcast` which includes one | |
| 30 | +| Some words much louder than others | not a band | **Evenness** profile on a `compressor`, or `levellingResult` | |
| 31 | +| Room tone audible between sentences | not a band | `room-gate` preset (**Tightness** profile) | |
| 32 | +| Peaks clipping or spiking | not a band | `limiter` last in the chain — every voice preset ends in one | |
| 33 | +| Voice and music fighting each other | 1–3 kHz mostly | **Voiceover carve**, not an EQ on either track | |
| 34 | +| Dry, stuck to the speaker, recorded nowhere | not a band | `room-tight` or `room-natural` | |
| 35 | + |
| 36 | +**The band vocabulary** these map onto — the same names the rack shows: |
| 37 | + |
| 38 | +| Range | Name | What lives there | |
| 39 | +| --- | --- | --- | |
| 40 | +| 20–80 Hz | Rumble | traffic, footsteps, handling | |
| 41 | +| 80–250 Hz | Weight | chest, body, warmth | |
| 42 | +| 250–600 Hz | Mud | boxy, muffled, cardboard | |
| 43 | +| 600–2000 Hz | Middle | the body of a voice | |
| 44 | +| 2000–5000 Hz | Presence | consonants, intelligibility | |
| 45 | +| 5000–10000 Hz | Edge | sibilance, harshness | |
| 46 | +| 10000–20000 Hz | Air | sparkle, openness | |
| 47 | + |
| 48 | +### Order of operations |
| 49 | + |
| 50 | +Diagnose in this order, because each step changes what the next one hears: |
| 51 | + |
| 52 | +1. **Subtract before you add.** Cut rumble and mud first. A voice that sounds |
| 53 | + dull often has too much low-mid, not too little top — lifting the top of a |
| 54 | + muddy voice makes it muddy *and* harsh. |
| 55 | +2. **Level after you filter.** A compressor reacts to whatever is loudest, and |
| 56 | + a rumble it can no longer see is a rumble it stops chasing. |
| 57 | +3. **Relationships after level.** Carve a bed against a voice once the voice |
| 58 | + itself is settled, or the analysis measures a problem you are about to fix. |
| 59 | +4. **Character, then ceiling.** Saturation and space go late; a `limiter` goes |
| 60 | + last, where it can actually act as a ceiling. Anything after it is not |
| 61 | + bounded by it. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## Presets |
| 66 | + |
| 67 | +18, in four families. Apply one and it **appends** — stacking a character preset |
| 68 | +onto an already-cleaned voice is a real thing to want. Re-applying one that is |
| 69 | +already present replaces its own nodes in place, because position in the chain |
| 70 | +is signal order. |
| 71 | + |
| 72 | +### Voice — make a real voice sound like its better self |
| 73 | + |
| 74 | +| Preset | Answers | Chain | |
| 75 | +| --- | --- | --- | |
| 76 | +| `voice-clean` | "My voice sounds amateur" | Remove Rumble → Reduce Mud → Even Out Loudness → Add Clarity → Peak Ceiling | |
| 77 | +| `voice-broadcast` | "I want it to sound like radio" | Remove Rumble → Reduce Boxiness → Even Out Loudness → Add Clarity → Add Air → Warmth → Peak Ceiling | |
| 78 | +| `voice-warm` | "I want it intimate and close" | Remove Rumble → Add Weight → Even Out Loudness → Add Clarity → Peak Ceiling | |
| 79 | + |
| 80 | +`voice-clean` is the default answer to "fix this voiceover". The other two are |
| 81 | +the same idea pushed in one direction: broadcast is denser and more forward, |
| 82 | +warm has body added rather than cut. |
| 83 | + |
| 84 | +### Repair — one problem, one node |
| 85 | + |
| 86 | +| Preset | Answers | Does | |
| 87 | +| --- | --- | --- | |
| 88 | +| `rumble-cut` | "There's a hum or thump underneath" | High-pass under the voice | |
| 89 | +| `room-gate` | "I can hear the room between sentences" | Closes the pauses. **Does not remove noise** — room tone under speech stays | |
| 90 | +| `boom-tame` | "My voice sounds boomy" | Cuts the chestiness of a too-close mic | |
| 91 | +| `harsh-tame` | "It's harsh and tiring to listen to" | Rounds a brittle upper-mid, broad and always-on | |
| 92 | + |
| 93 | +### Character — deliberate, not corrective |
| 94 | + |
| 95 | +`telephone`, `radio-am`, `megaphone`, `lofi-tape`, `pa-system` (Tannoy), |
| 96 | +`intercom`, `doofus-worble`. |
| 97 | + |
| 98 | +These are costumes. Each is a band restriction plus a resonance plus its own kind |
| 99 | +of dirt, and they are tuned to be distinguishable from one another — measured on |
| 100 | +a log sweep, no two sit closer than the signal itself. Do not stack two. |
| 101 | + |
| 102 | +### Space — put it somewhere |
| 103 | + |
| 104 | +`room-tight` (presence without wash), `room-natural` (recorded somewhere rather |
| 105 | +than nowhere), `hall` (far back and big), `slap-echo` (one quick repeat), |
| 106 | +`dub-throw` (repeats trailing well behind). |
| 107 | + |
| 108 | +Use these on whatever should sit *behind* something else, and keep the wet amount |
| 109 | +lower than sounds right in isolation — a tail occupies the room a voice needs. |
| 110 | + |
| 111 | +### The whole preset as one control |
| 112 | + |
| 113 | +A preset's nodes are wrapped in a wet/dry blend, so `presetAmount` (0..1) fades |
| 114 | +the entire thing in or out, and `fx.preset.<id>` is an automation target that |
| 115 | +ramps it over time. This is the only way to automate a preset as a unit: its |
| 116 | +nodes share no common parameter, and worklet effects (compressor, limiter, gate, |
| 117 | +bitcrush) expose no automatable parameters at all. |
| 118 | + |
| 119 | +--- |
| 120 | + |
| 121 | +## Jobs — the range IS the module |
| 122 | + |
| 123 | +Five named peaking filters with the frequency already chosen. Picking the job is |
| 124 | +picking the range, which is what makes a single "how much" knob honest. |
| 125 | + |
| 126 | +| Job | Symptom | Sets | |
| 127 | +| --- | --- | --- | |
| 128 | +| Tame Boominess | Too much chest — it booms | 200 Hz, −4 dB, Q 1.4 | |
| 129 | +| Reduce Mud | Muffled, like it is behind cardboard | 250 Hz, −3 dB, Q 1.2 | |
| 130 | +| Reduce Boxiness | Sounds like a small room, or a box | 400 Hz, −3 dB, Q 1.4 | |
| 131 | +| Add Clarity | Words are hard to make out | 3 kHz, +2.5 dB, Q 1 | |
| 132 | +| Soften Harshness | Harsh and tiring to listen to | 3.2 kHz, −3 dB, Q 1.6 | |
| 133 | + |
| 134 | +Each is an ordinary `peaking` node underneath — the frequency is a starting |
| 135 | +point, not a cage. Prefer a job to a bare `peaking` when one matches: it arrives |
| 136 | +already aimed, and the rack names it for the work rather than the mechanism. |
| 137 | + |
| 138 | +--- |
| 139 | + |
| 140 | +## One-knob profiles |
| 141 | + |
| 142 | +Five effects have no single parameter that can honestly be their face — a |
| 143 | +compressor's threshold means nothing without its ratio. They get a derived |
| 144 | +control instead, 0..1, which sets several parameters together. |
| 145 | + |
| 146 | +| Effect | Knob | 0 → 1 | Sets | |
| 147 | +| --- | --- | --- | --- | |
| 148 | +| `compressor` | Evenness | Barely touched → Very even, quite squashed | threshold, ratio, attack, release, makeup | |
| 149 | +| `gate` | Tightness | Only true silence → Cuts quiet words too | threshold, range, release | |
| 150 | +| `saturate` | Warmth | Just a sheen → Openly distorted | threshold, output | |
| 151 | +| `reverb` | Space | A small tight room → A big open hall | size, wet, dry | |
| 152 | +| `bitcrush` | Crush | Slightly gritty → Destroyed | bits, samples, mix | |
| 153 | + |
| 154 | +**Evenness, Warmth and Space are level-matched** — the make-up gain, the output |
| 155 | +trim and the dry leg move with the drive, so turning the knob up does not also |
| 156 | +turn the track up or down. Those figures were solved by measurement, not chosen: |
| 157 | +the compressor originally left a track 2.5 dB *quieter* at full evenness, and |
| 158 | +saturation's trim ran the wrong way entirely. |
| 159 | + |
| 160 | +Tightness and Crush are not level-matched, because neither has a trim to move — |
| 161 | +a gate only removes, and Crush's `mix` is the effect itself rather than a |
| 162 | +make-up. |
| 163 | + |
| 164 | +The chain stores the mechanism values, not the knob position; the knob is read |
| 165 | +back by inverting the curve. So hand-editing a parameter under a profile is |
| 166 | +allowed and will simply move the knob. |
| 167 | + |
| 168 | +--- |
| 169 | + |
| 170 | +## Measuring scripts, not presets |
| 171 | + |
| 172 | +Two things measure the audio before they act, so they cannot be a fixed chain: |
| 173 | + |
| 174 | +- **Voiceover carve** — analyses the voice and cuts the bed in the bands the |
| 175 | + voice occupies. The answer to "the music is fighting the voice". See the |
| 176 | + carve section in `SKILL.md`. |
| 177 | +- **Even Out Levels** (`levellingResult`) — measures the track's own speaking |
| 178 | + windows and writes a gain envelope. Its target is the 80th percentile of that |
| 179 | + track, not an absolute level, so an already-even track is left alone. Use it |
| 180 | + over a compressor when the problem is passages drifting over a whole take |
| 181 | + rather than word-to-word dynamics. |
| 182 | + |
| 183 | +--- |
| 184 | + |
| 185 | +## Not covered by anything shipped |
| 186 | + |
| 187 | +Say so rather than reaching for the nearest preset: |
| 188 | + |
| 189 | +- **De-essing.** `harsh-tame` is a broad always-on cut, not a de-esser. A real |
| 190 | + one needs a detector faster than the analysis hop available here. |
| 191 | +- **Tone matching** one track to another. The Tone EQ does the job predictably |
| 192 | + by hand instead. |
| 193 | +- **Noise removal.** `room-gate` closes the gaps; the noise under speech is |
| 194 | + untouched. A source with audible hiss under the voice needs a better source. |
0 commit comments