Describe the Compressor's hardware look (#379)
- Sounds: the Hardware look setting in the table, and a section on the panel, its window of one size, knobs, meter, lever and LEDs. - Concepts: a Compressor in its hardware look has a window only. - Architecture: CompressorPanel + hardwareView, the chrome Knob. - Development and README: 1953 checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
a51884fafb
commit
5ef7b8e2b4
4 files changed
+27
-5
No files matched your search
+5
-3
@@ -214,7 +214,7 @@ src/runtime/physics/ engine (loads Rapier once, reports its state, converts be
|
||||
src/ui/ widget toolkit (generic, knows nothing about assets); fonts (the faces the editor ships:
|
||||
Source Sans 3 in 400, 500 and 600, Source Code Pro 400, Latin only, #202/#214/#273), icons +
|
||||
Icon (the menu's tick boxes and current-entry dot as SVG files, and a widget that shows one file
|
||||
on its own: a symbol the Latin subset lacks is never written as a character, #214); SortableList + sortable (the layer list of every editor that has one: rows dragged into order, eye, duplicate, cross, rename in place; the index arithmetic of a list shown upside down, of a drop in the tile strip and of blocks of rows of any height, kept apart so it is measured without a canvas); blockDrag (`sortBlocks`: the inspector's own rows dragged into order by a `Grip` (the row's mark, wrapped: dots once it drags, lit under the pointer while the block is washed), a block being every row it covers, #310); Knob + knob (#378: a slider bent into a circle, its name above and a number field below; where a value sits on the turn and what a drag or the wheel makes of it, kept apart so it is measured without a canvas)
|
||||
on its own: a symbol the Latin subset lacks is never written as a character, #214); SortableList + sortable (the layer list of every editor that has one: rows dragged into order, eye, duplicate, cross, rename in place; the index arithmetic of a list shown upside down, of a drop in the tile strip and of blocks of rows of any height, kept apart so it is measured without a canvas); blockDrag (`sortBlocks`: the inspector's own rows dragged into order by a `Grip` (the row's mark, wrapped: dots once it drags, lit under the pointer while the block is washed), a block being every row it covers, #310); Knob + knob (#378: a slider bent into a circle, its name above and a number field below, or a chrome dial of any size, #379; where a value sits on the turn and what a drag or the wheel makes of it, kept apart so it is measured without a canvas)
|
||||
src/viewport/ WorldViewport (the drawing of a world or a holder, the base of every view; it draws from
|
||||
a `ViewSource` — the project and word of a change — so a released game draws without the
|
||||
editor, #266; a view through a camera keeps only what that camera `Sees` and lays one
|
||||
@@ -421,8 +421,10 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla
|
||||
EqEditor + eqView (#367/#370: the Parametric EQ in a tab of its own, its handles on
|
||||
the picture, and the spectrum behind the curve, #374), CompressorEditor +
|
||||
compressorView (#378: the Compressor's tab, its knobs, its curve with threshold and
|
||||
ratio to drag, and the levels in and out tinted where it squeezes), nodeTabs (which
|
||||
nodes open a tab of their own)
|
||||
ratio to drag, and the levels in and out tinted where it squeezes), CompressorPanel +
|
||||
hardwareView (#379: the Compressor as a device in a window of one size, its meter,
|
||||
LEDs and plate worked out apart from the drawing), nodeTabs (which nodes open a tab
|
||||
of their own)
|
||||
src/editor/instrument/ InstrumentEditor (#331: the graph over the keys, Preset, Randomize, Mutate, Audition),
|
||||
PianoKeyboard + keys (the keys drawn, played by the pointer and the computer keyboard)
|
||||
src/editor/routing/ RoutingEditor (#351: the Master routing tab, one per project)
|
||||
|
||||
+3
@@ -361,6 +361,9 @@ one kind can be open at once — two textures, three behaviors — each with its
|
||||
sizes it, *Dock* puts the document back into the row, showing, and the `×` closes it. Only
|
||||
documents float, never Scene or Game. A window is at least 320 × 200 px. A tab that needs more,
|
||||
like a Compressor's with its knobs (#378), holds its window at that size.
|
||||
- **A Compressor in its hardware look** (#379) has a window only: a double-click opens it there
|
||||
at one size, with no corner to size it and no *Dock*. Switched to that look while its tab is
|
||||
in the row, it leaves the row for the window.
|
||||
- Every kind has one editor, so it has **one window**: with a texture in a window, opening
|
||||
another texture shows it there and closes the one it had. Windows of different kinds can be
|
||||
open side by side, a sound FX beside its Parametric EQ for instance.
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ php tests/php/accounts.test.php # the API's accoun
|
||||
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
|
||||
php tests/php/releases.test.php # the release store (#266), the same way
|
||||
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1949 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1953 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
|
||||
./e2e.sh start [GM_STEPS] # the same run detached, see below
|
||||
./e2e.sh status # live progress, or the last run's result
|
||||
|
||||
+18
-1
@@ -435,7 +435,7 @@ response of a Reverb, and as what the Sound FX tab tries out. Its row means noth
|
||||
| **Phaser** | Sweeps notches through the sound, the swirl of a phaser pedal. **Stages** (2, 4, 6, 8 or 12, 4 by default) is how many allpass stages it has, every two make one notch. They sit around `frequency` (800 Hz by default), and an LFO moves them `depth` octaves wide (2), `rate` times a second (0.5 Hz). `feedback` (0.4) sharpens the notches, `wet` (1) is how much is heard. See [below](#phaser-and-flanger). |
|
||||
| **Flanger** | Blends the sound with a copy a few ms late: the jet sound of a flanger, and what sfxr calls its phaser. `offset` is how late the copy is (1 ms by default), `sweep` moves that on by so many ms a second from the start of the sound (0), an LFO adds up to `depth` ms (2) `rate` times a second (0.25 Hz). `feedback` (0.5) and `wet` (1) as on the Phaser. See [below](#phaser-and-flanger). |
|
||||
| **Pan** | Moves the sound left or right: `pan` -1 is all left, 1 all right, 0 (the default) leaves it in the middle. A mono sound is spread on both sides and then moved (each side 0.707 at 0). A stereo sound keeps the side it goes to and the other side moves over into it, as Web Audio's `StereoPannerNode` does: at 1 both sides are heard on the right. In an [instrument](Instruments#envelopes) an Envelope can move it. Measured (e2e 34, Chrome offline): a mono sine at 0.5 came out 0.5 / 0 at -1 and 0.354 / 0.354 at 0, a stereo one at 0.5 came out 0.354 / 0.854. |
|
||||
| **Compressor** | Squeezes the loudness together: what goes above `threshold` (-24 dB by default) comes out only 1/`ratio` (4) as much louder. `knee` (6 dB) eases into it, `attack` (0.003 s) and `release` (0.25 s) say how fast it turns down and lets go. `makeup` (0 dB) raises it afterwards. **Auto-gain** (off) gives back what it takes from a sound at -18 dB, with the makeup on top. A double-click on the node opens its tab: a knob for each number, its curve, and the level going in and out. See [below](#compressor-and-limiter). |
|
||||
| **Compressor** | Squeezes the loudness together: what goes above `threshold` (-24 dB by default) comes out only 1/`ratio` (4) as much louder. `knee` (6 dB) eases into it, `attack` (0.003 s) and `release` (0.25 s) say how fast it turns down and lets go. `makeup` (0 dB) raises it afterwards. **Auto-gain** (off) gives back what it takes from a sound at -18 dB, with the makeup on top. **Hardware look** (on) is how its editor looks: a double-click on the node opens a panel like a device in a window, with a meter of what it takes away; off, a tab with a knob for each number, its curve, and the level going in and out. See [below](#compressor-and-limiter). |
|
||||
| **Limiter** | Keeps every peak below `threshold` (-6 dB): it looks 5 ms ahead, so even a sudden peak never gets through, and comes back up in `release` (0.1 s). **Auto-gain** (on) raises the limited sound to `ceiling` (-1 dB). Nothing ever goes above the ceiling. See [below](#compressor-and-limiter). |
|
||||
| **Saturation** | Bends the sound, from warmth to a hard distortion. **Type**: *Soft (tanh)* (the default), *Cubic*, *Hard clip*, *Tube*, *Fuzz*, *Foldback*, *Sine fold* or *Rectify*. `drive` (12 dB) is how hard the sound is pushed into it, `tone` (1) a low-pass after it from 1 kHz (0) to wide open (1). **Auto-gain** (on) keeps the bent sound about as loud as it came in, `output` (0 dB) is added on top. `wet` (1) how much of it is heard instead of the sound itself. See [below](#saturation). |
|
||||
| **Tremolo** | Makes the volume swing `rate` times a second (5 Hz by default), from full down by `depth` percent (50) and back. **Shape**: *Sine* (the default), *Triangle*, *Square* or *Saw*. See [below](#tremolo-and-vibrato). |
|
||||
@@ -759,6 +759,23 @@ Both (#326) work on the whole sound passing them: on a voice that is one sound,
|
||||
is a square at their right, centred up and down. It grows with the tab from 180 to 360 px, but
|
||||
takes no more than 40 % of its width. A floated Compressor's window cannot be made smaller than
|
||||
what shows every knob and the smallest pictures (560 × 414 px in the test browser).
|
||||
- **The hardware look** (#379), on by default and switched under *Settings* in the inspector, is
|
||||
the Compressor as a device on a brushed aluminium plate, 820x280 px. A double-click opens it
|
||||
straight in a [window](Concepts) of that size: no corner sizes it and *Dock* is gone, so it
|
||||
never sits in the tab row. Switched off, the node has the tab above again, and its window can
|
||||
be sized and docked. All of the panel is drawn by the editor, there are no pictures.
|
||||
- **Chrome knobs**: threshold large on the left, makeup large on the right, ratio and knee small
|
||||
beside the meter on the left, attack and release on its right. They turn, notch, reset and
|
||||
take a typed number as the tab's knobs do, and the orange arc is the value.
|
||||
- **The meter** in the middle shows what the Compressor takes away, 0 dB at the right to 24 dB
|
||||
at the left, red from 10 dB on. The scale runs by the square root, so the first dB is about
|
||||
as wide as the last nine. The needle moves like a VU's: most of the way to a reading in
|
||||
300 ms. The LCD above shows the asset's name and the same reading as a number.
|
||||
- **Auto-gain** is a lever with a lamp at the top right. Beside it stands what it gives.
|
||||
- **The LEDs** at the right edge show the level going out, one every 3 dB from -39 to 0 dB:
|
||||
the top two red, the next three amber. They light at once and go out by 20 dB a second.
|
||||
- The pictures of the tab, curve and levels, are not on the panel. Switch the look off for
|
||||
them.
|
||||
- **Measured** (2026-10-07, e2e 34, Chrome offline): an impulse came out of the Compressor 288
|
||||
samples late and out of the Limiter 240. A 1 kHz sine at -18 dB through a hard-knee
|
||||
Compressor at -24 dB and 4:1 came out at -17.92 dB with auto-gain on and at -22.42 dB with it
|
||||
|
||||
Reference in new issue
Block a user