Skip to content

Commit e426bbf

Browse files
vanceingallsclaude
andcommitted
docs(design): propose a multi-band Tone EQ
The clearest failure this exercise surfaced is a rack holding two Shape One Range modules doing different jobs. A multi-band EQ answers it better than a per-node role label would, because an author already understands it — bass, middle, treble is the most widely used audio control there is. Its bands can BE the shared vocabulary: three are Bass / Middle / Treble, five open to Bass / Warmth / Middle / Clarity / Air. So using the EQ teaches the words the rest of the rack relies on, rather than the vocabulary living only on a ruler somebody has to go and read. Built like the carve, not like a new effect. Carve already owns several tagged nodes and presents as one module; an EQ does the same with `fromEq`. Three bands are a low shelf, a peaking and a high shelf — all already shipping. There is nothing new in the graph or the render, and the nodes stay ordinary, so an author who opens the details finds the filters they could have added by hand. That route also sidesteps a real constraint: the registry's parameter model is flat key/value, so an `eq` effect TYPE with N bands would need array-shaped params it does not support. Drawn with vertical faders around a centre detent, because that is what an equaliser looks like to everyone who has met one. Collapsed, it reads like every other module — "Bass +3, Middle -2, Treble +2", or "Flat" when nothing has been touched. Design only; not built. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 8e1b8ce commit e426bbf

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

plans/audio-fx-ux/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,35 @@ property print as their escape sequence on the page. This cost three rounds of
9797
chasing what looked like three unrelated rendering bugs. The template is a plain
9898
literal; keep it that way, and use HTML entities for typographic characters.
9999

100+
## Proposed: a multi-band EQ ("Tone")
101+
102+
The clearest failure this exercise surfaced is a rack holding two *Shape One
103+
Range* modules doing different jobs. A multi-band EQ is the answer, and it is a
104+
better one than a role label because an author already understands it: bass,
105+
middle, treble is the most widely used audio control there is.
106+
107+
**Its bands can be the shared vocabulary.** Three bands are Bass / Middle /
108+
Treble; five open up to Bass / Warmth / Middle / Clarity / Air. So using the EQ
109+
teaches the words the rest of the rack relies on, instead of the vocabulary
110+
living only on a ruler somebody has to read.
111+
112+
**Built like the carve, not like a new effect.** Carve already owns several
113+
tagged nodes and presents as one module (`fromCarve`, filtered out of the
114+
hand-built list). An EQ does the same with `fromEq`: three bands are a low
115+
shelf, a peaking and a high shelf — all effects that already ship. Nothing new
116+
in the render, nothing new in the graph, and the nodes stay ordinary, so an
117+
author who opens the details finds exactly the filters they could have added by
118+
hand.
119+
120+
The registry's parameter model is flat key/value, so an `eq` effect *type* with
121+
N bands would need array-shaped params it does not support. The composite-module
122+
route avoids that entirely and is the pattern this codebase already proved.
123+
124+
Faders rather than sliders, because a row of vertical faders around a centre
125+
detent is what an equaliser looks like to everyone who has met one. Collapsed,
126+
it reads like every other module: "Bass +3, Middle −2, Treble +2", or "Flat"
127+
when nothing has been touched.
128+
100129
## What still needs deciding
101130

102131
- Does the plain name **replace** the DSP name or sit beside it? Replacing is

0 commit comments

Comments
 (0)