Glossary
The words this repository uses in a sense its own code fixes. A term is here when the tree gives it a narrower meaning than a reader would assume, not because it is unfamiliar.
The rig and its products
descriptor — a NodeDescriptor: the id, name, parameters, ports and make() function a
product exposes, so a host builds the node without naming its class.
node — an IAudioNode: one processing block with prepare(), process(), ports() and
reset(). A product, a routing block and the graph itself are all nodes.
product — a module that models one piece of gear and exposes exactly one descriptor, such
as sushidsp.jcm800. routing, cabinet and room register nodes the same way without
modelling a circuit.
rig — the user’s chain of nodes, held as a RigGraph that sorts them topologically and
runs them once per block.
tier — one of the three folders under modules/: nodes, catalog, session, lowest
first. A module includes its own tier and the ones below it.
Models and their evidence
alias floor — what measure::alias_floor() in tests/measure/AliasFloor.hpp returns: the
worst non-harmonic spectral line a node produces across 1 to 20 kHz test tones, in dB relative
to the fundamental. A harmonic that folds back from above Nyquist counts as one.
DK method — the discrete Kirchhoff state-space formulation math/dk/ implements. DkNetlist
describes a circuit, DkCircuit discretises it and DampedNewtonSolver solves its nonlinear
ports each sample.
dossier — a research document on one piece of gear under docs/archive/research/: its
schematics, their sources and the questions they leave open.
golden file — one second of mono float32 rendered by one node at one sample rate, stored
under tests/golden/ and compared against a fresh render at −80 dB RMS residual.
phase — a step of the roadmap in docs/design/SUSHIDSP.md §9, named by a prefix and a
number, such as D4, DS2 or DE.
stand-in — a constant nobody has published, listed in its module README’s stand-in table with the value that holds its place and what would settle it.
white box — a model built from the schematic’s own nodal equations and device laws, with no stage fitted to a recording.
Timeline
bar — a group of beats, four of them until MusicalClock::set_meter says otherwise. A bar’s
first frame is MusicalClock::frame_of(bar, 1), floored, so a bar line lands at most one sample
early (20 microseconds at 48 kHz) and never late.
beat — one tempo period, 60 / bpm seconds, held as a 32.32 fixed-point frame count so a
grid does not drift: at 137.4 BPM the step is low by 1.1e-10 of a frame and 20000 bars sit
8.8e-6 of a frame behind ideal. Bars and beats are counted from 1, frames from 0.
clip — a take placed on a lane at a frame: TrackTimeline::Clip names a const Take*, the
timeline frame it starts at (start_frame), the take frame it starts from (take_offset) and
its length. A lane holds up to
kMaxClips = 16 of them, sorted and immutable once published. A clip borrows its take; it never
owns one.
lane — one of the eight tracks a TrackPlayer mixes, with its own timeline, gain, pan, mute
and solo. The arrangement view draws one row per lane.
playback speed — Transport’s rate multiplier between kMinSpeed 0.5 and kMaxSpeed 2.0.
The pitch follows it, the way a tape machine’s does: half speed is an octave down. Nothing in
this tree stretches time. Speed 1.0 is a bypass — TrackPlayer copies the take rather than
entering VariRateReader, so a whole-take clip reproduces its file bit for bit.
take — a whole recording held in memory with its channel count and sample rate, Take. A
TakeLibrary owns every loaded take and is the only code that destroys one; the audio thread
reaches a take through a lane’s RtSwapSlot<TrackTimeline> and holds it as a raw pointer.
timeline frame — the unit clips and the transport position are measured in, at the rig’s
sample rate. A clip’s start_frame and its take frames are the same unit whatever the playback
speed, and TrackPlayer converts to output frames at each run’s own base.
The timeline classes live in modules/nodes/capture/ and are described in
its README.md; the intent behind them is in
docs/design/SUSHIDSP.md §3b.

