diff --git a/Architecture.md b/Architecture.md index 919d236..0ecac66 100644 --- a/Architecture.md +++ b/Architecture.md @@ -428,8 +428,9 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla ratio to drag, and the levels in and out tinted where it squeezes), CompressorPanel + hardwareView (#379: the Compressor as a device, its meter, LEDs and plate worked out apart from the drawing), CompressorFace + nodeFaces (#380: the panel as what a - Compressor node shows in the graph, #381 the EQ's as well), GainPanel + GainFace (#384: - the Gain as an orange plate with one knob, `drawPlate` shared with the Compressor), + Compressor node shows in the graph, #381 the EQ's as well), KnobPanel + KnobFace (#384: + the Gain as an orange plate with one knob, `drawPlate` shared with the Compressor; + #390 the Pitch in green and the Mix in blue with a lever, each a `KnobDevice`), ChipPanel + ChipFace + chipView (#386: the Chip of an instrument as a device, its wave and its pitch over a note worked out apart from the drawing, the Compressor's `Lever` for "follow note"), EnvelopePanel + EnvelopeFace + envelopeView diff --git a/Development.md b/Development.md index 356db44..c018796 100644 --- a/Development.md +++ b/Development.md @@ -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 # 1964 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1965 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 diff --git a/Sounds.md b/Sounds.md index 228b502..1a71c53 100644 --- a/Sounds.md +++ b/Sounds.md @@ -425,11 +425,11 @@ response of a Reverb, and as what the Sound FX tab tries out. Its row means noth | Node | What it does | | --- | --- | | **Gain** | Louder or quieter, in dB (`Gain (dB)`): 0 leaves it alone, -6 is about half as loud, +6 twice. Above 0 the sound can clip. In the graph the node is drawn as a small device (#384): the Compressor's brushed plate in orange, 160x160 graph units without an engraved name, with one chrome knob between its inputs and its output. The knob works as the Compressor's do: drag up or down, a double-click resets it to 0 dB, each turn one undo step, the wheel zooms the graph. 0 dB stands straight up, and the quiet end below -24 dB takes only a fifth of the turn. A linked `Gain (dB)` greys the knob. There is no tab and no meter. | -| **Pitch** | Higher or lower, in semitones (12 is an octave, 0.5 a quarter tone). The sound **keeps its length**, also when the pitch changes while it plays. The pitch is made where the sound is read, so an effect before the Pitch acts as if it came after it. On a [Chip](Instruments#chips) of an instrument it moves the frequency of the Chip itself. Its `wet` takes the semitones from 0 up to all of them, see [below](#bypass-and-wet). | +| **Pitch** | Higher or lower, in semitones (12 is an octave, 0.5 a quarter tone). The sound **keeps its length**, also when the pitch changes while it plays. The pitch is made where the sound is read, so an effect before the Pitch acts as if it came after it. On a [Chip](Instruments#chips) of an instrument it moves the frequency of the Chip itself. Its `wet` takes the semitones from 0 up to all of them, see [below](#bypass-and-wet). In the graph the node is drawn as the Gain's device in green (#390), with one knob for `Semitones`: 0 stands straight up, and an octave up or down is a little under half of either side of the turn, so small steps near 0 are easy to set and the full ±64 is still there. A linked `Semitones` greys the knob. | | **5-Band-EQ** | Five bands in dB: 80 Hz and 12 kHz as shelves, 250 Hz, 1 kHz and 4 kHz as peaks. A band at 0 does nothing. | | **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). | +| **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). | | **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). |