Glossary

Every term of art this section uses, pinned. The vocabulary is the code's own — these are the words the docstrings, the design records and the tutorial all share. Each entry links to the page that develops it.

arrangement — the client-side layer that places elements in time, groups them recursively and renders them: clausters.form. Pure and transport-agnostic; the server knows nothing of it. Its DAW-style view is the multitrack editor. Called the arrangement (or the arrangement model when naming the layer as such) — never "the model" bare, which reads as the node tree or a def.

automation / automation lane — a break-point curve placed on the timeline that drives controls: clausters.seq.Automation. Stored as an Env; rendered as a control vector read onto a control bus. (Automation)

base level — the zoom at which a nested group is summarized (one labeled rectangle) or resolved (lanes of its own): Editor.expand / collapse. The same structure, seen coarser or finer — a view state, not data. (The editor)

beats — the arrangement's unit of time: musical, tempo-relative. Everything in clausters.form — onsets, durations, placements, extent — is in beats. Compare timeline samples. (Overview)

bounce — evaluating a generator offline into a generated element: a pattern run on a throwaway clock into a timeline of events (at flatten time), or a whole piece rendered to audio (Bouncing). A bounce is a change of state.

bus (internal) — a private audio/control bus a logical group declares (buses=["mix"]); members wire to it by naming it in their controls. Each graph instance allocates its own. The reserved name OUT is the hardware output. (The logical side)

change of state — evaluating a generator into a generated element: a pattern bounced to events, a piece rendered to a file. The compositional act rendering performs — it turns something you can only produce into something you can manipulate. (Elements)

clip — the editor's graphic unit: a placed rectangle spanning [offset, offset + dur] on the shared axis — its length is its duration. Draws the body (or layered bodies) its element calls for: a take, a piano-roll, a curve. (The editor)

concrete (group kind) — see group: a group whose members relate in time (a section, a lane), as opposed to a logical one, whose members relate by processing. It is the default kind, and the one the multitrack draws as lanes of clips. (Grouping)

control bus — a server bus carrying control-rate values. What an automation renders onto: a small internal synth reads the control vector onto the bus, and targets follow it (via /n_map, or by reading the bus directly). (Automation)

control vector — an automation curve discretized into a server control buffer (/b_gen "env", the same envelope math EnvGen plays — what is drawn is what is heard). (Automation)

cursor — the static transport line: where a located, stopped transport sits, and where the next play starts. Set by locate or a ruler click. Compare playhead. (Editing)

dirtyEditor.dirty: the arrangement changed since the last render. An edit never interrupts what is sounding; the next transport action re-reads the composition. (Editing)

duration — an element's own length in beats (Element.duration), optional. Distinct from a placement's dur, which overrides and trims it. (Elements)

edit-back — the GUI-to-data direction of the loop: the window's gestures ("clip" move/resize, "points" curve edits, "wire" rewiring, "locate") applied onto the arrangement by Editor.apply / Editor.poll. (Editing)

element — the arrangement's unit: any bounded thing that produces a unit of meaning and can be decomposed or combined — in one of the two modes, generated or generator, carrying an optional onset and duration, delegating its playing to the object it wraps. (Elements)

Env — the client's envelope object (levels, segment times, per-segment shapes): the stored form of an automation curve, round-tripped to and from break-points by env_to_points / points_to_env — the picture, the data and the server buffer all read the same object. (Automation)

event / clip (element) — the Event primitive: parameters grouped into one action, internally simultaneous. Wraps clausters.seq.Event. (Elements)

extent — the composition's length in beats, read from the arrangement (the end of its last placed element): Editor.extent(). Not a constant — move a clip past the end and the piece is longer. (The editor)

five primitives — the five element kinds, each a thin adornment over an object the client already has, with their conceptual names: Event (event/clip), Sequence (List), Buffer (Buffer), Track (Set), Generator (Function). (Elements)

flatten — the tree-walk that accumulates nested placement offsets into absolute beats, producing a flat timeline of playable items; contained patterns are bounced in the same pass. clausters.form.flatten / to_timeline — also available as pure inspection. (Grouping)

followEditor.follow: re-render on every applied edit (the live editor). Off, an edit marks dirty and waits for the next transport action. (Editing)

generated / generator — the two modes of an element, the axis the layer turns on. Generated: the rendered thing — random-access data you can edit, slice, read backwards (a buffer, a timeline of events). Generator: the algorithm that renders it — forward-only, it can just be evaluated (a pattern, a def). Between them, the change of state. (Elements)

group — the arrangement's one new structure: a composite element placing members recursively by offset. Two kinds: concrete (the members relate in time — a section, a lane) and logical (the members relate by processing — wired through buses, rendered as a GraphDef). (Grouping, The logical side)

GraphDef — the server's named configuration of member nodes wired by buses, sent with /d_graph and instanced with /graph_new. What a logical group renders to: Group.to_graphdef() maps one onto it, 1:1. (The logical side)

handle (member) — the stable object Group.add returns (also Group.handles), identifying one placement across edits — what move and remove take, and what the editor holds per clip. Group.members reads the placements as (offset, dur, element) triples. (Grouping)

instrument — the def named to play a Buffer element (its buf control takes the buffer number). A buffer is data: without an instrument it is structure only — it draws and contributes extent, but emits no event. (Elements)

lane — one track row of the multitrack window. The root group's members are the lanes; a lane's members are its clips. (The editor)

locate — seek: put the transport at a beat. Stopped, it moves the cursor; playing, it re-renders from there. A click on a lane's ruler or empty space is the same locate. (Editing)

logical (group kind) — see group: a group whose members relate by processing — wired to each other through buses — rather than in time. It does not flatten; it renders to a GraphDef, and it draws as a patch. (The logical side)

multitrack editor — the arrangement's DAW-style view and driver: clausters.gui.Editor plus the track/clip/graph widgets. Draws the tree, applies edits back onto it, owns the transport, and is the only converter between beats and timeline samples. (The editor)

onset — where an element starts, in beats, relative to its context; optional. Usually supplied by a placement rather than the element itself. (Elements)

patch / patcher — the view of a logical group: member boxes, bus nodes, one wire per (member, control) ↔ bus connection. Deliberately undirected — the data knows the connection; the direction is the server's analysis. (The logical side)

piano-roll — the clip body an element of events draws: one bar per note, high pitches up. A pattern's roll is bounced to be drawn — a generator lane shows the notes it is about to play. (The editor)

placement — one member's position in a group: an offset (beats, relative to the group) and an optional dur. An element's concrete place comes from its placement, not from itself. (Grouping)

placement length (trim) — a placement's dur overrides the element's own duration and trims what plays: events past the end are dropped, a final event is shortened — on a copy; the element is never rewritten. The DAW rule: a clip's length is what you hear of it. (Grouping)

playhead (sweeping) — the moving transport line, anchored to the engine's sample clock so it tracks the audio (Editor.anchor). Also the clausters.seq.Playhead object itself: what a render returns. Compare cursor. (Rendering, Editing)

pollEditor.poll(): drain the window's pending events into the arrangement (apply each), returning whether the composition changed. One call, no loop; never from the clock thread. (Editing)

quant — the one musical grid, in beats: the editor converts it once and hands it to the lanes as their drag grid, and snaps edit-backs to it — so the grid a clip is dropped on is the grid the arrangement re-schedules on. (The editor)

render / rendering — the change of state to sound, Element.render. What it does depends on the group kind. For a concrete group (a relation in time): flatten to a timeline and play it through a Playhead — and every render re-reads the tree. For a logical group (a relation of processing): translate to a GraphDef, send it, instance it. RT or NRT purely by destination. (Rendering)

rerenderEditor.rerender(): re-schedule the (edited) composition from the playhead's position, reusing the destination and clock the last render remembered — stop, re-flatten, play. Honest semantics: re-schedule from here, not a sample-exact splice; a synth already sounding keeps sounding. (Editing)

RT / NRT — real-time (a live server, timetagged bundles) versus non-real-time (an offline score, Session.nrt + render). The same client code and the same flattening either way — which is why a bounce is sample-identical to what you heard. (Bouncing)

take — an audio clip: a Buffer element's recorded/bounced content, drawn from the server buffer itself (fetched and decimated host-side). (Setup, The editor)

temporal character — what a single element's onset/duration presence makes it: segment (both), punctual (onset only), relative (duration only), abstract (neither — pure context). (Elements)

temporal relation — what a group's members' placements make the group: successive (they tile contiguously), simultaneous (they start and end together — one thing on the timeline, drawn as one layered clip), mixed (anything else). Derived, never declared. (Grouping)

timeline samples — the view's unit: one unit per audio sample, so a take sits 1:1 on the axis. Clips, rulers and edit-backs speak it; the editor converts (one beat = sample_rate / tempo units) and nothing else does. (The editor)

unit bridge — the single conversion between beats and timeline samples, owned entirely by the editor (units_per_beat, beats_to_units, units_to_beats), through the core's own time arithmetic. (The editor)

wire — one (member, control) ↔ bus connection of a patch. Rewiring on screen rewrites the member Generator's controls; the next render sends the graph as drawn. (The logical side)