Transports and Synchronization
Understanding Storage: let, const, @state, @param
Using the Audio Plugin/Desktop Application Template
Programming a Custom UI with JUCE
RNBO Raspberry Pi OSCQuery Runner
Why We Made RNBO
Max is really good at designing how different data streams come together.
Max is really good at designing how different data streams come together. When you do something like map mouse movement to the pitch of an oscillator, you're making a creative choice about how two different streams of data should influence each other. RNBO takes that particular strength—designing the interaction between data streams—and helps you bring it outside of Max.
RNBO takes a graph representation of mixed event-and-signal processing and turns it into portable code. In addition, it can directly compile that code to a VST, a Max External, or a Raspberry Pi instrument.
What it is, What it's not
When we're describing RNBO above, you'll notice that we're careful to de-emphasize Max. Rather than saying "it turns Max patches into code," we say "it generates code from a graph representation." That's on purpose. Similar to Gen, RNBO is its own language. Also like Gen, RNBO is heavily inspired by Max. Not only does it borrow the fundamental Max paradigm—objects with multiple ports connected by patch cords—it also implements RNBO versions of many Max objects. As a result, the learning curve from Max to RNBO should be very gentle. If you know Max, you basically know RNBO already. In many cases, it's possible to copy a group of objects from Max and paste them into RNBO, all without changing their behavior.
On the left, A Max patch. On the right, a RNBO patch. Very similar.
When you're editing a RNBO patcher in Max, you're actually using Max as an interface to manipulate the graph description of a RNBO patcher directly. When you run a RNBO patch in Max, what you're hearing is the same code as will ultimately be running on your chosen export platform.
What you can do with RNBO
One of the first things you might want to do with RNBO is export your patch as an audio plugin. This lets you take your custom audio process and run it in any number of DAWs, including Logic, and Cubase. This is probably the most immediate and direct way to experience what RNBO offers: being able to design an effect in Max and then take it somewhere else. The audio plugin template lets you build a Unity plugin as well, so you could run your custom audio process inside a Unity game.
Another fun thing to try is building a Max external. This lets you share work built in RNBO with other Max users, without requiring them to download the RNBO package. Max externals built with RNBO are also generally more efficient than the equivalent patch built in Max without RNBO, especially when it comes to polyphony. If you re-write a polyphonic Max for Live device as a Max external, it will load faster and use less CPU at runtime. Finally, a compiled Max external does not reveal its source. If you're secretive about your sound processing IP, building a Max external is a good way to keep it hidden.