docs(ideas): record producer feedback on note tracking and usability

Producers find most plugins confusing: the note readout flickers on real
basses, and Anvil did not do what they expected. Record the causes (one
shared fast-reacting tracker behind nine plugins, wrong guesses acted on,
DSP-named controls, hidden MIDI routing), principles for the next round and
an order of work.
This commit is contained in:
nvrl committed 2026-11-06 17:59:07 +01:00
1 parent d5bdd3e2c7
commit 7c873f2bd0
1 file changed
+119
+119
View File
@@ -91,6 +91,125 @@ Patina. Findings from the audit:
- **Settings handling differs.** Patina has presets and A/B; the others do not.
Lathe's drawn gains and Knurl's drawn pattern cannot be automated.
## Producer feedback (2026-11-06)
Feedback from producers who tried the suite: most plugins are confusing to use.
One example: "why does it try to detect the key? It switches around fast,
because sounds usually aren't just one kind of note." Anvil "was kind of cool,
but didn't do what we expected." Patina's feedback (threshold, ratio) is handled
in Patina 0.5.0.
### What goes wrong
1. **Nine of thirteen plugins depend on one hidden guess: the note.** Anvil,
Lathe, Temper, Knurl, Planish, Braze, Forge, Ballast (Notes mode) and
Crucible (file names) all read the pitch from the audio. Patina's Tone guard
also does, but it is off by default. Our tests use saws and sines, where
tracking is perfect. Real riddim basses are FM growls, formant sweeps, noise,
pitch drops, stacked octaves and layers. On those, "the note" is often not
one note.
2. **The tracker is built to react fast, not to stay put.** In
`common-dsp/src/tracker.rs`, a move of 0.7 semitone that holds for two 5 ms
hops starts a new note. Smaller moves retune every 5 ms. Frames below
clarity 0.5 are skipped, but the last guess stays in use. On a growl, the
formant and FM movement reads as a pitch moving every few milliseconds, and
octave errors count as new notes. The NOTE readout flickers, and everything
tuned to the note moves with it. That is the "switches around fast".
3. **A wrong guess is worse than no guess.** When tracking is wrong, a tracked
plugin does something no normal plugin would do:
- Anvil plays a sub at the wrong pitch.
- Lathe moves its bands onto the wrong frequencies.
- Temper's Floor, Push and Bright filters jump.
- Planish's band edges jump, so the bands pump.
- Braze's beating leaves the grid.
- Knurl's cycle clock runs at the wrong rate.
- Crucible names a slice after a note it is not.
A producer cannot tell this from "the plugin is broken".
4. **The plugins explain themselves in DSP terms.** Harmonic numbers, cycles,
periods, splits, phase and allpass sections. A producer reads the category
("EQ", "distortion", "OTT", "sub") and expects that behaviour. When the
tracked behaviour differs, it feels random.
5. **The escape route is hidden.** MIDI as the pitch source fixes the guess,
but in FL Studio it needs the channel's MIDI output port and the effect's
input port set to the same number. Few producers know how to do that.
6. **Panels show everything at once.** Most plugins put 10–20 controls on the
front panel, with equal weight. The one or two that matter for the first
result do not stand out.
### Principles for the next round
- **Never act on a guess you are unsure of.** Every tracked plugin falls back
to something neutral when tracking is unsure: pass the audio through, keep
the original sub, or use fixed-Hz settings. It does not fall back to the last
guess. Show this state: the NOTE readout dims or shows "—".
- **Stable by default.** A new note needs a confident pitch held for 40–60 ms.
An octave jump needs longer still. Inside a note, the tuning holds and does
not retune every hop, unless the user turns on "Follow bends".
- **Let the producer say the note.** Add a third pitch source next to AUDIO and
MIDI: **NOTE** or **KEY**. The producer picks the root (for example F), and
the plugin uses it with no detection at all. Most riddim drops sit on one or
two roots. A scale lock goes in between: detection may only pick notes in the
chosen key. This removes the micro-jumps and most wrong notes.
- **Name controls by outcome, not by mechanism.** Use names like "Sub level"
and "Tighten". Show one big main control per plugin, and move the rest under
an "Advanced" fold.
- **Test on real material.** Collect 5–10 short stems: a growl, an FM bass, a
reese, an 808 with a slide, a formant bass, a layered drop, a noise riser.
Add a tracker metric for note changes per second and the share of time the
tracker is wrong or unsure. Every tracker change must lower it on the stems,
not only pass the saw tests.
### Per plugin
- **Anvil.** It does not do what producers expected. The candidates are below;
ask the tester which one they meant.
- (a) They expected a sub *enhancer*: add weight under the existing sound,
not replace it.
- (b) They expected it to follow their growl, and it played wrong sub notes.
The wrong sub notes are the worst failure in the suite.
- (c) They expected a simple "fix my low end" (mono, tight, level), and the
front panel offers Phase, Retrigger, Kick lock, Ghost and Audition.
Fixes:
- Keep the original sub (Keep 100 %) whenever tracking is unsure, and switch
to the clean sine only on a confident note.
- Add the NOTE source with a root picker.
- Add an Enhance mode that adds the sine under the original instead of
replacing it.
- Keep three main controls: Split, Sub level, Mode. Fold the rest.
- **Lathe.** A harmonic EQ is a new idea for most producers. Show the band
centres in Hz on the plot, next to the harmonic numbers. When tracking is
unsure, pass the audio through.
- **Temper.** Producers judge it as distortion first. Floor, Push and Bright
should keep their last confident tuning, or fall back to fixed Hz, instead of
jumping. Consider Floor/Bright with fixed-Hz values as the default, and
tracked values as an option.
- **Knurl.** It needs the cycle clock, so it needs a pitch. NOTE mode and
fade-out on unsure tracking matter most here.
- **Planish.** When tracking is unsure, fall back to fixed band edges (like OTT)
instead of jumping. Crossfade the edges when the note changes.
- **Braze.** It needs a pitch. Use NOTE mode, hold the detune through unsure
stretches, and do not jump.
- **Ballast.** Make **Grid** the default for Parts from. A switch-up lands on
the grid, and Grid needs no tracking.
- **Crucible.** Name a slice by its note only when one note is confident over
most of the slice. Otherwise leave the note out (or write "?"). An optional
song key field avoids enharmonic names that do not fit the key.
- **Forge.** It inherits everything above from the shared tracker.
- **Weld, Quench, Patina.** These use no tracking by default. Weld's display is
dense: lead with Recovered dB and one ALIGN button, and fold the plots.
### Order
1. Shared tracker: confidence, stability and hold, plus the stem corpus and
metric. One change in `common-dsp` fixes the flicker in nine plugins.
2. NOTE/KEY pitch source in the shared tracker settings and in each tracked
plugin's header.
3. "Unsure means neutral" fallback in each tracked plugin, Anvil first.
4. Anvil Enhance mode and a reduced front panel. Ask the tester what they
expected first.
5. Front-panel pass on every plugin: a main control, outcome names, and an
Advanced fold.
## Research findings (2026-11)
From the papers in `research/` (local, not committed). Each finding names where