Panels and viewers
The layout vocabulary: what a panel may be, and what a viewer may draw. Both are declared once in the manager and generated from there. Naming one that is not in the table is a type error in the app and is refused by the API.
Panel types
What a layout entry's panel_type may say. Tabs, splits, maximise and
drag-and-drop belong to the panel framework; this list is what a panel may contain.
| Id | Title | Binds a node | What it shows |
|---|---|---|---|
empty | Empty | no | a placeholder with no content yet — what a fresh split births |
node-editor | Node Editor | no | the patch canvas — nodes, wires and sub-patches |
parameters | Parameters | yes | the parameters of one node, with ranges and expression bindings |
viewer | Viewer | yes | live frames from one output slot, drawn by `state.kind` |
metadata | Metadata | yes | frame metadata from one output slot (sfreq, channels, shape) |
console | Console | yes | the patch log; a bound node filters it to that node |
globals | Globals | no | the patch globals, which any expression can read |
control | Control | no | knobs, sliders and fields over one group of globals |
agent | Agent | no | a terminal on an agent harness, running in the patch workspace |
Viewer kinds
What a viewer panel's state.kind may say. A non-ARRAY data type pins its kind: a STRING slot is always drawn by the string viewer, whatever
kind was stored. draws is the dimension range the component renders; accepts is the equal-or-wider range its spec declares, so a frame it only
summarises still arrives reduced.
| Kind | Type | Draws | Accepts | What it shows |
|---|---|---|---|---|
line | ARRAY | 0–2-D | 0–3-D | a time plot: one series (1-D) or one per channel (C, N) |
image | ARRAY | 2–3-D | 2–3-D | a bitmap: (H, W), or (H, W, C) for 1–4 channels |
trajectory | ARRAY | 2-D | 2-D | a phase portrait over pairs of rows of a (D, N) frame |
topomap | ARRAY | 1-D | 1-D | a scalp map of one scalar per channel |
string | STRING | n/a | n/a | the text of a STRING slot |
table | TABLE | n/a | n/a | the rows of a TABLE slot |
Data types, and what feeds what
Four slot types, each with its own colour so a patch colour-codes at a glance. The manager has one link rule:
- ARRAY → ARRAY
- STRING → STRING
- TABLE → TABLE
- AUDIO → ARRAY
- AUDIO → AUDIO
An AUDIO output feeds an ARRAY input, which is what lets an audio chain end in a spectrum or a scope without a conversion node in between.
Boundary ports
A sub-patch is made by grouping nodes, and it talks to the patch around it through boundary
ports. A port's direction and data type are its type, and it has no other
configuration. An in port feeds the sub-patch, so it has an output slot and is a
link's source.
| Type | Direction | Data type |
|---|---|---|
InArray | in | ARRAY |
InString | in | STRING |
InTable | in | TABLE |
InAudio | in | AUDIO |
OutArray | out | ARRAY |
OutString | out | STRING |
OutTable | out | TABLE |
OutAudio | out | AUDIO |
Every table on this page is generated from the manager's own vocabulary module, stamped protocol 4.
This reference describes goofi 3.1.0(537cd394), generated from a running instance on 2026-09-06.