Learn Raspberry Pi Web Interface Guide

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

Raspberry Pi Web Interface Guide

The Raspberry Pi Web Interface provides remote control and management of patches exported to the Pi.

The web interface gives you full control over the audio graph running on the Pi, including the flow between exported patchers, the tempo and active state of the transport, the active MIDI and audio hardware devices, and other configuration settings.

The Graph Editor provides a node-based UI for creating and managing signal flow between exported patchers. As you export patchers to the Pi, they add to a library of nodes that you can use to configure MIDI and audio signal flow between all exported patchers and the Pi's connected Audio/MIDI hardware.

Each patchers instance running on the Pi is represented as a node where Parameters, MIDI, and Ports (inport and outport data messages) for each instance can be controlled and referenced via Instance Control.

Exporting and Web Interface Access

You can find the URL for the web interface in the Raspberry Pi Export Sidebar. After exporting, a button showing Open Interface should appear, which you can click to open the web interface in your default browser. For convenience, a QR code will appear after export that you can follow to access the web interface.

It's important to set the Patch Name in the Target Sidebar, as this will be the name of the node when working with the graph editor. If you export a different patcher with the same name, the interface will automatically add an index so that each exported patcher can have a unique name.

By default, the Run Immediately checkbox in the Target Sidebar is checked and the patcher instance will appear to be loaded, running, and connected in the graph editor. In the case that it is unchecked, the patcher instance will load without running or connections. 

Upon loading the web interface, the browser reveals the main interface with the left sidebar and the top toolbar. The left sidebar allows access to open the Graph Editor, Patcher Instance Control tab, and Settings to load in the interface.

The top toolbar reveals the Transport Control (playback icon) which is addressed later in this guide, and the Connection Info (satellite icon).

The Connection Info reveals the hostname or IP address of the device that runs the OSCQuery Runner as well as the the port of the OSCQuery Runner Websocket associated with the Web Interface. 

Note : The 1.3.0. image runs an HTTP server that serves the interface on port 3000. The interface is accessed using either the device hostname or IP address followed by the port number. So if your pi had the hostname c74rpiand the IP address, then from any device on your local network you could visit http://c74rpi.local:3000 or to see this page.

The Graph Editor

The Graph Editor is designed to control Raspberry Pi’s MIDI and Audio signal flow between all exported patchers and the Pi's connected Audio/MIDI hardware. Upon loading the Web Interface, the Graph Editor tab appears as the default tab, showing all running nodes and their current connections in the main interface. 

Working with the Editor Interface

The editor is similar to Max where connections between objects(nodes) are made via "patch cords." These patch cords represent the signal flow of audio and MIDI data between nodes. Unlike Max, where signals move from top to bottom, here signals flow from left to right.

A connection can be made from an inlet to an outlet by clicking the inlet or outlet and dragging to another node's inlet or outlet. To delete a connection, click the patch cord to select it, and then click the X button that appears.

Nodes can be moved in the interface simply by clicking and dragging.

Clicking the background of the interface and dragging will adjust the orientation of the view.

The navigation panel located at the bottom left of the editor and has view options for your interfaces orientation and behavior. Zoom In and Zoom Out buttons for the editor view. Fit View will crop the view to the dimensions of the nodes and connections in the user interface. The Toggle Interactivity enables and disables locking for the ability to click toggles, which should only apply to the toggle revealed when deleting patch cords.


Nodes in the Graph editor can be broken down into three types : Patcher Instances, System Nodes, and the RNBO-control Node.

Patcher Instances

Each patcher exported to the Pi is represented as an instance node when it has been loaded in the Graph Editor with the name determined by Patch Name in the Target sidebar at the time of export.

In the case that Run Immediately was disabled at the time of export, the node shouldn't appear running or connected in the Graph Editor. In the case that it Run Immediately is enabled (default), the exported patcher instance will have all of its input and output audio/MIDI inlets connected automatically, to the Pi's audio/MIDI inputs and audio/MIDI outputs. with the exception of the rnbo-control MIDI inlet. A patcher instance can also be loaded more than once, creating duplicate patcher instances from the same patcher in the editor.

The + Add Patcher dropdown shows all patchers that have been successfully exported to the Pi , including those that are not currently loaded as patcher instances in the editor. Clicking any will load the patcher instance in the graph editor without making any connections.

Each patcher instance also has a gear icon. Clicking this will open up the Instance Control tab for remote control of the patcher instance. 

To remove an instance from the graph editor, click the gear icon of the Instance and then the trash icon at the top right. You can also press Backspace with the instance highlighted.

System Nodes and Connected Hardware

MIDI and Audio hardware interfaces connected to the Pi are represented by two nodes named system.

The leftmost system node in the editor represents the connected hardware MIDI and Audio Inputs. The rightmost system represents the connected hardware MIDI and Audio Outputs.

RNBO Control and MIDI Program Changes

We're currently experimenting with how the Web Interface supports MIDI Program Changes. This is an area of active development and subject to change, but right now MIDI program change events can swap patcher instances or load instance presets.

The RNBO Control node lets you use MIDI program change events to swap the current instance graph for a single patcher instance. Program changes will load patcher instances based on alphabetical order. So, program change 0 will load the first patcher instance in alphabetical order, program change 1 will load the next, and so on. This functionality is only enabled if device MIDI is connected to the RNBO Control node, as pictured.

By default, RNBO Control will listen to program change events on all MIDI channels. This can be configured using the MIDI Program Change Control option in Settings -> Control -> Patcher Select : MIDI Program Change Channel.

It's also possible to use MIDI program change events to load presets of a specific patcher instance. To enable this behavior, connect a MIDI device to the MIDI input of any patcher instance node.

As with the MIDI Program Change Channel option, instances can be configured to listen on a specific channel for program change events. This configuration option is called Preset: MIDI Program Change Channel. Presets are index by the order in which they were created, so the first created preset will be mapped to program change 0, the second to program change 1, and so on.

Presets of the Graph Layout via Sets

The Graph Editor has a feature to save, edit, and load the editors layout which contains the running nodes and all of their connections as Graph Sets.

At the top right of the Editor is the Sets button. Clicking this reveals the Graphic Sets panel with a dialog to determine a name for the set. Once that is set the save button will save the interfaces layout containing the running patcher instances and all of it's connections.

The saved set's name will be revealed below with three icons. The Trash Icon will delete the set. The Pen Icon in the middle will edit the name of the set. The Load Icon on the right allows for loading the set into the graph editor.

Instance Control

The patcher instances Parameter values, MIDI data, and Port data can all be remotely controlled and accessed for each instance via the Patcher Instance Control tab.

The Instance Control can be accessed form the left sidebar under the Instance Control icon OR from the loaded patcher instances nodes gear icon.

In the tab, The top left window shows the name of the instance, and reveals a dropdown of all instances loaded on the pi to click and open, revealing the instances Parameter, MIDI, and Port data.

Parameter Control

Parameter control is set via the Parameters tab. All named param/param~ objects are exposed by the objects @name. The parameters @value can be set via the associated slider.

Port control

With port and message control, all named inport and outport objects are exposed by their @name. Inports contain a dialog where a manual float or number can be sent for setting a value. Clicking the button with the blue icon next to that inport sends that value to update the inports state. Outports appear as numbers which represent the current state of the outport objects of the instance.

MIDI Control

The MIDI tab reveals an interactive MIDI slider for playing MIDI notes directly from the Web interface. This behaves as a midi keyboard (similar to kslider) connected to the running patcher instances MIDI input.

Octave range for the MIDI slider can be changed via the two arrows on the top right.

The computer's keyboard is also be set to play MIDI notes into an instance using the computer's keyboard.


Presets for a patcher instances Parameters, MIDI, and Port values can all be saved, edited, loaded, and deleted via the presets dropdown. Saved Presets to the RNBO object at the time of export will also appear in the dropdown.

To save a preset for an instance from the interface, open the presets dropdown (camera icon) from the Instance Control tab located above and to the right the instance controls and this will reveal the preset sidebar to load(load icon) and/or delete(trash icon).

Transport Control

Transport control of instances with objects locked to the external transport can be set from the Transport control window. This allows for adjusting BPM for all instances containing phasor~ and metro set to@locked 1 . It can be also be synchronized to Live's transport via Ableton link.

To access the Transport control, click the play icon in the top toolbar. This will reveal the Transport control window.

transport Control.png

To enable/disable transport control, the play button on the left will need to be clicked which will highlight it blue. When enabled, the arrows next to the bpm will change the value for transport control. Holding shift and click the arrows, the bpm will change in increments of +-10.0.

By default, the sync switch on the right is enabled (blue), showing that it is synchronized to Live's transport via Link. Enable Link in Live's preferences, and your Raspberry Pi will stay in sync with other Link-enabled devices on the same network.

Settings Menu

The settings menu for the Web interface Is represented by the gear icon in the bottom of the left toolbar. Customization of the Web interface UI, Program Change Channels, Instance and connection behavior, and Audio/MIDI hardware preferences can all be set here.


The UI settings are device scoped, saved to the local storage and restored on page load.

Theme Select a dark or light color scheme for the user interface.

Monitor Output Ports Activate this setting to monitor data sent out of [outport] objects on the port control tab of an instance.

Computer MIDI Keyboard Activate this Setting to play MIDI notes into an instance using your computer's keyboard, when displaying the MIDI control tab.


Determine RNBO-control behavior and set the channel for Program change

Patcher Select : MIDI Program Change Control Set which channel (or none or omni) should listen for program changes to load a patcher by index.

RNBO Control: Auto Connect MIDI Automatically connect control to midi outs.


Startup: Auto Start Last Set Automatically start the last instance configuration on runner startup

Instance: Auto Connect Audio Automatically connect newly activated instances to audio i/o

Instance: Auto Connect Audio by I/O Index Number Automatically connect newly activated instances to audio i/o, using the RNBO I/O index to inform the connections

Instance: Auto Connect MIDI Automatically connect newly activated instances to midi i/o

Instance: Fade in Milliseconds Fade in milliseconds when creating new instances

Instance Fade Out Milliseconds Fade out milliseconds when closing instances

Instance: Port To OSC Map slash prefixed port names to/from OSC messages by default

Preset: MIDI Program Change Channel Which channel (or none or omni) should listen for program changes to load a preset by index


Set the connected MIDI and Audio settings for the Pi's utilized Audio and MIDI connected hardware. To apply the configuration, click the button at the bottom right of the Audio tab of the Settings window that says Apply Configuration.

Audio: Num Periods Number of periods of playback latency

Audio: Period Frames Frames per period. This is the same as the DSP Vector Size

Audio: Sample Rate The Sample rate of the devices audio hardware

Audio: Interface ALSA hardware device name

Audio: MIDI System Determine which MIDI system to use. By default Seq is selected. In the case of using Sysex, it is suggested to use the raw MIDI system