Building instruments
Custom devices
Turn a Grid patch into a named device with exposed controls, macros, versions and a portable device file.
A custom device packages a Grid patch around the controls you want to use. For example, you can name a filter cutoff Brightness, expose an envelope release as Tail, and add a macro that changes both. You keep the patch and its device draft, then design a front panel if you want one.
Device drafts live in My Devices in this browser. Keep a backup when the work matters to you.
Create a device draft
- Open the Grid and build a working patch.
- Choose Compile Device.
- Set Device name, Device type, Author and Category. Description and Engine compatibility describe the device.
- Set Polyphony and the capabilities that match your patch.
- Expose the parameters you want to use, then choose Compile.
Compiling creates a draft in My Devices. Later edits save locally as you work. Check for Saved locally. Not saved — keep this window open. Retry or export a backup. means the latest device changes have not been safely saved in the browser.
New device starts a new definition for the current graph. A compiled local draft can open in the Interface Designer.
Type, voices and capabilities
Device type offers Synth, Drum machine, Sampler, Audio FX, MIDI FX, Sequencer, Generative, Utility and Hybrid. The choice describes the device; it does not add missing inputs or outputs.
Polyphony is 1–64 notes. More notes can require more processing. The graph’s voice settings and compile budget still constrain the result.
The compiler currently expects Audio inputs to be 0 and MIDI output to be off. External audio input and MIDI output are unavailable at this device boundary. Audio FX and MIDI FX therefore fail compilation. An internal Grid effect can still be part of a synth patch.
For an audible Synth, Drum machine, Sampler or Hybrid device, include Output and declare Audio outputs as 1. The builder recognises that mono Output endpoint for its device capability check; Stereo Output alone does not satisfy it. MIDI input must match the presence of a connected Note Input module.
Performance profile offers Eco, Balanced, High and Render. Render compiles for offline work. A declared profile is not a measurement of how fast your browser can play the device.
Expose parameters
Under Exposed parameters, choose an item in Choose a module parameter, then select Expose parameter. The list includes parameters inside nested devices.
Each exposed parameter has these controls:
| Field | Use |
|---|---|
| Display name | The name used on your device. |
| Minimum, Maximum, Default | The exposed range and initial value, within the original parameter’s allowed range. |
| Smoothing (ms) | Smoothing declared for parameter changes. |
| Automation, Modulation | Whether the exposed control permits those kinds of movement. |
| MIDI CC, MIDI channel | Optional controller metadata: CC 0–127 and channel 1–16. These fields do not connect a MIDI device by themselves. |
| Remove | Remove the exposure. |
The panel also shows a read-only Stable ID. Controls use that identity, so renaming a parameter or moving its module does not disconnect it. Deleting or replacing its source can leave a broken binding that needs explicit repair.
Under Exposed modulation inputs, choose a compatible control, pitch or gate input and select Expose modulation input. Give it a display name. Its type and connection details come from the selected port.
Build macros
A macro moves several exposed parameters from one control. Expose at least one parameter, select Add macro, set Macro name and a Default from 0–1, then add targets.
Each target has:
- Target parameter, the exposed parameter to change.
- Mode, Control or Modulation.
- Direction, Normal or Reverse.
- Minimum and Maximum, the target’s travel.
- Depth, from 0–1.
- Polarity, Unipolar or Bipolar.
- Scaling, Linear or Exponential.
- Curve, Linear, Power or Bounded points.
A Power curve adds Power exponent, from 0.01–32. Bounded points uses Curve points (x,y; x,y); enter pairs such as 0,0; 1,1. It needs at least two pairs. Invalid curve text produces an error and must be repaired before the device compiles.
Control targets own their parameter’s value; competing control writers are refused. Modulation targets combine with the parameter. A macro cannot target another macro.
Read the compile result
The status is Needs compile, Success, Success with warnings or Failed. Editing the current definition invalidates an earlier result. A message linked to a module can take you directly to that card.
The report shows Modules, Active operations, Voices, Dependencies, Exposed parameters and Estimated DSP state bytes. This memory estimate is not all the memory used by the browser. Estimated load may be unavailable when no reference estimate exists.
Measure offline measures render speed on this device and reports it separately from live playback. It can take time, and a failure is shown as Offline measurement failed. It does not prove that live audio will keep up.
Compile success does not mean the device is ready to publish. Compilation checks the definition; it does not run the device’s full audio and readiness checks.
Work in My Devices
Open My Devices in the patch toolbar. Search devices matches the name and category. The filters are Drafts, Ready, Published, Purchased, Favourites and Archived; some can be empty. A filter name is not evidence that public device publication or purchase is available.
Each row shows artwork or a placeholder, category, status, modified time, version and validation. The star adds or removes a favourite. Available actions depend on the device’s state:
- Open or Edit graph restores its graph and control definition.
- Rename changes its name.
- Duplicate creates a separate local draft.
- Save new version records a named version. Version text uses a form such as
1.0.1. - Archive and Delete remove it from active lists. Delete archives it; choose Restore under Archived to recover it.
- Design interface opens a compiled, locally authored, unarchived draft.
- Test performs a short local output test.
The output test reports the peak and output guard count for 12,000 rendered samples. It is not a live audition and does not establish complete readiness. Use Test audio in the Designer to play the actual device.
Version history lists saved versions and separate revisions for the sound graph, controls, interface, artwork, presets and metadata. Restore revision restores the chosen part of a local device. Restoring an interface revision does not replace the sound graph.
Saving and recovery
A device row may say Metadata synced · Source stays local. This syncs small descriptive metadata, not the full device, interface or artwork. Retry metadata sync retries a failed sync. A conflict offers Keep local metadata or Use server metadata; choose the version you want.
Retry saving retries failed local writes. Export local backup downloads recovery data. Keep local storage asks the browser to retain its storage, but the result can be Browser persistence was not granted. Keep a backup either way; clearing browser data can remove local devices.
My Devices follows the active account. Claim guest draft explicitly brings an unclaimed guest draft under the signed-in account.
Portable device files
Export .globinst downloads a device file for a locally authored, unarchived device. It includes the sound definition and the supported interface, presets and artwork needed by that package. Import .globinst checks a chosen file before saving and compiling it locally. Then open or test it from My Devices.
The entire package is limited to 32 KiB. Large artwork can push it over the limit. Missing artwork access is reported as Artwork source is unavailable. Restore access before exporting this device. A duplicate import preserves the existing saved device.
Imported and protected devices cannot be re-exported through this action. Creator attribution supplied in a local package is not verified. The file does not by itself grant permission to redistribute someone else’s work; consult the applicable licence and Terms.
