Learn Messages to rnbo~

Getting Started

Welcome to RNBO


RNBO Basics

Key Differences

Why We Made RNBO


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++

Messages to rnbo~

Messages to rnbo~ can be used to control the object itself or to interact with objects inside the patcher.

By default the rnbo~ object has one inlet and one outlet for handling messages. The default message inlet can be used for sending messages directly to the rnbo~ object or for controlling param , param~ or inport objects. The default outlet will pass any information from outport objects.

rnbo~ attributes and messages

There are a number of attributes and messages that are specific to the rnbo~ object itself and are available regardless of the internal patcher code. For a full list of these, see the rnbo~ reference. These can be set much like any other Max object by sending the name of the attribute or message followed by the value.

Setting param values

In most cases, RNBO code is controlled using param objects, which provide range definition, custom scaling, normalization and more. When a param is declared in the patcher, it is exposed as an attribute of rnbo~. To set a parameter attribute, send a message with a valid param name followed by the desired numerical value or by using attrui objects.

Sending messages to the 'inport' object

The inport object can be used to communicate with a RNBO patcher without exposing the input as an attribute. Each inport must have a tag (name), which is used to address incoming messages. A message in the format inport-tag <value> sends the number or list to all inport objects with that tag. If the incoming messages tag does not match an inport in the RNBO patcher, it is ignored.

inport messages to RNBO

Message Inlets

The rnbo~ object can have any number of event inlets if they are declared in the patcher. Each in object requires an integer for an argument such as [in 1]. This creates an inlet on the rnbo~ object for receiving number values. Inlets on the rnbo~ object will be indexed numerically on top from left-to-right. Numerical messages or lists sent to an inlet will be passed to any in objects with the same index in the RNBO patcher.

Message Output

Sending messages to the 'out' object

Each out object requires an integer argument to determine the index, such as [out 1]. This creates an outlet on the rnbo~ object for sending integer/float values out of RNBO. Outlets on the rnbo~ object will be indexed numerically on the bottom from left-to-right.

Sending messages to the 'outport' object

outport objects in the RNBO patcher allow received messages to be sent to the target platform using the @tag argument. This allows the target to monitor outgoing messages produced by the RNBO patcher. Any numbers or lists sent to outport will have the outport tag prepended to them.

Mixed Signal and Event Inlets and Outlets

A RNBO patcher can have event inlets created by the in object, but it can also have signal inlets created by the in~ object. Unlike in Max, where signals are always leftmost followed by any event inlets/outlets on the right, the inlets on a rnbo~ object can be place in any order. This order is determined by the index arguments for each inlet and outlet.

There can be multiple instances of either in or in~ that share the same index number. The same goes for out and out~. Messages or signals to said inlets and outlets will be passed to all inlets or outlets that share the same index.

To make this work, event and signal versions can not share the same index. An in cannot share the same index number as in~, and an out cannot share the same index number as an out~.