Does anybody know a reliable way to control a VST synth with SuperDirt via Tidalcycles?
I've tried out most of the ways mentioned here but it's not been mentioned for a while so it's hard to know what may or may not be expected errors.
Does anybody know a reliable way to control a VST synth with SuperDirt via Tidalcycles?
I've tried out most of the ways mentioned here but it's not been mentioned for a while so it's hard to know what may or may not be expected errors.
I just use superdirt-midi as per this docs section:
For a little more detail:
On linux it's possible to create virtual midi interfaces for routing, I set up 4 and connect supercollider to each one referenced as midi1
, midi2
, etc in tidal. So the midi signal is sent to the virtual midi-through port, then I choose to route the virtual ports to any synth destination I want (which can change mid-set)
This setup gives the benefit of flexibility (I can change synth anytime by routing the virtual port wherever I want), and stability (I don't need to create new midi-port connections in supercollider every time I want to change to a different one)
Hey @demu? What did you tried concretely?
I will start with a short answer and then I can share the current insights that I have nowadays with you and the community. Because (disclaimer) it's not easy and I can not ensure, that you can use everything that SuperDirt is offering.
In my answer I assume that you want to have the VST plugins available within SuperCollider as well. I.e. that you can control and manage them directly in the TidalCycles ecosystem. And I am focussing on VST instruments, because VST FXs are a complete separate topic. (I use VST FXs but currently I didn't worked on a system, that can be used easily).
SuperCollider is not supporting VST plugins out of the box, so you need to install this vstplugin Quark first. And then in (in general) you need i.e. TidalVST to map TidalCycles events to midi notes that can be used to control the plugin.
I work with VST plugins since quite a while with SuperDirt. And I created some functionalities to help with a better scaling. But these are not published yet. Some of the pitfalls are:
I will share the plans I have for TidalVST here, but they are not fully resolved and released yet. I worked since quite a while on different topics (like SuperDirtMixer and TidalMIDI), and this will be the next topic I will tackle. But even here I will mainly focus on VST instruments.
For me it's hard to tell, but it looks like, that for resource intensive VST plugins I want to use multi threading but it's not workin'. The vstplugin Quark offers multi threading, but for me this has no effect.
And SuperDirt itself is not using SuperNova and everything runs on a single server.
So what I did (and works pretty well for VST instruments) is to bypass the plugins automatically, when there is no incoming Tidal event. This will help, but not completely resolve the resource management topic.
In SuperDirt we have the synthBus, the dryBus and the globalEffectBus. The globalEffectBus can be ignored
The synthBus is used for single events and every (non global) effect will be applied on single events. This means that with every event, the synth node will be attached and detached from the node tree.
But the VST instruments are usually coming with there own FXs inside. So to put the audio signals will change the sound of the VST instrument. And the worst part is, that you need to apply an envelope on every single note to avoid crackling noises. Global effects can be applied as well.
The dryBus is used as a base signal for the globalEffectBus. This bus is always on and can be used to avoid crackling noises. The downside is, that the tidal effects are not usable. For me this is not a problem, because I do not need them. I fix this with using global effects and the SuperDirtMixer.
This is what I use since quite a while locally. When you want to reuse the same instrument with different presets, then it's better to use vst presets instead of adding new instruments. And for me this is really handy, to control these presets with OSC messages.
When you start to load more and more plugins and you want to trace the status of the plugins and the synths, then it's import to receive a good overview of the plugins. I.e. what are the names in TidalCycles, is the plugin bypassed, is the synth free, preset management (load and save new presets), etc. In a next version I will add a small ui for these purposes.
I just realized, that the last releases version of TidalVST is not a Quark. So to sum it up, the latest version is not very user friendly. But you can still execute the code under TidalVST.sc
.
This is so exciting! I usually get sound out of my VST's so I'm very interested in this. If there's any way in which I can help with the codebase let me know!