How to patch switchable Unison mode?


#1

On the microKorg for example you can change the voicing to be mono (only one voice plays), poly (normal polyphonic voice allocation), or unison (all voices play at once). I see the Deepmind has modes like unison 2 (2 voices play) etc. Can this be patched into a poly subpatch on the Axoloti? I keep thinking the polyindex object has to be involved in this but can't figure out how to do it :frowning:

edit:

I thought about it a little more. Sadly I am away from home for a few days without my Axo but I wanted to ponder on this to make good use of my time.. I came up with an idea but am not sure if it is completely the wrong way to go.

So here's the super simple "voice". It has 4 inlets for both pitch and gate and the polyindex object determines which of these the voice will listen to.

The MIDI in object is in the parent. There is a counter that advances on each trig and controls the demuxers for pitch and gate that determine to which voice on the subpatch these are sent. Then there is a toggle that when on should make the pitch and gate go to every voice.

Would this work or am I on the wrong track?


Editing each voice individually
#2

yeah, unfortunately I think there only a couple of alternatives, to basically 'skip' the internal voice allocation of the subpatch poly mode.

your approach is cool, and will work fine - but can be a lot of cables quite quickly, once the voice count increases, or you want more midi (e.g. velocity, poly pressure)

off-hand, I can think of two alternatives...
- use 'expressive poly' mode with a subpatch filter on internal midi bus, then in main patch send midi via the internal midi bus to multiple channels. will add (a max) of 1 cycle latency
- store data in a table in the main patch, then get the voices to read the table, using polyindex as a index - Ive used this approach for sequencing multiple voices, you can store lots of data per voice.

with these approaches, you can minimise the changes required to the voice patch, which is something I like to do....
but your approach is probably easier to see whats going on .


#3

edit: actually your patch will need some additional logic, as the counter is too simplistic, a voice starts and stops based on gate, e.g. if you keep holding note 1 down, and play others notes, it will have to cycle 2,3,4,2,3,4... It cannot use 1 again, since its still in use... so you need to track note status... and this can be tricky at times.

also its probably worth noting, things like legato are I think also partially coded in the voice allocation logic, so if you need that, then you'll need more tweaks


#4

True about the counter, I did not think of that. I also didn't know that you can send internal MIDI between "levels" ie. from parent to subpatch. That sounds like the way to go. Say I have 4 voices available and want to be able to switch between momo/poly/uni modes... I have to think a bit more about this :slight_smile:


#5

On the other hand, building a voice allocation system using the logic objects sounds like a fun challenge :smiley:


#6

yeah, its a fun challenge... its not 'hard' but its got a few edge cases to entertain you.

if your familiar with C and creating objects, its a bit easier to do with a custom object... just because you can do it all in one object with the logic in one place , rather than having it split over several logic objects... but definitely do-able via patching only.


#7

I studied some C++ and Python on my own about a year ago while I was unemployed for a few months but I have forgotten pretty much all of it. This would be a good reason to pick C up but right now I don't have the spare time.

It's definitely on my "list" to learn it though :slight_smile:


#8

I took another approach in my junoesque patch (library/community/cpwitz/synths/webmidi/junebug).

The poly-voice subpatch has a unisono toggle switch and two inlets uni-pitch/uni-gate. These inlets are connected to a midi/in/keyb object in the main patch, which is acting monophonically. The unisono-toggle switch triggers two multiplexers (mux) in the poly-subpatch which decide, if the pitch/gate-inlets are used for pitch and gate or the subpatch's internal polyphonic midi/in/keyb. And to provide some unisono detuning per voice, the subpatches polyindex is used for detuning if the toggle is set to unisono. Hard to explain with words. Simply take a look at the patch in the community library.