Poly channel selection

For discussion of the Voltage Modular synthesis ecosystem.
Post Reply
jgillmanjr
Posts: 14
Joined: Wed Mar 31, 2021 12:14 am

Poly channel selection

Post by jgillmanjr » Sat Apr 10, 2021 7:07 pm

Hello!

I dropped this question on the Facebook group a week or two ago, but I wasn't able to get an answer, so I figure I'd ask it here in the off chance one of the devs might see this.

How are the poly channels (for lack of a better term) selected? Based on testing (see: https://www.youtube.com/watch?v=-LI3AxVmGak), it seems like certain channels are tied to certain notes, as compared to using the lowest indexed one that isn't currently being used.

In the example above, I would have expected every note to play the saw wave, since I was only playing one at a time.

Thanks for any insights!

- Jason
A data engineer and pilot that occasionally makes sounds suitable for public consumption.

I've started making modules too!

User avatar
honki-bobo
Posts: 121
Joined: Sat Nov 09, 2019 1:18 pm

Re: Poly channel selection

Post by honki-bobo » Sat Apr 10, 2021 10:58 pm

Hi Jason,

you can think of poly voices as an array of slots, e.g. if polyphony is set to 8, your array has 8 slots. A pointer initially points to the first slot.
If you press a key, this key will be put into the slot the pointer points to and the pointer will move on to the next slot. If you release a key it will remain in its slot and change its state to "not playing". When you press the same key again, it will still remain in that slot and change its state back to "playing". So if you play 9 keys in a row the 9th key will be put into the same slot as the first key.
When the pointer points to a slot where the key is still playing, a "secondary" pointer will move on and search for the first "free"/"not playing" slot and put the new key there. If all slots are taken, the most recently pressed key will be released and replaced by the new key.
I had to dig deep into poly voice management when I was developing my Polyphonic Unison module, where I needed to build new poly voice arrays from scratch and it took me some time to figure out how polyphony is handled in VM.
I hope this answers your question. If not, let me know.

Best regards,
Martin
Image
Monkey Business Audio
Modules - Forum

jgillmanjr
Posts: 14
Joined: Wed Mar 31, 2021 12:14 am

Re: Poly channel selection

Post by jgillmanjr » Sun Apr 11, 2021 1:04 am

Martin,

I think I understand! To me (as a python goon), it sounds like a size limited ordered dictionary hybrid that's keyed by note.

* Time Elapses *

So I ended up testing this and found it interesting that the index pointer gets maintained through patch changes.

See this quick video: https://www.youtube.com/watch?v=ruqFDUnNIpE

Of course, now that I've also just glanced at the Programmers Guide and the SDK documentation, presumably the "default behavior" can be overridden by the module developer given the signature I'm seeing for the SetPolyValue method.

Sounds like I need to get a better understanding of Java and start poking at module development more (only thing I've done to this point is the simple little volume control example module).

Thanks again!
A data engineer and pilot that occasionally makes sounds suitable for public consumption.

I've started making modules too!

Post Reply