Learn Transports and Synchronization

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

Transports and Synchronization

There are several ways to sync your RNBO patcher both inside Max and to sync it to the external world, here we cover it in-depth.

This video covers all things transport and sync in RNBO—aligning timing events in RNBO to a hosted transport, and configuring that transport from RNBO and all the things you’ll need to know about implementing them in your RNBO patcher.

Locking to Transport with Metro and Phasor~

RNBO objects like phasor~ and metro can synchronized to the host transport (including the Max Global transport) using the @lock 1 attribute. The standard Max Time Value Syntax is also utilized for these objects like 4n for quarter note resolution. When you export to your chosen target platform, these timings are maintained and synchronized to the transport of that platform. You can use the transport object to check the transport state of the host inside your RNBO patcher.


Setting Intervals from an External Source

RNBO does not support symbol messages, so to change the interval of a supported object from an external source, you must specify the value in numbers using ticks. The translate object can be used to translate the ticks into any other time value. The translate object is also synchronized to the transport, and responds immediately to tempo changes on the target platform.


Setting Transport Values

Setting global transport values can be done using the following four objects...

  • timesignature can be used to report and set the state of beats and units.
  • tempo is used for setting and reporting on global tempo.
  • beattime is used for setting and reporting on global transports units.
  • transport activates and deactivates the global transport, and reports on its activation state.

The standard Max Time Value Syntax can be used for these objects and the basic operation is the same.

For a detailed overview, see the guide on Timing and Synchronization in Max for Live .

Locking on Target Platforms

On the Raspberry Pi target platform, you can use the rnbo.remote object to control the transport state of the Raspeberry Pi RNBO Runner, including the tempo. When exporting to Max External, you can synchronize your RNBO-exported external to named transports in Max.

Each target will have a specific method for controlling synchronization locked objects. Refer to the documentation for the specific target for additional information on how to setup synchronization.

RNBO patchers that are exported to the Raspberry Pi target are also Link enabled, so you can use them with your Ableton session. Enable Link in preferences, and your Raspberry Pi instrument will stay in sync with other Link-enabled devices on the same network.

MIDI sync

You can use snapshot~ to capture a signal from a transport-locked phasor~ as a number message. You can use these to create transport synchronized MIDI modulations using ctlout. Similarly, you can use a transport synchronized metro object with the makenote object to create transport synchronized MIDI events that are locked to tempo changes.