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