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.

IdTitleBinds a nodeWhat it shows
emptyEmptynoa placeholder with no content yet — what a fresh split births
node-editorNode Editornothe patch canvas — nodes, wires and sub-patches
parametersParametersyesthe parameters of one node, with ranges and expression bindings
viewerVieweryeslive frames from one output slot, drawn by `state.kind`
metadataMetadatayesframe metadata from one output slot (sfreq, channels, shape)
consoleConsoleyesthe patch log; a bound node filters it to that node
globalsGlobalsnothe patch globals, which any expression can read
controlControlnoknobs, sliders and fields over one group of globals
agentAgentnoa 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.

KindTypeDrawsAcceptsWhat it shows
lineARRAY0–2-D0–3-Da time plot: one series (1-D) or one per channel (C, N)
imageARRAY2–3-D2–3-Da bitmap: (H, W), or (H, W, C) for 1–4 channels
trajectoryARRAY2-D2-Da phase portrait over pairs of rows of a (D, N) frame
topomapARRAY1-D1-Da scalp map of one scalar per channel
stringSTRINGn/an/athe text of a STRING slot
tableTABLEn/an/athe 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.

TypeDirectionData type
InArrayinARRAY
InStringinSTRING
InTableinTABLE
InAudioinAUDIO
OutArrayoutARRAY
OutStringoutSTRING
OutTableoutTABLE
OutAudiooutAUDIO

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.