What does the polyindex object actually do?


#1

Hello :slight_smile:

I was wondering if anyone could describe what the polyindex object exactly do? I know it is used for many things, like panning voices of a polyphonic subpatch or offset the pitch on voices in a polyphonic subpatch.

But what I am curious about is how much does the poly index affect the voices? How much are the second, third, forth voice values offset?

For example pitch: is the first voice pitched 0 and the second voice pitched +1 and third voice pitched +2?

Or is first voice 0, second +1, third -2, forth +3? (Unipolar/Bipolar)

@johannes ?

Thanks, Jaffa


Editing each voice individually
#2

It returns the index of the voice
From there you can scale it, and add and offset or do whatever for panning, detuning, so the amount of effect is has is up to your scaling

( also you can do other things like modulo to get odd and even voices to be slightly different)

however, probably my most common use for it, is to index into a table in the parent patch.

one thing missing that would be useful is an object which return max voices.


#3

Thanks @thetechnobear

But I am really curious about how much it offsets for example the pitch of an oscillator pr voice. If i just connect the polyindex directly to the pitch inlet of an oscillator in a polyphonic subpatch. Like this:

Each voice is probably offset by something by default. And I was wondering if it was:
Voice 0 = offset 0 pitch
Voice 1 = offset +1 pitch
Voice 2 = offset +2 pitch
etc...

Hmm modulo? what is that?

Maybe I need to give an example:

I have a patch with a sampler in a subpatch, which is polyphonic. It has 3 voices, which mean it plays back the sample 3 times on top of each other. They sound totally identical. Everything inside the subpatch is basically played back 3 times, which just makes the sound a lot louder and nothing more. But when you connect the polyindex to for example the pitch, the lfo speed inside the subpatch(the voice), then those parameters will be offset a little bit for each voice. (as on the picture)....

@thetechnobear If you have got a VIrus synth, then in the edit menu you have also got some parameters for voice feature. Like pitch of oscillator offset pr. voice., lfo speed offset pr voice. Check it out if you got one. You can also use it in context with unisono if I remember correct, where it also just plays the same sound 3 times. Each layer of the unison mode is offset and it is adjustable how much it is offset.


#4

yes, it will offset by 1 semi...
because, integers are automatically converted to floats... (as you can see if you connect ctrl/i to a disp/b)
but my point is, there is nothing stopping you then multiplying this by 0.5, to get half semitone, for shift it to get 2 semitones.

modulo - remainder e.g. 7 % 2 = 1 , 6 % 2 = 0,
so nice for detuning , e.g. odd voices -5 cents, even +5 cents , then perhaps multiply by division so you get something like +5, -5, +10, -10, +15, -15 etc ...


#5

yes, like the virus, if your doing unison, you can use it to change lfo rates, detune, pitch whatever you want.
(its easier to use with unisons, since you know all voices are active, so you know the total impact)


#6

Ah cool, that was what I was trying to figure out.

Yeah, I guess I am actually using the sampler in unisono mode and then each of the voice copies are offset a little bit.


#7

@thetechnobear

After reading it a few times, I got curious about this:

Could you explain this a bit further? Sounds very interesting :slight_smile:

EDIT: Ahh I see you all ready did.... I guess I need to read it a few times to start with. FOund wiki page of modulo with some more examples.

Jaffa


Get total number of voices in subpatch
#8

I think the polyindex object is nice for many things. But one thing I am having a little bit og problems with is using it with panning. When connected to a pan object, it will start with voice zero in center and them move each voice +1 to the right. With pan it would be super nice that it moved every second voice to minus instead of plus... So it would be panned:
Voice1 +1
Voice2 -2
Voice3 +3
Voice4 -4

How would I go about doing that?