Describe the Delay node as a device with its echoes (#393)
- Sounds: the Delay row and a section on the device, its screen, the running light, the levers and the knobs. - Architecture: DelayPanel, DelayFace and delayView. - Development: 1968 editor checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
726422609f
commit
2a682acade
3 files changed
+34
-3
No files matched your search
+3
-1
@@ -438,7 +438,9 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla
|
||||
(#388: the Envelope as a device, its curve over a note with squeezed time worked
|
||||
out apart from the drawing), ReverbPanel + ReverbFace + reverbView (#389: the
|
||||
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
|
||||
the drawing), DelayPanel + DelayFace + delayView (#393: the Delay as a device,
|
||||
its echoes as bars on a screen and the light that runs over them at their beat
|
||||
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),
|
||||
|
||||
+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 # 1967 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1968 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
|
||||
|
||||
+30
-1
@@ -430,7 +430,7 @@ response of a Reverb, and as what the Sound FX tab tries out. Its row means noth
|
||||
| **Parametric EQ** | Up to 10 bands, each a filter of its own type, frequency, gain, Q and slope, drawn together as one curve. The node shows its editor right in the graph, and a **double-click on the node's title** opens the same in a tab. Both show the spectrum of what passes the node. A new node has no band and does nothing. See [below](#parametric-eq). |
|
||||
| **Filter** | **Type** *Low-pass* (the default) takes away what is above `frequency` (Hz, 1000 by default), *High-pass* what is below it, *Band-pass* all but a band around it and *Notch* just that band. *Low shelf* and *High shelf* raise or lower everything below or above it by `gain` (dB), *Peaking* a band around it; only these three have the `gain` row. *All-pass* leaves every frequency as loud as it was and only turns its phase. `Q` (0.707 by default) says how sharp it is: at 0.707 a low- or high-pass has no bump, higher it rings at the frequency, and a band, a notch or a peak gets narrower. **Slope** makes a low-pass, high-pass, band-pass or notch steeper: *12 dB/oct* is one filter, *24* two and *48* four in a row, and only the last of them has the Q. In an [instrument](Instruments#envelopes) an Envelope can move all three numbers while a note plays. The node draws itself as a curve and is edited right in the graph, and a **double-click on the node's title** opens the same in a tab. See [below](#filter). |
|
||||
| **Mix** | Blends the sounds at `a` and `b`: at 0 only `a` is heard, at 1 only `b` (0.5 is the default). **Curve** says what lies between: *Crossfade* (the default) gives half of each at 0.5, *Both at center* keeps each full up to the middle. See [below](#the-curve-of-a-mix). In the graph the node is drawn as a blue device of 180x200 graph units (#390): a lever for **Curve** on top, down for *Crossfade* and up, with its lamp lit, for *Both at center*, and below it one knob for `Mix` with *A* and *B* engraved at the ends of its turn. A flip of the lever is one undo step. A linked `Mix` greys the knob. |
|
||||
| **Delay** | An echo: the sound comes back after `time`, again and again, each time `feedback` times as loud. **Sync** says what `time` counts: *Seconds*, or *Beats* in quarter notes at the tempo of the voice. `damping` makes every echo duller than the last. `wet` (0.5) is the sound alone at 0, the sound and its echoes in full at 0.5, the echoes alone at 1. **Ping-pong** sends the echoes left and right in turn. See [below](#delay-and-the-tail-of-a-voice). |
|
||||
| **Delay** | An echo: the sound comes back after `time`, again and again, each time `feedback` times as loud. **Sync** says what `time` counts: *Seconds*, or *Beats* in quarter notes at the tempo of the voice. `damping` makes every echo duller than the last. `wet` (0.5) is the sound alone at 0, the sound and its echoes in full at 0.5, the echoes alone at 1. **Ping-pong** sends the echoes left and right in turn. The node is drawn as a device with its echoes on a screen (#393). See [below](#delay-and-the-tail-of-a-voice). |
|
||||
| **Bitcrusher** | Makes the sound rough, like an old console. `bits` rounds it to fewer steps (8 by default), `rate` takes a sample only so many times a second and holds it until the next (8000 Hz by default), `wet` is how much of the crushed sound is heard instead of the sound itself (1 by default). See [below](#bitcrusher). |
|
||||
| **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). |
|
||||
@@ -599,6 +599,35 @@ Defaults: `time` 0.25 s, `feedback` 0.4, `damping` 0.3, `wet` 0.5, Ping-pong off
|
||||
loop costs one render quantum each time round (measured in e2e 34: echoes 1 to 4 at 0, 128, 256
|
||||
and 384 samples late). After ten echoes at 0.3 s that is 27 ms. It is left so, because a browser
|
||||
without it would then hear the echoes early.
|
||||
- **The device** (#393): in the graph the node is a plate of 680x280 graph units in the
|
||||
Compressor's brushed aluminium, its inputs on the left and its output on the right.
|
||||
- **The screen** (*Echoes over time*) draws the sound as a white bar at the left and every echo
|
||||
after it as a bar, one step of `time` apart, with a faint line at each step. A bar is as tall
|
||||
as the echo is loud, evenly in dB down to 60 dB below the sound. Its colour is how much of the
|
||||
highs is left: warm white for the first rounds, rust once `damping` has taken them. Each round
|
||||
goes through the low-pass once more, so each bar is a little more rust than the last.
|
||||
- With **Ping-pong** the bars take turns above the middle line (*L*, the first) and below it
|
||||
(*R*). Without it every bar stands both ways.
|
||||
- It draws at most 24 echoes. Where more are heard it says how many more (`+59`).
|
||||
- Under the screen it says the step (`EVERY 250 ms`, on beats `EVERY 1/8. · 375 ms AT 120 BPM`)
|
||||
and when the last echo has faded (`ENDS 2 s`, the same count as the [tail](#delay-and-the-tail-of-a-voice)
|
||||
below), above it where the first echo's highs end (`HIGHS 6.6 kHz`). At `wet` 0 it says
|
||||
`NO ECHOES`.
|
||||
- **A light runs over the screen** in real time, from the sound to the end and round again, so
|
||||
it passes the bars at the very beat the echoes come at. A bar glows as it is passed, and the
|
||||
green *Echo* lamp beside the name blinks with every echo, not with the sound. The node keeps
|
||||
the editor drawing for that while it is in the picture.
|
||||
- On beats the screen counts at **120 BPM**: the tempo of the voice is not known in the graph.
|
||||
Everything else is drawn from the settings, nothing is listened to while the sound plays.
|
||||
- **On the plate**: two levers, *Sync* (down *seconds*, up *beats*) and *Ping-pong* (down *off*,
|
||||
up *L · R*), each one undo step, and four chrome knobs, `Time` under *Time*, `Feedback` and
|
||||
`Damping` under *Echoes*, `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. A wired number locks its knob.
|
||||
- `Time` gives its short end most of the turn: a quarter note, or a second, in the middle, a
|
||||
quarter second at a third. On beats its number is the note (`1/4`, `1/8.` dotted, `1/8T`
|
||||
triplet), else its beats. In seconds anything from 2 s up reads `2 s max`, the length of the line.
|
||||
- At `wet` 0 the other knobs and the levers are drawn faint: they do nothing then. They still turn.
|
||||
|
||||
**A voice lasts until its echoes have faded** (#324). Without an echo a voice ends with its sound,
|
||||
as it always did. With one, it rings on for its **tail**: until the last echo is 60 dB below the
|
||||
|
||||
Reference in new issue
Block a user