Live performance: vst~, Kontakt and snapshots
Hi all,
I have done much searching regarding the following question, and unfortunately have not been able to find the answers that I'm looking for, so I hope that others can help. I'll also preface this by stating that I have not attached a patcher to this question as it relates to only one small part of a larger patcher that I use for live performance, but if it's useful to explain what I'm trying to do then I can create something suitable and add it to the thread.
If you don't want to read all the background on the problem, I have summarized the specific question at the bottom of this post.
Background: I am a keyboard player, and I use Max/MSP running on a Microsoft Surface Pro 3 tablet during live performance to handle all the voice (Yamaha) changes that I need. The original keyboard that I used for live performance was very limited in the number of preset voices that it could store, so to avoid having to literally punch in numbers on the keyboard during performance, I created a patcher that reads a text file listing all of the voices for a particular set and then sends the appropriate MIDI commands to the keyboard every time I hit a "next" or "previous" button on a separate MIDI controller. I also use the patcher to trigger sound effects/samples to augment the performance.
Recently, I have been also wanting to incorporate VSTi voices into the performance - i.e. have some of the performance using sounds generated on the tablet rather than from the keyboard. The VSTi I am particularly interested is Super Audio Cart, which is hosted in Kontakt 5. The current method I have set up for this involves the following steps:
1. Upon hitting the "next" button, the patcher sees that the selected voice is a VST, not one of the internal sounds on the keyboard.
2. The patcher mutes the keyboard sounds and reroutes the MIDI input from the keys to a subpatcher that contains the vst~ object.
3. Audio output from the vst~ object is sent out using whichever output device is specified in Max/MSP (e.g. through the Surface's headphone jack or sometimes through a separate audio interface).
4. When the patcher gets another "next" or "previous" command specifying an internal keyboard voice, the patcher turns keyboard sounds back on, and shuts off the MIDI data flow to the vst~ object.
This works well for me, but has the severe limitation that I can only have the vst~ object set up one specific way, and I have no easy way of changing the VSTi parameters during a performance. I know that I could run multiple instances of the VSTi for each virtual instrument that I want to use, but I am certain that this would get very taxing on the Surface's resources.
I am aware that there are features that could possibly help me: e.g. using Max/MSP to directly change the parameters of the VSTi for any given voice that I want to use, or using vst~ snapshots to store the various states of the VSTi and then recall them based on the inputs from my control flow (e.g. if voice number #783 is selected, load vst~ snapshot #15). However, I can't seem to find any good guides on how to set up either of these processes. The fact that the VSTi I want to use (Super Audio Cart) is also packaged within another wrapper (Kontakt 5) also seems to make it even more complicated as Max/MSP doesn't seem to have any direct access to the parameters of Super Audio Cart. So, I would be very grateful if someone could help me with either of these scenarios, or perhaps suggest an alternative method of achieving the same result.
Summarized Question:
I want to use a VSTi (Super Audio Cart), running within Kontakt 5, hosted in the vst~ object during live performance.
I want to be able to change between different instruments/presets in Super Audio Cart during the live performance, by means of a simple trigger - i.e. pushing a button to set off a chain of commands that changes to the appropriate instrument. Not manually going into Super Audio Cart using the mouse to change parameters, or manually using the mouse to select an appropriate vst~ snapshot.
Can somebody help me to understand either:
Using Max/MSP to directly control the parameters of Super Audio Cart via Kontakt, e.g. determining the appropriate messages to send to the vst~ object to switch between Super Audio Cart presets.
Using Max/MSP snapshots to save various states of Super Audio Cart/Kontakt and then determine the appropriate messages to send to the vst~ object to load particular snapshots.
Thank you so much for reading, and I hope that someone out there is able to help me. As I mentioned above, I can construct a simplified patcher if it will help to explain what I'm trying to do.
You should look into the instrument banks feature in Kontakt, it allows you to change presets using midi program change messages.
To avoid any confusion I should mention that Kontakt is actually the VSTi and Super Audio Cart is a sample set.
Oh, that sounds much simpler than loading snapshots. I’ll look into it and give it a try.
Thanks for the clarification on VSTi vs sample set, I wasn’t sure of the correct terminology to differentiate between the two.