βambi

contribute

parameters and state

Keys are forever: append, never rename, never remove. Everything else is read by name.

A host saves automation and sessions by a parameter’s key. A key that changes breaks every project that used it. So each plugin’s parameter list follows three rules, written at its top:

one list, everything in it

Each plugin’s parameters are one table: group, key, display name, unit, type, range, default and choices, one row per parameter. It is the only place a range or a default is written; the engine, the window and the host all read it from there. Blocks every plugin shares — a region slot, the generators, the rates switch, the detectors’ release — are stamped from one shared definition, so they have the same keys, names and ranges in every plugin.

Keys are named by position (region1, lfo2) and display names by role (send size), so a slot’s key does not change when its role is named differently.

what is a parameter and what is state

a parameter, when state, when
a host should automate it it is chosen once and changes what a thing is: a region’s kind, a trajectory’s nodes
it moves smoothly and may be modulated it cannot be a number: a list, a name, a set of weights

How the window is looked at — the camera, the open tab, the selected instance — is neither, and is never saved.

reading state

State is read by name. A missing key takes its default, an unknown one is ignored, and a value that is not valid loads as something that can be evaluated. A document made today opens after a parameter is added tomorrow: the format grows by name. Numbers inside keys parse strictly: "1x" is not slot 1.

what a preset holds

A preset is the state without what makes an instance this instance: its identity, its name, and which input it is plugged into. See presets.