Learn Export Targets Overview

Getting Started

Welcome to RNBO


RNBO Basics

Key Differences

Why We Made RNBO

Coding Resources


Audio IO

Messages to rnbo~

Using Parameters


Messages and Ports

Polyphony and Voice Control

Audio Files in RNBO

Using Buffers

Using the FFT

Export Targets

Export Targets Overview

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


Export Description

Raspberry Pi GPIO

Updating the RNBO Package

Export Targets Overview

RNBO supports the ability to export patches to a number of different targets. Each target comes with a number of important configuration options to customize both the export process and resulting target.

When opening up any rnbo~ patcher, you'll notice a new icon on the right tab below the Max console icon labeled Show Export Sidebar.

Double-clicking this icon will show a list of every supported RNBO export target. In this overview, we'll go over some general info about the different types of RNBO exports, as well as a number of configuration options for each.

Code Export, Device Export, and Product Export

RNBO's various targets each export to different formats, some of which are more ready to use post-export than others.

The exports listed under Products, for instance, compile to formats that are immediately ready for use. The Audio Plugin Export can export .vst3 and .component (AU) plugin files directly which can be used in a DAW immediately after compilation. Likewise, the Max External Export can export a patch as a standalone application for direct use after compilation.

If a Raspberry Pi is plugged into your computer via USB, then it should appear as a possible export listed under Devices. The Raspberry Pi export is similarly able to export a patch to the Pi directly, insofar as the Pi is configured correctly. You can read more about Raspberry Pi configuration in the Raspberry Pi Overview article.

Finally, the exports listed under Code Export require perhaps the most work to get up and running with post-compilation. Some helpful guides are available here on rnbo.cycling74.com, including Working With JavaScript and Working With C++. Additionally, some useful template repositories are available to help you get up and running with deploying code export such as the C++ Plugin/Template Application and the JavaScript Webpage Template.

Exporting and Configuring

Once a RNBO patch is compiling successfully and a target is selected, it can be configured and exported by clicking the Export to Selected Target icon in the bottom right-hand corner of the export sidebar.

There is quite a bit of crossover in configuration options between different targets. For instance, you can specify the file/folder name and output directory for the exported RNBO device. Enable MIDI should be enabled if your RNBO patch uses MIDI I/O. Additionally, if polyphony is enabled in your RNBO patch, Link Polyphony to rnbo~ should be turned on and Polyphony Voice Count should be specified.

Other configuration options are less target-agnostic. For instance, you can specify a C++ classname for C++ export, inclusion of presets for VST export, and minification of JS code for the web export.

The Cloud Compiler

After exporting our RNBO patch, it is sent off to the Cloud Compiler which remotely compiles the patch to our target format and sends us the output once it's done.

There are a few benefits of sending the compilation process off to the cloud. Because RNBO has so many export targets, a number of toolchains and SDKs are required for exporting patches to individual targets. But managing all of these toolchains on your own can be tedious and time consuming! Compiling in the cloud rather than on your own computer assures that all of these hidden toolchains and SDKs will be properly updated and maintained over time as various targets are updated.

Additionally, when using the Web Export, the cloud compiler actually uses something called Web Assembly (WASM). Exporting JavaScript using WASM is important because it provides much higher-quality audio in the browser. Maintaining the WASM toolchain on your local machine can be especially difficult, thus another reason for cloud compilation.