I am not a programmer (although I dabble and can read code decently). However I have lots of experience with Max.
Their new RNBO program looks interesting and I was wondering how doable it would be to construct a plugin for FMOD using RNBO and its C++ conversion feature.
Any insight would be much appreciated
It looks like it should be possible to use the exported RNBO C++ artifacts inside an FMOD plugin.
- RNBO processes through a
RNBO::CoreObject, which you could create inside a
FMOD_DSP_CREATE_CALLBACK and save to your
- You would need to match that with a call to release the
RNBO::CoreObject inside your
- To prepare RNBO for playback, you could call
FMOD_DSP_RESET_CALLBACK, passing in the sample rate from
FMOD_DSP_STATE_FUNCTIONS::getsamplerate and the block size from
- To process a block of audio you could call
RNBO::CoreObject::process from the
SampleValue appears to just be a pointer to an array of
FMOD_DSP_BUFFER_ARRAY::buffers is a pointer to an array of floats, so you would need to convert FMOD’s
float buffer into a
double buffer before passing it to RNBO, and then convert the resulting
double buffer from RNBO into a
float buffer for FMOD to use.
- For getting and setting parameters, RNBO has
setParameterValue, which you could call from
FMOD_DSP_GETPARAM_FLOAT_CALLBACK. You would need to declare each parameter in the
- RNBO exports a patcher called
rnbo_source.cpp, and a folder called
rnbo containing the static RNBO library. There are no other libraries that need to be linked in, so the RNBO patch should be able to run on all of our supported platforms.
So, you would still need to write an actual FMOD plugin and link in the RNBO C++ stuff yourself, but it looks like it should be totally doable to wrap an FMOD Plugin around a RNBO patch.
Thank you Jeff for the explainer. Now I need to figure out how to build an FMOD plugin from scratch ahahah
We have two example plugin projects in our Core API examples to help get you started. If your RNBO patch generates audio and you need it to behave like an FMOD instrument, then I would start with the fmod_noise example. If your RNBO patch requires audio input and you are needing something like an FMOD effect then the fmod_gain example would be more appropriate.
I would start by building either of those without any changes to verify everything is setup correctly, then add the RNBO stuff once you’ve got something running in FMOD Studio.
The Core API examples can be found in the FMOD Engine package on our Download page. Please let me know if you run into any issues getting setup.
Very interested in RNBO and FMOD, seems lile it could have a lot of potential. It would be really awesome if there were any tutorials available. Looking forward to hearing more about your progress