Node Editor Basics

Node Editor Basics

Five editing surfaces are built on one shared shell, so the core gestures are the same wherever you are. Learn them once here; each editor’s own page then covers only what it adds.

EditorWhat it edits
RulesScoring and autofire rules
LightshowLight shows driving LED layouts
SoundSynth patches, the mix, and clip selection
DMDDot-matrix display shows
TestingRecorded sessions, read back as test scenarios

The first three are node graphs on a shared canvas. The DMD editor and the Testing page sit on the same shell — the same drawer, the same toolbar, the same rebindable shortcuts — without a node graph of their own, so read the canvas gestures below as belonging to the three graph editors and everything else as belonging to all five.

The canvas

Every editor is a full-viewport node canvas with a floating toolbar card over one corner. Nodes are boxes joined by wires; each node shows a category glyph, a title, and — colored by kind — its typed input and output ports.

  • Pan — drag an empty part of the canvas.
  • Zoom — mouse wheel (clamped to a comfortable range).
  • Move a node — drag it. Moving a node only rearranges the diagram; it never changes what the node does.

Adding nodes

Editors that let you build a graph offer a palette of the available node kinds, grouped by category, plus a matching legend showing each category’s glyph and color. Click a kind to drop it on the canvas, or right-click empty canvas to add from a context menu. The palette is generated from the engine, so any node kind the engine gains appears automatically.

The palette has a filter box. Type to narrow the visible kinds, then press a digit 1–9 to add the Nth kind still showing — so “type a few letters, press 1” is usually the fastest way to place a node without reaching for the mouse. The digits act on what’s visible, so the same digit means different things before and after you filter.

In the rules editor the palette is an always-open toolbox card in the canvas’s top-left corner; the lightshow and sound editors carry theirs in their own toolbars. Either way it keeps your filter and expander state as you switch views.

Wires are type-checked: a connection only completes between compatible ports, and the drag highlights valid targets. If a wire “won’t take,” the two ports are incompatible — the editor accepts exactly the connections the engine would compile and rejects the rest.

Selecting and inspecting a node

  • Click a node to select it. Selection fills the Details section of the rail beside the canvas, listing the node’s fields as label → value rows (multi-value fields render as chips, and a node’s related record — its rule, channel, or patch — appears as a tinted card). Collapse it with the header toggle; the choice is remembered.
  • Hover a node to pop a tooltip with its glyph, title, type, and a one-line summary.

The rail is not a read-out. Every parameter the engine publishes for the selected node is editable right there, in the row that shows it — a scoring rule’s trigger and points, a light node’s params, a synth param, a DMD element’s placement. Each field settles on its own, a moment after you stop typing, so a value applies as you work without a Save step; if the engine refuses one, the refusal lands on that field rather than as one opaque banner for the whole node. Rows shown inside a neighbour card stay read-only, because an edit there would be ambiguous about which node it meant.

Simple values (numbers, text, toggles, dropdowns) edit in place; richer ones (colors, palettes, asset references, expressions) open an overlay editor from the row. A number field can be driven by gesture as well as typing: press it and drag up or down to walk the value, hold Shift for a ten-times coarser step, and press Escape mid-drag to abandon the change. A plain click still puts the caret in the field. It is the same gesture, at the same sensitivity, as the object editor’s inspector.

The rules editor adds an editable Source tab to the same section, described on its page.

Finding a node

Press / to open a find box and filter as you type, with a live count of how many nodes match. What a match does depends on the editor: the rules editor hides everything that doesn’t match (keeping a matched rule’s linked device and tag visible so the edges still read), while the lightshow and sound editors leave the graph intact and instead select and center the canvas on the first match.

Copying nodes

Ctrl/Cmd+C copies the selected node, Ctrl/Cmd+V pastes it into the scope you’re currently in, and Ctrl/Cmd+D duplicates in one step.

The clipboard is shared across editors and tabs — copy a node in one editor and it’s available to paste in another window, or in a different editor entirely. A paste only lands if the target editor actually has that node kind; if it doesn’t, the paste is refused with a message naming where the node came from, rather than pasting something the engine can’t compile.

The context menu

Right-click opens a menu at the cursor. What’s on it depends on where you click — a node versus empty canvas — and on the editor, but the behavior is shared: rows can be actions, submenus (marked “▸”), or headers, and the menu closes when you click away, scroll, or press Escape.

Editing values

When you run an editing or creation command, the editor opens a form dialog — a centered panel with labeled fields and Cancel / Save buttons. Forms validate on submit: a required field left empty reports “<label> is required” and blocks saving. Enter submits; Escape, the backdrop, or the ✕ cancels with no change. Destructive actions (like deleting) use a confirmation dialog with a red confirm button. Simple params on a node (numbers, sliders, toggles, dropdowns) are often editable inline on the node card; richer values (colors, palettes, asset references, expressions) open an overlay editor.

Navigating nested scopes

Some nodes encapsulate a sub-graph — for example, a synth voice in the sound editor contains its own DSP patch. Where an editor nests scopes, the navigation model is symmetric:

  • Drill indouble-click the encapsulating node to descend into its inner scope; the canvas repaints to the child graph.
  • Drill out — press Escape, or double-click empty canvas, to pop back up one level.
  • A breadcrumb bar shows the path from the root to where you are (for example Sources › bassSynth). Click an earlier crumb to jump straight back to it.

Navigating never changes anything — drilling in and back out is lossless. Today the sound editor is the editor that uses nested scopes (to open a synth patch).

Sharing where you are

The address bar tracks where you are — the open show, the drilled-in synth, the rules view and selection, the device an editor is focused on — so a reload lands you back in place, and the URL is a permalink you can hand to someone else. The toolbar’s ⚯ Copy link button puts a link to exactly what you’re looking at on the clipboard; if the clipboard is blocked, the editor shows the URL so you can copy it by hand rather than failing silently.

The “?” help hotspots

Some section headers carry a small circular "?" button. Click it to open the relevant documentation page in a new tab — the same pages you’re reading now.

The global status bar

Every harness page — the three node editors, the object editor, and the table view — carries a persistent status bar along the bottom:

  • A Diagnostics chip on the left reads the outstanding count (and · Needs placement when devices still need a home). Click it to expand an outstanding-items dock that lists each diagnostic and page worklist; clicking a row jumps to the item that raised it. Each row is labeled on two axes — a severity glyph (▲ error, ⚠ warning, ℹ info) and a small subsystem-type chip (LIGHT, GEOM, RULES, SOUND, ENGINE, PHYSICS, or GENERAL) — so you can tell at a glance which part of the table a diagnostic comes from.
  • A ✉ Feedback entry on the right opens a feedback/contact form. (You can also reach it from Settings ▸ Send feedback, and hide the chip from Settings if you prefer the menu.)

Because the bar is app-global, diagnostics stay visible no matter which editor you’re in — or even with every editor closed.

Keyboard & mouse reference

ActionGesture
PanDrag empty canvas
ZoomMouse wheel
Move nodeDrag node
Select nodeClick node
Inspect nodeHover (tooltip) / click (Details rail)
Context menuRight-click (node or canvas)
Drill inDouble-click an encapsulating node
Drill outEscape or double-click empty canvas
Add the Nth palette entry19
Find nodes/
Delete node(s)Delete / Backspace
Rename nodeF2
Copy / paste / duplicateCtrl/Cmd+C / +V / +D
Audition (sound editor only)Space
UndoCtrl/Cmd+Z
RedoCtrl/Cmd+Shift+Z or Ctrl+Y
Save / ExportCtrl/Cmd+S
Close menu / dialogEscape

One set of keys, five surfaces — the same key means the same command everywhere. What differs is which commands each surface has:

SurfaceNot available
Rules, Lightshow
Sound— (and it alone adds Space to audition)
DMD/ to find — its panels are not a searchable graph
TestingEverything that edits: delete, rename, copy, paste, duplicate, undo, redo, and the palette digits. A recording is a record of what happened, so there is nothing to change

Space to audition re-fires on each press rather than repeating while you hold it.

Rebinding the shortcuts

Every key above can be changed, from Keyboard shortcuts in the ⚙ settings. Click a key chip to replace it, to add a second binding, to remove one; Escape while a chip is armed backs out.

They are one set across all five editors on purpose — rebinding Delete rebinds it in rules, lightshow, sound, DMD, and testing at once, because these are one product’s shortcuts rather than five independent ones. Tabs across the top of the widget let you check availability per editor: the same keys are listed under every tab, and a row greys out on a tab where that editor has no such command. That is the question the tabs answer — “why did Delete do nothing on the Testing page” — not “what is the key here”.

The palette digits are an ordered row: the first key you bind adds the first visible palette entry, the second the second, and so on. Because it is positional rather than about the character, it works on layouts (French AZERTY, for one) where the digits need Shift, and the numpad digits work too.

Binding one key to two commands is warned rather than refused, and the widget names which one actually fires.

Keyboard shortcuts never fire while you’re typing in a field, so editing text is safe — including the digits, so a number typed into the palette filter stays a number.