poly~ can read your mind?

brendan mccloskey's icon

Hi
I am quite familiar with the (target 0), or (target $1) method of accessing specific instances inside a [poly~]; having built a neato l'il (li'l?) granulator I decided to access groups of voices, rather than all voices always (target 0).

I have duplicated a bunch of parameters, but assigned them all to voice groups 1-4, 5-8 and 9-12 as in the patch below; but what fiddles my tiddles is that, even though each unique voice-group is sending it's own (target $1) messages continuously, changing voice1 parms does NOT affect all instances, it only targets the voices 1-4; similarly changing voiceTwo stuff doesn't go to all instances (and neither do I want them to) - just to voices 5-8. Strange

Max Patch
Copy patch and select New From Clipboard in Max.

Brendan

broc's icon

Not strange really. From the reference page:

"Target ... Specifies the poly~ instance that will receive subsequent messages ..."

In your example, when changing voice1 parms, only voices 1-4 actually receive a subsequent message.

brendan mccloskey's icon

Yes, but in my example all voices are still being sent a target message.....just in groups of 4. When changing any "voiceGroup" parameter, the other two are still firing their own respective target messages. THAT'S what's strange, to me anyway

Yes I know; it works so I should just shuttup

Roman Thilenius's icon
Roman Thilenius's icon
broc's icon

Ok.

Christopher Dobrian's icon

Each 'target' message is being immediately followed by the list of parameters you intend for that voice, because the 'target' message and the instructions that follow it are both triggered by the same message, namely the list coming out of the pak object. So even though you're bombarding your poly~ with lots of 'target' messages, the desired list always goes out immediately after the correct 'target' message, so it gets to the correct voice of the poly~. Is that what you're wondering?

brendan mccloskey's icon

Thanks for revealing the mystery Christopher; had I been joining the relevant parameter-voicenumber as a list, this would have been obvious, but it just appeared that [poly~] was 'assuming' which parameters were going to which group, especially as the pitch parameter sources are a signal - ie continuously firing all voice numbers. Still, the way poly is doing this is pretty damn tight timing:

"Any sufficiently advanced technology is indistinguishable from magic [particularly to n00bs]"

Brendan

Peter McCulloch's icon

Not sure if this is the case, but if you're doing pitch with a multiplicative scale (1 = original, 0.5 = -1 octave, etc.), you can also use the transratio object so you can specify pitch in halfsteps.

brendan mccloskey's icon

Cheers Peter; I actually have quite a cool user-defined glissando parameter, from half-step leaps to full sinusoid gliss....i will get this online, PhD IP notwithstanding, but i don't think there's anything ground-breakingly innovative in it, just some unique combinations of existing approaches.

Thanks again
Brendan