Force poly to one voice

For general discussion related FlowStone
Perfect Human Interface
Posts: 643
Joined: Sun Mar 10, 2013 7:32 pm

Force poly to one voice

Post by Perfect Human Interface »

I'd like to take a multi-voice poly stream and force it to a single voice (monophonic, not "poly to mono") only at a certain part of my schematic. In other words, no just setting max voices to 1 in the poly component; it has to be later on down the line.

I think this could be done with the latest version of FS that has access to poly stream ID's. I could just check for the first ID and only output that in DSP code. I'm on 3.0.4 though and don't have that function yet. It may not be possible otherwise... but I figured I'd ask and see if anyone had any ideas. :)

Thanks
adamszabo
Posts: 667
Joined: Sun Jul 11, 2010 7:21 am

Re: Force poly to one voice

Post by adamszabo »

I need something similar and its very hard to achieve. With the id, every key you press gets a unique id, so you press a key, thats 0, you hold another thats 1 and so on. You can use a code something like "out = in&(id==zero)" and it works, it only gets the data from the first voice, and if you hold down a second key its still only outputting the data from the first key you held, and its great BUT when you let go of the first key you pressed only voice id1 is active now, and the output will be 0 (since voice id 0 is stopped now) and you wont get anymore data out.
Perfect Human Interface
Posts: 643
Joined: Sun Mar 10, 2013 7:32 pm

Re: Force poly to one voice

Post by Perfect Human Interface »

adamszabo wrote:when you let go of the first key you pressed only voice id1 is active now, and the output will be 0 (since voice id 0 is stopped now) and you wont get anymore data out.


I'm guessing if you take one of the other values (such as freq), that will stay static and then go to zero as well after the voice cuts off. So maybe you could add a second check for that value being not 0, and if it is, output a 1 value as a counter, convert that output to mono (to sum the values and overcome the parallel processing), then wire that back into the input. So rather than checking for "ID 0" you'd be checking for "ID <= input," and as long as voices never re-activate on the same ID until all-off I think you could continuously switch to the earliest active voice ID.

Or if you wanted the latest note, you could maybe just check the highest voice ID by summing to mono and checking if it's 0,1,3,6,10 ... I guess that would be Sigma math; not sure how that's done or how fast that is in stream!

I'm just thinking aloud so to speak; can't say anything for sure, or if there's maybe much better ways to do this. :)
Perfect Human Interface
Posts: 643
Joined: Sun Mar 10, 2013 7:32 pm

Re: Force poly to one voice

Post by Perfect Human Interface »

Just want to point out that a (rudimentary) solution I came up with was to just use a second MIDI to Poly module limited to one voice and feed it the same MIDI. ;)
djbrynte
Posts: 613
Joined: Mon Jun 22, 2009 10:51 am
Contact:

Re: Force poly to one voice

Post by djbrynte »

very intresting. it must be possible some way. i will try to figure out something.
Perfect Human Interface
Posts: 643
Joined: Sun Mar 10, 2013 7:32 pm

Re: Force poly to one voice

Post by Perfect Human Interface »

My solution above is causing an issue once I've combined the streams (via multiplication); now the voices will persist indefinitely once opened. :?
djbrynte
Posts: 613
Joined: Mon Jun 22, 2009 10:51 am
Contact:

Re: Force poly to one voice

Post by djbrynte »

Why not just make when setting to 1 voice make the envelope to force it to 0 on the envelope or something? so the signal will restart?
primate
Posts: 22
Joined: Thu Dec 19, 2013 10:42 pm

Re: Force poly to one voice

Post by primate »

I'm not sure if this is helpful or not, but some of the ruby midi experiments that i just posted here: viewtopic.php?f=2&t=3375
may help.
If i understand right then you have an issue with the midi splitter and poly primitives not giving the behaviour you'd like.
One of my ruby midi splitters outputs the name of the last note played while it is held, reverts to other held notes when released.
check out the ruby splitter, the chord identifier and the last/current note readout. I'm not sure, but they could be handy.
Perfect Human Interface
Posts: 643
Joined: Sun Mar 10, 2013 7:32 pm

Re: Force poly to one voice

Post by Perfect Human Interface »

Thanks Primate, I will have a look at that. I don't think managing MIDI will solve any problems for me though.

My issue right now is that I have a multi-voice section that I'm trying to modulate by the single-voice section. But when I connect the single-voice section to the multi-voice section via a multiplier, it goes bonkers. I guess you're not meant to connect different poly streams together. But I can't multiply a poly stream by a mono stream either so I don't know how I'm supposed to do this. I can multiply a poly by a green value; why can't I multiply by a single stream?
primate
Posts: 22
Joined: Thu Dec 19, 2013 10:42 pm

Re: Force poly to one voice

Post by primate »

yeah, seems i had completely the wrong end of the stick there.
despite using flowstone for six months i've never really used it to generate any sound, just midi shenanigans. I tend to think that midi is the answer to everything.

thanks for the synced lfo example btw, have been reverse engineering it in an attempt to make my midi clock more solid, but it seems that integrating ppq is still beyond me.
Post Reply