Describe the Reverb node as a device with its tail (#389)
- Sounds: the Reverb's row names the device, and the Reverb section says what the round screen draws and how the plate is worked. - Architecture: ReverbPanel, ReverbFace, reverbView, and that nodeParamDrag writes several settings at once. - Development: 1964 checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
e7379d38a2
commit
55cdec92ec
3 files changed
+33
-4
No files matched your search
+5
-2
@@ -434,8 +434,11 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla
|
|||||||
wave and its pitch over a note worked out apart from the drawing, the
|
wave and its pitch over a note worked out apart from the drawing, the
|
||||||
Compressor's `Lever` for "follow note"), EnvelopePanel + EnvelopeFace + envelopeView
|
Compressor's `Lever` for "follow note"), EnvelopePanel + EnvelopeFace + envelopeView
|
||||||
(#388: the Envelope as a device, its curve over a note with squeezed time worked
|
(#388: the Envelope as a device, its curve over a note with squeezed time worked
|
||||||
out apart from the drawing), nodeParamDrag (a knob's drag as one undo
|
out apart from the drawing), ReverbPanel + ReverbFace + reverbView (#389: the
|
||||||
step, for the tab and the node), nodeTabs (which nodes open a tab of their own)
|
Reverb as a device, its tail as rings on a round screen worked out apart from
|
||||||
|
the drawing), nodeParamDrag (a knob's drag as one undo step, for the tab and the
|
||||||
|
node, several settings at once since #389), nodeTabs (which nodes open a tab of
|
||||||
|
their own)
|
||||||
src/editor/instrument/ InstrumentEditor (#331: the graph over the keys, Preset, Randomize, Mutate, Audition),
|
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)
|
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)
|
src/editor/routing/ RoutingEditor (#351: the Master routing tab, one per project)
|
||||||
|
|||||||
+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/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/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
|
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 # 1963 editor checks, screenshots in /tmp/gm-e2e-*.png
|
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1964 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
|
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 start [GM_STEPS] # the same run detached, see below
|
||||||
./e2e.sh status # live progress, or the last run's result
|
./e2e.sh status # live progress, or the last run's result
|
||||||
|
|||||||
+27
-1
@@ -440,7 +440,7 @@ response of a Reverb, and as what the Sound FX tab tries out. Its row means noth
|
|||||||
| **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). |
|
| **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). |
|
| **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). |
|
||||||
| **Vibrato** | Makes the pitch swing `rate` times a second (5 Hz), `depth` semitones up and as far down (0.5). **Shape** as on the Tremolo; a *Square* jumps between two pitches. See [below](#tremolo-and-vibrato). |
|
| **Vibrato** | Makes the pitch swing `rate` times a second (5 Hz), `depth` semitones up and as far down (0.5). **Shape** as on the Tremolo; a *Square* jumps between two pitches. See [below](#tremolo-and-vibrato). |
|
||||||
| **Reverb** | The sound in a space. **Type**: *Room* (the default), *Hall*, *Cave*, *Plate*, *Custom* or *Sound*. Custom shows the rows `decay` (s, 1.5 by default), `damping` (0.4) and `pre-delay` (s, 0.01); Sound picks a sound asset as the impulse response of a real space, with `pre-delay`. `wet` (0.3) is how much of the reverb is heard instead of the sound itself. See [below](#reverb). |
|
| **Reverb** | The sound in a space. **Type**: *Room* (the default), *Hall*, *Cave*, *Plate*, *Custom* or *Sound*. Custom shows the rows `decay` (s, 1.5 by default), `damping` (0.4) and `pre-delay` (s, 0.01); Sound picks a sound asset as the impulse response of a real space, with `pre-delay`. `wet` (0.3) is how much of the reverb is heard instead of the sound itself. The node is drawn as a device with a round screen of its tail (#389). See [below](#reverb). |
|
||||||
|
|
||||||
Every number of these nodes is an **input**: typed in while nothing is connected, or fed from a
|
Every number of these nodes is an **input**: typed in while nothing is connected, or fed from a
|
||||||
parameter of the Input. Each is held to its range (Gain -120 to +24 dB, Pitch -64 to +64, the EQ
|
parameter of the Input. Each is held to its range (Gain -120 to +24 dB, Pitch -64 to +64, the EQ
|
||||||
@@ -922,6 +922,32 @@ share of a sound there).
|
|||||||
sound.
|
sound.
|
||||||
- **Cost**: every voice with a Reverb folds its sound with the whole impulse response. Many short
|
- **Cost**: every voice with a Reverb folds its sound with the whole impulse response. Many short
|
||||||
sounds at once, each with a long decay, are better sent through one bus.
|
sounds at once, each with a long decay, are better sent through one bus.
|
||||||
|
- **The device** (#389): in the graph the node is a plate of 640x280 graph units in pale lavender,
|
||||||
|
its inputs on the left and its output on the right.
|
||||||
|
- **The round screen** draws the tail as rings out from the sound, the white dot in the middle.
|
||||||
|
How far out a ring sits is its time, as the root of its seconds, the same scale for every
|
||||||
|
Reverb with faint rings at 0.1, 0.5, 1, 2, 5 and 10 s. So a Room is a small disc and a Cave
|
||||||
|
fills two thirds. The dark gap round the dot is the pre-delay, the dashed ring is where the
|
||||||
|
tail has fallen by 60 dB.
|
||||||
|
- A ring is as bright as the tail is loud there, evenly in dB. Its colour is how much of the
|
||||||
|
highs is left: ice while they are there, violet once `damping` has closed them towards 500 Hz.
|
||||||
|
Dots scattered over it stand for the reflections and grow thicker further out.
|
||||||
|
- The lower `wet` is, the fainter the tail and the brighter the dot.
|
||||||
|
- Under the screen it says the pre-delay and when the tail has died (`ENDS 2.52 s`), above it
|
||||||
|
where the highs end up (`HIGHS 5.5 kHz`).
|
||||||
|
- A *Sound* draws the peaks of its sound as the rings, each against its loudest. The screen knows
|
||||||
|
nothing of the highs there, so the rings are a neutral blue. It says `LOADING` until the sound
|
||||||
|
is there, and `NO SOUND` without one.
|
||||||
|
- **On the plate**: a button for each type, the sound for *Sound* and four chrome knobs, `Decay`,
|
||||||
|
`Damping` and `Pre-delay` under *Space*, `Wet` under *Mix*.
|
||||||
|
- The knobs work as the Compressor's do: drag up or down, a double-click resets one, each turn
|
||||||
|
one undo step, the wheel zooms the graph. The decay gives its first seconds most of the turn,
|
||||||
|
the pre-delay its first tens of milliseconds.
|
||||||
|
- A knob the type does not take is greyed but still turns: it goes over to *Custom* with the
|
||||||
|
numbers the type had and the one turned, as one undo step. So turning the damping of a Hall
|
||||||
|
gives a Hall with that damping.
|
||||||
|
- Picking a sound from the list under the buttons makes the type *Sound*, also one undo step.
|
||||||
|
- A linked input greys its knob.
|
||||||
- **Measured** (2026-10-07, e2e 34, Chrome offline): an impulse through a *Custom* reverb of 1 s with
|
- **Measured** (2026-10-07, e2e 34, Chrome offline): an impulse through a *Custom* reverb of 1 s with
|
||||||
50 ms pre-delay was silent up to 50 ms after it, and fell by 35.9 dB from 0.2-0.3 s to 0.8-0.9 s
|
50 ms pre-delay was silent up to 50 ms after it, and fell by 35.9 dB from 0.2-0.3 s to 0.8-0.9 s
|
||||||
after it (36 dB to be expected). At `wet` 0.5 the impulse itself came through at half. With a sound
|
after it (36 dB to be expected). At `wet` 0.5 the impulse itself came through at half. With a sound
|
||||||
|
|||||||
Reference in new issue
Block a user