Describe the EQ's editor in its node and the wheel in graphs (#381)
The EQ node shows the editor of its tab right in the graph now, and the small curve below its rows (#375) is gone. The numbers below the Compressor's knobs in its node are plain labels (#382), and the wheel zooms a graph over its nodes too (#383). - Sounds: the table row, the section's opening, the part "In the node" with the ways it differs from the tab, and the spectrum that also runs while the node is in the picture. - Sounds: the Compressor node's numbers as labels, the ratio as 4:1, and the wheel over a knob or a band zooming the graph. - Behaviors: the wheel zooms over a node too. - Architecture: EqPanel, EqEditor and EqFace, and NodeRegistry, parametricEq and NodeView without the node picture. - Development: 1956 editor checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
694aca4b07
commit
d6c12567e2
4 files changed
+34
-25
No files matched your search
+7
-7
@@ -132,7 +132,7 @@ src/core/model/ Project (object holders), Asset + AssetTypes, SceneObject
|
||||
src/core/properties/ PropertySchema, kinds (one row per value kind), listItems (an item's kind, read off its value), resolve (the only override merge), deviation (what is gold), collider/camera/bounds geometry, clip (the region clip areas cut each object to, a convex polygon, #260) (with the side a one-way collider blocks from, and the rectangle around a shape a broad phase looks at first, #184), convex (capsules and polygons: rounded convex pieces against each other), ray (where a ray meets a shape, in double precision), rigidbody (what the engine reads off a rigidbody, a collider's material and the scene), joint (what it reads off a joint: its settings, where its far end is, its length and a hinge's limits, #154), aspect, enabled, editorRun, assetRef/textureRef (how a reference reads), declaredRows (the row a Property node declares in a shader or particle graph, and the params that node has in both)
|
||||
src/core/util/ list (take out, put back and move an item — what a command's undo is made of), vec (dot, the closest point on a segment — shared by the collider maths, the outline hit area and the polygon grips; a cubic Bezier at `t` and cut in two at `t` — shared by vector art, its Boolean operations and the curve grips), color (`mixColor`, channel by channel — keys of an animation, stops of a gradient, the particles' Mix colour), recorder (#253: assignments taken back last first — the undo of an edit whose reach is not known in advance)
|
||||
src/core/commands/ undoable commands (pixelArtCommands: one command runs any pixel art edit and keeps the state before it, #130), CommandStack, SetBagValueCommand base, RenameCommand base (undone by renaming back: variable, struct field, port), MoveCommand base (undone by moving back: tile picture, tilemap layer, vector shape), vectorArtCommands (#129: the shapes of a drawing, one gesture one command), one import command shape for texture/font/sound, require.ts (validated lookups, and what an instance may not change), naming.ts
|
||||
src/core/graph/ graph model, NodeRegistry (with a node's `picture` below its rows, as plain shapes, #375)/NodeContext/values (a travelling list may hold live objects, #157;
|
||||
src/core/graph/ graph model, NodeRegistry/NodeContext/values (a travelling list may hold live objects, #157;
|
||||
liveObjects' `withoutObjects` empties them on every way out of the run, #238), interpreter, dropTarget, nested (behaviors as nodes),
|
||||
emitGraph (the walk both graph compilers share: each node once, in dependency order; cycles and property names reported),
|
||||
sharedState (what a run shares: a bag per Variables asset, the state of a global machine; what a scene change carries forward and what it starts afresh, #164),
|
||||
@@ -180,8 +180,7 @@ src/core/music/ time (ticks, 480 to the quarter, tempo and meter, a posit
|
||||
src/core/soundfx/ the sound FX graph (#311): nodes (every effect and what it adds to a plan), compile (the
|
||||
graph walked back from the Output to a plan; a parameter stays open until a voice
|
||||
starts; a tapped node gets a `tap` in front and behind, #374), parametricEq (#367:
|
||||
the bands, the curve Web Audio plays of them, its axes, and the curve in the node,
|
||||
#375); the
|
||||
the bands, the curve Web Audio plays of them, and its axes); the
|
||||
effects the FX worklet runs, plain classes tested in Node: pitchPlayer (#317/#346, a
|
||||
phase vocoder), chip (#329), crusher (#322), phaser (#341: Phaser and Flanger),
|
||||
dynamics (#326), lfo (#320: Tremolo and Vibrato); reverb (#328) and saturation (#323)
|
||||
@@ -371,7 +370,7 @@ src/editor/graph/ GraphEditor (header, breadcrumb), GraphCanvas and what it
|
||||
empty space opens, a transition armed from a state's menu), graphDrags (nodes, groups and
|
||||
comments moved or resized, each gesture one undo step), annotationLayer (the boxes behind
|
||||
the edges); graphView (zoom limits, grid, panAndZoom — shared with NodeBoard and the Tile tab's TileCanvas — and `inView`, which nodes are in the picture, #292), EdgeLayer (curves and fold marks), graphMenus,
|
||||
NodeView (and the picture below the rows, drawn again only when the settings change, #375, or a face instead of the rows, a widget between the inputs and the outputs, #380: `nodeFace.ts`) + portRow (how an input and an output share one row, #306), NodePalette + paletteEntries (which also ranks a search), folding (hidden links, collapsed nodes), Breadcrumb + trail (the path into nested behaviors), beads (the run's pulses and the clock that launches them),
|
||||
NodeView (and a face instead of the rows, a widget between the inputs and the outputs, #380: `nodeFace.ts`) + portRow (how an input and an output share one row, #306), NodePalette + paletteEntries (which also ranks a search), folding (hidden links, collapsed nodes), Breadcrumb + trail (the path into nested behaviors), beads (the run's pulses and the clock that launches them),
|
||||
AnnotationView + annotationDrag (groups and comments: what a drag carries, each thing moved once),
|
||||
SnapToggle (the magnet every tab that snaps carries, the vector art tab included, #194)
|
||||
src/editor/container/ ContainerEditor (header), ContainerCanvas (a SceneViewport on a template)
|
||||
@@ -418,13 +417,14 @@ src/editor/sound/ SoundEditor (#343: header with Play, the clip's direction
|
||||
browser and let go once no longer wanted)
|
||||
src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Play and Stop), PreviewParams (the
|
||||
header's fields for the parameters a tab plays with, shared with the Instrument tab),
|
||||
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 +
|
||||
EqPanel + eqView (#367: the Parametric EQ's curve and band numbers, its handles on
|
||||
the picture, and the spectrum behind the curve, #374), EqEditor (#370: the panel in
|
||||
a tab of its own), EqFace (#381: the panel in the node), 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), 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), nodeParamDrag (a knob's drag as one undo
|
||||
Compressor node shows in the graph, #381 the EQ's as well), nodeParamDrag (a knob's drag as one undo
|
||||
step, for the tab and the node), 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)
|
||||
|
||||
+2
-2
@@ -518,8 +518,8 @@ the inspector).
|
||||
`Run behavior`, whose description happens to mention variables (#43).
|
||||
- **Editing**: right-click the canvas for the searchable palette, drag port → port to connect
|
||||
(types are checked; a data input holds one link and is replaced), drag nodes, right-click a
|
||||
node or port to delete/disconnect, `Delete` removes the selection, wheel zooms. Everything is
|
||||
undoable.
|
||||
node or port to delete/disconnect, `Delete` removes the selection, wheel zooms. The wheel
|
||||
zooms over a node too, nothing in a node takes it (#383). Everything is undoable.
|
||||
- **Copy and paste** (#240) works in every graph (behavior, state machine, shader, particles):
|
||||
`Ctrl+C` or right-click → *Copy* takes the selected nodes, the links between them and the
|
||||
groups and comments selected with them. `Ctrl+V` pastes under the pointer, or one grid step
|
||||
|
||||
+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 # 1953 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1956 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
|
||||
|
||||
+24
-15
@@ -427,7 +427,7 @@ response of a Reverb, and as what the Sound FX tab tries out. Its row means noth
|
||||
| **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. |
|
||||
| **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). |
|
||||
| **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, in small in the node too. A **double-click on the node** opens its editor, which also shows the spectrum of what passes the node. A new node has no band and does nothing. See [below](#parametric-eq). |
|
||||
| **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. 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). |
|
||||
| **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). |
|
||||
@@ -652,8 +652,9 @@ A **Filter** (#335, #318) is Web Audio's `BiquadFilterNode`, every type it has.
|
||||
|
||||
### Parametric EQ
|
||||
|
||||
A **Parametric EQ** (#367) is up to 10 filters in a row, one per band. A double-click on the node
|
||||
opens its editor, in a sound FX and in an instrument alike.
|
||||
A **Parametric EQ** (#367) is up to 10 filters in a row, one per band. Its node shows the editor
|
||||
right in the graph (#381), and a double-click on the node opens the same editor in a tab, in a
|
||||
sound FX and in an instrument alike.
|
||||
|
||||
- **The editor** is a tab of its own (#370), named after its asset, with `EQ 2`, `EQ 3` … when
|
||||
the asset has more than one. Every Parametric EQ gets its own tab, and a second double-click
|
||||
@@ -671,18 +672,24 @@ opens its editor, in a sound FX and in an instrument alike.
|
||||
where it can still be grabbed. The zoom is saved on the node (`range`), so it is there again
|
||||
after loading, and it is no undo step: Ctrl+Z undoes edits, not a look at the curve. The
|
||||
spectrum keeps its own scale.
|
||||
- **In the node** (#375) the curve of all bands is drawn in small below its rows, on the same
|
||||
axes, zoomed as the tab is: the 0 dB line, the area up or down to the curve, and the curve. Without a band the box
|
||||
stays, flat, so the node does not grow at the first one. It follows every change, a drag in the
|
||||
tab as well. A double-click on it opens the tab like anywhere on the node.
|
||||
- **The spectrum** (#374): while the EQ's tab is seen, in the tab row or in a window, it draws
|
||||
behind the curve what passes the node right now. Faint and grey is the sound as it comes in,
|
||||
- **In the node** (#381) the editor sits between the inputs on the left and the output on the
|
||||
right, 720 x 360 at full size, the curve, the band's numbers and a line of help. It is worked
|
||||
there as in the tab, and each edit is one undo step there as well. Three things differ:
|
||||
- The mouse wheel zooms the graph wherever it turns, over a handle too (#383). Q and the dB
|
||||
zoom are set in the tab, and the node shows the dB the tab is zoomed to.
|
||||
- A press on the curve neither picks nor moves the node, a press on its title or its edge does.
|
||||
- A double-click on the curve adds a band. The tab opens with a double-click on the title or the
|
||||
edge.
|
||||
|
||||
It replaces the small curve below the rows of #375.
|
||||
- **The spectrum** (#374): while the EQ's tab is seen, in the tab row or in a window, or its node
|
||||
is in the picture of its graph, it draws behind the curve what passes the node right now. Faint and grey is the sound as it comes in,
|
||||
in the colour of a sound port as it goes on, so you see what the EQ takes away. It has its own
|
||||
scale: 0 dBFS at the top of the picture, -96 dBFS at its foot. Every sound passing the node
|
||||
counts: the sound FX's *Play*, an instrument's keys, a song, a run in the editor and the game.
|
||||
Each side is one analysis of 8192 points, about 6 Hz apart at 48 kHz, smoothed by the browser's
|
||||
analyser, so it falls away softly once the sound has gone. While the tab is not seen, no
|
||||
analyser is fed.
|
||||
analyser, so it falls away softly once the sound has gone. While neither the tab nor the node is
|
||||
seen, no analyser is fed.
|
||||
- **With the mouse:** a double-click on free space adds a peak there. Dragging a handle moves the
|
||||
band's frequency and, for a peak or a shelf, its gain. The mouse wheel over a handle makes the
|
||||
band a sixth of an octave narrower or wider, anywhere else it zooms (see above). A right-click on
|
||||
@@ -765,10 +772,12 @@ Both (#326) work on the whole sound passing them: on a voice that is one sound,
|
||||
numbers are not listed as rows, the panel shows them. 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 and reset as
|
||||
the tab's knobs do, each one undo step, and the orange arc is the value. The number below a
|
||||
knob is only shown: typing goes in the tab and in the inspector. A press on a knob or the
|
||||
lever neither picks nor moves the node, and the wheel over a knob does not zoom the graph.
|
||||
beside the meter on the left, attack and release on its right. They turn and reset as the
|
||||
tab's knobs do, each one undo step, and the orange arc is the value. The number below a knob
|
||||
is a plain label, centred right under its scale, the ratio as `4:1` (#382). Typing goes in
|
||||
the tab and in the inspector. A press on a knob or the lever
|
||||
neither picks nor moves the node. The mouse wheel over a knob zooms the graph and leaves the
|
||||
value alone (#383).
|
||||
- **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
|
||||
|
||||
Reference in new issue
Block a user