Discrete voice allocation for multichannel output


    Dec 02 2017 | 3:28 pm
    I'm working on a patch that uses vst~ to host instances of Absynth and Massive.
    I want to make the vst~ output work in such a way that I can route channel 1 to any of 16 dac~ output channels. My first attempt was matrix~ which works, except for the fact that ALL audio is moved to a new output channel. This sounds OK, but not quite as intended.
    For this patch to sound the way I want, it must work in such a way that *each new note* is sent to a different output than the last. In the scenario, I expect that a note in channel 1 will still be decaying while a new note is played in channel 2. As a new note then plays in channel 3, channels 1-2 are still playing their original sounds at various stages of respective decay envelopes.
    I imagine I could load multiple instances of vst~ but with 16 voices, that seems really inefficient and a potential invitation for lots of crashing (this is a museum installation and has to run reliably w/ no intervention).
    poly~ is (I think) my best option. What features of that object do I need to investigate to see if it could work? I don't see anything in the documentation/tutorial 1, but I'm not very familiar with the object and may be missing it due to ignorance.
    If not poly~, is there another means?

    • Dec 14 2017 | 4:40 pm
      Interesting, I can imagine the result and I'd like to stand in the middle of it and get the full experience! There is no way to split a single channel of audio from a software synth into separate notes, if they're overlapping. In order to split each note into different channels you would need 16 vst~ instances and round-robin the midi notes to each device. Poly~ with a vst~ inside would work, and 16 shouldn't be too many (try it and find out!) Are the parameters of the vst~ changing over time? Would it be possible to record the output for each note into sample files, load them all into a polybuffer, and then just trigger playback of files? That would be very CPU efficient and 16 play~ or groove~ objects (or inside poly~ again) would be easy to manage. Simple sampling synth tricks, such as changing the playback speed to shift the pitch, would be easy and probably sound good too. If you need the parameters of the synths to change over time then poly~ is your best bet, with 16 outs and a gate~ to route each voice to the correct outlet.