Controlling VST/AU in a polyphonic, continuously-pitched manner

I’ve got a lot of experience with the Native Instruments MASSIVE synth, which I love for its sound and modularity and flexibility, but now that I’d been doing SC for a few months, there’s all these ideas I want to try for controlling the parameters of preexisting synths that I already know and love, rather than having to recreate/approximate them from scratch in SC.

My current experiment challenge is described here: How to read a note/frequency from an array while a Ugen is playing?

I’ve figured out how to do this in SC, but now I would like to use this to control the MASSIVE synth. Originally I tried doing this with the MASSIVE standalone app, but I quickly missed Ableton Live’s midi keyboard functionality which allows me to test out sounds with the middle row asdfghjkl before I try out code-based playing, so now I’m sending MIDI from SC->Ableton->MASSIVE.

I’ve got the easy stuff working, i.e. playing midi via patterns, but now I want to try my linked idea above where I play and hold notes, and bend their pitches to form different coords depending on where MouseX is on the screen. This is tricky for a few reasons:

  1. I have to figure out a scheme whereby the synth itself lets me play a midi note and bend it to where I need it to go
  2. Ideally each note should have its own capability to bend to a different pitch independent of the other notes that are playing (which disqualifies bend range)

So, with this in mind, I believe I actually have something pretty decent working, but it works specific to the MASSIVE synth (and probably a few others, assuming they’re extremely configurable).

Here’s what I have:

  1. For each individual note in the chord (which bends to different notes in other chords over time), I play a noteOn with a different note value, e.g. 60, 61, 62
  2. In Massive, I set the KTR OSC keytracking to OFF so that every note played produces the same pitch. Then I set set pitch modulation to have a range of 24, and set its source to AT (aftertouch).
  3. In SC, after the noteOn, I continue send polyTouch messages with values from 0-127 (depending on MouseX).

Effectively this lets me control the pitch in a continuous manner.

Caveat: in truth I haven’t actually figured out how to get polyTouch messages working with multiple notes (seems like it’s a limitation in Massive), but I go it working with channel-wide afterTouch messages; this will allow me to just create more midi tracks with Massive, but I still want to figure out how to get it working with a single instance of the Massive synth.

So far this whole post has been kind of a humble brag, but here are my questions:

  1. Am I going about this in a really silly/overcomplicated way?
  2. Is there another clever way I can try to get note-independent polyphonic bend-range to work on a single synth?
  3. Am I barking up the wrong tree trying to use my favorite VST synths as if they were voltage-controlled synths? Is there some other technology/software I should be using if I want a library of tasty synth tones that I want to control with my SC/programming chops? I’m definitely always interesting in learning / trying out new tech :slight_smile:

Did you have a look at Christof Ressi’s VSTPlugin ? IMO the most powerful tool to link SC gear with the “classical” synth world.

I’ll give that a try; but in general I feel like if you’re doing lots of stuff for continuously varying freq values, you’re gonna run into the impedance mismatch of VSTs being written in a way that expects MIDI keyboard input, so I’m wondering if there are some other common techniques for bridging that gap.

I’d second @dkmayer’s suggestion :wink:

so now I’m sending MIDI from SC->Ableton->MASSIVE.

With VSTPlugin you’re much more flexible, because you can also directly control all VST parameters in the Language and/or Server and do really wild stuff. Give it a try! VSTPlugin v0.3.3 released!

but I go it working with channel-wide afterTouch messages; this will allow me to just create more midi tracks with Massive, but I still want to figure out how to get it working with a single instance of the Massive synth.

If you’re using several MIDI channels, why not use pitch bend in the first place?

Also, with SC + VSTPlugin you can easily spawn as many Massive instances as you need, so you could use a single instance per voice and simply tune the oscillators as fast as you want. You can also easily extend your idea to other parameters, like individual filter curves per note. On the other hand, it’s also very easy to simultaneously set parameters for several instances. SC is much more flexible and powerful than a DAW in this regard.

BTW, if you’re using macOS, make sure you use SC 3.11, otherwise you can’t use the VST GUI editor.

1 Like