Standalone using RNBO doesn't work. Tells me "rnbo~: No such object"

Jonatan Krogh's icon

As the title says. Can't use RNBO to work in standalones. Is this intended or a bug?

I tried using a workaround to just export an external, but I'm referencing several buffers in the rnbo~ patcher and the external doesn't seem to like that (or something else is wrong with my external but my guess is this is the issue), so in my specific case that's not an option.

Source Audio's icon

rnbo as well as node for max packages must be included into standalone for rnbo to work.
one can trash a lot of parts from packages to reduce standalone size,
but essential parts need to remain, otherwise rnbo can't work.
which makes absolute minimum of at least 300 MB size even for simplest standalones on windows, and even more on Mac, if you leave both arm and intel code intact.

Alex Norman's icon

Jonatan,

The exported external shouldn't have any issue referencing several buffers, by default you have to map your external's buffers to max buffers, but beyond that it should really not be any different than rnbo~.

If you're having issues with that, we'd love to know.

Jonatan Krogh's icon

Do i need to do something extra to include RNBO and Node in the standalone? I have not removed anything to make it lighter yet.

Here is my test patch.
If i just build this to a standalone i get "rnbo~: no such object.
If i export the rnbo patch as a max external it does nothing.

(edit. fixed file)

Rnbo_standalone_test.maxpat
Max Patch

pokertest1.zip
application/zip 1.56 MB


Source Audio's icon

you need to reupload your test patch, it is only a bookmark of the file.
either select all and copy compressed, then paste here,
or zip it before uploading.
-----
open your standalone and look in resources/packages folder.
If there are not there, copy both rnbo and node for max folders into packages folder.

Way better is to use external than rnbo, which makes standalone
start very slow, and increases app size.

I loaded your external on windows,
it shows audio, signal #2 and overdub inlets, but
no outlet.
-------
Before making standalone, your first test should be your external in max itself.
if it does not work than you need to fix that first.

Jonatan Krogh's icon

oh sorry, here's the real one!

It doesn't use the outlets... its kinda a replacement for poke, only i have to bake the buffer names into the object since i can't work with strings in RNBO if i understand things correctly. It makes sense when you see the patch i think.

I've only tested the external in max, didn't try exporting since i didn't get it to work. When i try i simply export the external with default settings, then just change the name of the rnbo object to replace it. All outputs are matching and no errors, but nothing is happening to the buffers.

Rnbo_standalone_test.maxpat
Max Patch

Source Audio's icon

I looked at it, no idea if compiled external can cope
with buffers set like that.

but as standalone with rnbo patch it runs, although very sluggish,
it takes long to start app, and also long till recording starts functioning.

one has to manually copy both packages into standalone,
at least on windows they don't get auto included.

Jonatan Krogh's icon

Ok, thanks, I'll give it a try.

@Alex Norman, would be great if you could have a look at the external and help me figure out what the problem is. My only guess is the buffers since there's not much else going on in the patch, and Source Audio seem to share that suspicion..

Alex Norman's icon

Jonatan,

I haven't looked deep into your patch to get all the details but I think that the max external export works as expected, you just have to map the buffers as I indicated earlier.

[pokertest1~ @T1 T1 @T2 T2 @T3 T3 @T4 T4 @T5 T5 @T6 T6 @T7 T7 @T8 T8]

Basically, the exported external doesn't automatically map a "rnbo" buffer, say T1 here, to the max buffer T1, because, for instance, if you're creating a sampler and want to have a bunch of instances of your external playing different sound sources, that would but unnecessarily limiting. Instead, the external provides you with an attribute that you use to map the "rnbo buffer" to a max buffer by name.. so for instance, your patch that uses [pokertest1~] could have a [buffer foo 5000] and you could use that via [pokertest1~ @T1 foo] to map the RNBO T1 buffer to "foo" in max.

Using the exported external in your standalone will really improve the user experience vs using rnbo~.

Jonatan Krogh's icon

Ahaa! Thanks, that works! Great news! Don't need to use 8 different buffers at all then, i can just use one and remap it.