This week, I wanted to build a VST Plugin and use it within TouchDesigner to create a direct connection between sound and visuals in one environment.
The Faust Approach
My initial approach was to use Faust to write the DSP code and export a VST from there. This process worked well, and I was able to get a VST2 plugin. However, when I tried to import it into TouchDesigner, I found out that it only supports VST3 plugins.
Using rnbo
The only alternative, besides from building a plugin in JUCE, which is far too complicated for me, was rnbo.
Rnbo is a library in max that lets you program in a node based environment and export to different targets, like C++, WebAudio, Raspberry Pi and also VST.
Using one of their examples, I was able to export a working VST3 plugin and load it into TouchDesigner. However, it not sounded as I expected and I was not able to fix this issue, which must be in TouchDesigner. Because when loaded into Ableton, it sounded just fine.
So I focussed on something different I discovered along the way.
Discovering Gen
While reading the documentation of rnbo, I noticed that they mentioned a thing called gen~ quite often, and that it would integrate nicely with it.
After some research I learned, that gen~ is another extension to the max environment that converts what you build visually into efficient compiled code. This code can also be exported to be used outside on max, which is great.
It looks very similar to max, but seems to be a completely different language with its own little behaviour.
Things I find interesting about it:
integrates into rnbo
offers possibility to export to hardware
can be used to write dsp code for example from MusicDsp
seems to be very efficient
Conclusion
Right now I am still exploring this tool and don’t have any direct outcome from it. But it seem to me that it is very powerful and opens a new view on what’s possible with digital sound processing.
But there is also a learning curve involved and I am not sure how to tackle right now. I also wanted to learn Max for ages and gave it several tries, but never got enough traction to continue using it. Let’s see if that’s different with gen.
The most valuable part for me is being able to use the code outside in different environments and give it some live in the physical space.
Other things I did this week
Animations
Drawing
That’s it for this week. Hope you liked it.