Learn Export Description

Getting Started

Welcome to RNBO

Quickstart

RNBO Basics

Key Differences

Why We Made RNBO

Coding Resources

Fundamentals

Audio IO

Messages to rnbo~

Using Parameters

MIDI in RNBO

Messages and Ports

Polyphony and Voice Control

Audio Files in RNBO

Using Buffers

Using the FFT

Export Targets

Export Targets Overview

VST/AudioUnit
Max External Target
Raspberry Pi Target
The Web Export Target
The C++ Source Code Target

Code Export

Working with JavaScript
Working with C++

Special Topics

Sample Accurate Patching
Scala and Custom Tuning

RNBO and Max for Live

RNBO Raspberry Pi OSCQuery Runner

Metadata

Export Description

Raspberry Pi GPIO

Updating the RNBO Package

Export Description

The exported description (description.json for C++, contained in the export JSON for WASM export) contains structured data about your patcher.

After exporting a RNBO patch as C++ or WASM code, you should see a handful of files in the export directory.

├── cpp-export-directory/
│   ├── dependencies.json
│   ├── description.json
│   ├── exported-patch.cpp
│   ├── presents.json
│   └── rnbo/
└── js-export-directory/
    ├── dependencies.json
    ├── exported-patch.export.json
    └── exported-patch.export.license

Along with the exported code itself, these files contain a JSON description of your patch, including all of the parameters and data refs in your export. For C++ export, this structured information is in `description.json`. For WASM export, it's included in the `export.json` bundle.

Parameter Description

Keys marked "Internal Use" are used by RNBO internally. You shouldn't change this data or try to use it for anything.

Key

Description

type

One of ParameterTypeNumber, ParameterTypeList, ParameterTypeBang, ParameterTypeSymbol, or ParameterTypeCount. Almost always ParameterTypeNumber for user-defined parameters.

index

Index of the parameter. Set internally, do not modify.

name

Name of the parameter. Possibly different from paramId, but usually the same.

paramId

Unique identifier string for this parameter.

minimum

Minimum value for the parameter. Feel free to edit this, but subsequent exports may override your change.

maximum

Maximum value for the parameter. Feel free to edit this, but subsequent exports may override your change.

exponent

Exponent value for the parameter. Feel free to edit this, but subsequent exports may override your change.

steps

Number of steps for the parameter, for discrete-valued parameters. Feel free to edit this, but subsequent exports may override your change.

initialValue

Initial value for the parameter. Feel free to edit this, but subsequent exports may override your change.

isEnum

Whether or not the parameter uses enumerated values.

enumValues

The enumerated values of the parameter.

displayName

Display name for the parameter. Feel free to edit this, but subsequent exports may override your change.

unit

Unit or symbol to describe the parameter.

order

Order in which the parameters will be initialized. Lower is sooner. Can also be symbolic, using "first" or "las

displayorder

Order in which the parameters will be displayed. Lower is sooner. Can also be symbolic, using "first" or "last".

sendinit

Whether or not to send the parameter's initial value to any connected objects on patcher load.

initialized

Internal use.

debug

Internal use.

saveable

Internal use.

transmittable

Internal use.

visible

Internal use.

signalIndex

Internal use.

ioType

Internal use.

serialId

Internal use.

constrainFunc

Internal use.

Visible and Debug

Exported parameters have two properties: visible and debug, which are marked for internal use. As of this writing, there is not way to hide parameters from exported targets. The only way to mark a parameter as hidden is by using metadata, and by defining a custom target. For example, in your param object you could write something like:

param size @meta hidden:true

Then in your application code, you could ignore params with hidden: true in their metadata. For example, if you were working from the JUCE starter template, you could modify the constructor for. RNBOAudioProcessorEditor to exclude from display params with specific metadata.