Problems muting with mute~ begin~ poly~ etc.

Dec 6, 2006 at 12:43am

Problems muting with mute~ begin~ poly~ etc.

Hi. I’m working on a patch that needs to rewire the MSP network fairly often. (kind of a dna/analog synth evolutionary thing) I used scripting at first, but of course that won’t work because of the MSP hiccups during object creation/destruction. So, based on the reference and previous forum talk, I’ve been telling a poly~ to select one of several possible objects and mute the rest.

Here’s the problem: I can’t completely remove the unused objects from the DSP chain like scripting does, so my CPU usage is off the charts! I have tried these methods:

1) Use begin~ and selector~
–seems to work except for certain key objects

2) make a subpatcher and use mute~
–outputs zeroes but still uses DSP

3) make a subpatcher and use pcontrol (enable 0)
–same as #2

4) encapsulate it in a poly~ and mute that
–same as #2

5) send “enable 0″ directly to the objects in question
–same as #2

I attached a quick demonstration of methods 1 and 2. I know there is debate over the efficacy of using number~ to report if a network is flowing (internal “change” algorithm”?) but when put inside my larger patch (poly~ with many instances), my old scripted version costs maybe 20% and these versions cost 100%+ (kills msp) so I suspect that nothing is really being removed from the DSP chain.

Thanks for any help or insight.

max v2;
#N vpatcher 80 53 923 851;
#P window setfont “Sans Serif” 14.;
#P comment 89 732 401 196622 (Note that EVERYTHING keeps outputting when muted);
#P window setfont “Sans Serif” 9.;
#P newex 627 217 49 196617 *~ 0.2;
#P button 159 643 15 0;
#P user number~ 130 623 169 638 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 236 644 15 0;
#P user number~ 207 624 246 639 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 317 642 15 0;
#P user number~ 288 622 327 637 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 398 644 15 0;
#P user number~ 369 624 408 639 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 479 644 15 0;
#P user number~ 450 624 489 639 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 94 271 15 0;
#P message 110 271 14 196617 0;
#P message 94 253 24 196617 OFF;
#B color 14;
#P message 422 518 14 196617 1;
#P message 386 518 14 196617 0;
#P button 422 501 15 0;
#P button 386 501 15 0;
#P newex 386 474 46 196617 select 5;
#P toggle 395 544 15 0;
#P message 340 518 14 196617 1;
#P message 304 518 14 196617 0;
#P button 340 501 15 0;
#P button 304 501 15 0;
#P newex 304 474 46 196617 select 4;
#P toggle 313 544 15 0;
#P message 260 518 14 196617 1;
#P message 224 518 14 196617 0;
#P button 260 501 15 0;
#P button 224 501 15 0;
#P newex 224 474 46 196617 select 3;
#P toggle 233 544 15 0;
#P message 180 518 14 196617 1;
#P message 144 518 14 196617 0;
#P button 180 501 15 0;
#P button 144 501 15 0;
#P newex 144 474 46 196617 select 2;
#P toggle 153 544 15 0;
#P message 104 518 14 196617 1;
#P message 68 518 14 196617 0;
#P button 104 501 15 0;
#P button 68 501 15 0;
#P newex 68 474 46 196617 select 1;
#P newex 395 562 38 196617 mute~;
#N vpatcher 10 59 610 459;
#P window setfont “Sans Serif” 9.;
#P newex 150 78 46 196617 phasor~;
#P outlet 150 119 15 0;
#P inlet 150 41 15 0;
#P connect 0 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 438 590 48 196617 p phasor;
#P newex 313 562 38 196617 mute~;
#N vpatcher 74 389 674 789;
#P window setfont “Sans Serif” 9.;
#P newex 150 78 34 196617 pink~;
#P outlet 150 119 15 0;
#P inlet 150 41 15 0;
#P connect 0 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 356 592 36 196617 p pink;
#P newex 233 563 38 196617 mute~;
#N vpatcher 10 59 610 459;
#P window setfont “Sans Serif” 9.;
#P newex 150 78 40 196617 train~;
#P outlet 150 119 15 0;
#P inlet 150 41 15 0;
#P connect 0 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 276 593 40 196617 p train;
#P newex 153 564 38 196617 mute~;
#N vpatcher 10 59 610 459;
#P window setfont “Sans Serif” 9.;
#P newex 150 78 36 196617 rand~;
#P outlet 150 119 15 0;
#P inlet 150 41 15 0;
#P connect 0 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 196 594 38 196617 p rand;
#P toggle 77 544 15 0;
#P newex 77 564 38 196617 mute~;
#N vpatcher 10 59 610 459;
#P window setfont “Sans Serif” 9.;
#P newex 150 78 40 196617 cycle~;
#P outlet 150 119 15 0;
#P inlet 150 41 15 0;
#P connect 0 0 2 0;
#P connect 2 0 1 0;
#P pop;
#P newobj 119 595 42 196617 p cycle;
#P newex 254 701 79 196617 selector~ 5;
#P number 56 395 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#N vpatcher 10 59 610 459;
#P outlet 158 86 15 0;
#P inlet 157 60 15 0;
#P connect 0 0 1 0;
#P pop;
#P newobj 47 264 37 196617 p thru;
#P message 74 237 46 196617 phasor~;
#B color 6;
#P message 35 237 34 196617 pink~;
#B color 6;
#P message 98 217 38 196617 train~;
#B color 6;
#P message 58 217 36 196617 rand~;
#B color 6;
#P message 13 218 40 196617 cycle~;
#B color 6;
#P button 222 238 15 0;
#P user number~ 193 218 232 233 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 269 238 15 0;
#P user number~ 240 218 279 233 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 317 238 15 0;
#P user number~ 288 218 327 233 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 364 238 15 0;
#P user number~ 335 218 374 233 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 410 238 15 0;
#P user number~ 381 218 420 233 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 584 218 41 196617 *~ 0.2;
#P user ezdac~ 589 289 633 322 0;
#P message 487 237 26 196617 440;
#P newex 487 217 48 196617 loadbang;
#P newex 375 169 29 196617 sig~;
#P newex 327 169 29 196617 sig~;
#P newex 280 169 29 196617 sig~;
#P newex 233 169 29 196617 sig~;
#P flonum 441 78 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 186 127 39 196617 begin~;
#P newex 233 126 39 196617 begin~;
#P newex 280 126 39 196617 begin~;
#P newex 327 125 39 196617 begin~;
#P newex 375 125 39 196617 begin~;
#P newex 186 169 29 196617 sig~;
#P number 139 103 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#N vpatcher 30 89 630 489;
#P button 362 176 15 0;
#P button 292 176 15 0;
#P button 216 176 15 0;
#P button 145 175 15 0;
#P button 70 176 15 0;
#P window setfont “Sans Serif” 9.;
#P number 62 298 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 0;
#P message 362 206 14 196617 5;
#P message 292 204 14 196617 4;
#P message 216 205 14 196617 3;
#P message 145 204 14 196617 2;
#P message 70 204 14 196617 1;
#P window linecount 1;
#P newex 292 151 64 196617 match pink~;
#P newex 216 151 68 196617 match train~;
#P newex 145 151 66 196617 match rand~;
#P newex 70 151 70 196617 match cycle~;
#P outlet 62 329 15 0;
#P inlet 68 42 15 0;
#P newex 362 151 76 196617 match phasor~;
#P fasten 7 0 12 0 75 290 67 290;
#P fasten 8 0 12 0 150 291 67 291;
#P fasten 9 0 12 0 221 291 67 291;
#P fasten 10 0 12 0 297 291 67 291;
#P fasten 11 0 12 0 367 291 67 291;
#P connect 12 0 2 0;
#P fasten 1 0 3 0 73 124 75 124;
#P connect 3 0 13 0;
#P connect 13 0 7 0;
#P fasten 1 0 4 0 73 126 150 126;
#P connect 4 0 14 0;
#P connect 14 0 8 0;
#P fasten 1 0 5 0 73 126 221 126;
#P connect 5 0 15 0;
#P connect 15 0 9 0;
#P fasten 1 0 6 0 73 125 297 125;
#P connect 6 0 16 0;
#P connect 16 0 10 0;
#P fasten 1 0 0 0 73 125 367 125;
#P connect 0 0 17 0;
#P connect 17 0 11 0;
#P pop;
#P newobj 139 75 145 196617 p map words to selector nums;
#P newex 374 193 46 196617 phasor~;
#P newex 327 192 34 196617 pink~;
#P newex 280 193 40 196617 train~;
#P newex 233 193 36 196617 rand~;
#P newex 186 193 40 196617 cycle~;
#P newex 139 297 245 196617 selector~ 5;
#P comment 27 197 100 196617 PRESS ME:;
#P user panel 6 213 134 80;
#X brgb 191 191 191;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window setfont “Sans Serif” 14.;
#P comment 118 334 371 196622 (Note that cycle~ keeps outputting when muted);
#P user panel 185 213 248 48;
#X brgb 191 191 191;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window setfont “Sans Serif” 20.;
#P comment 187 26 244 196628 2 ways to MUTE…;
#P fasten 38 0 43 0 18 262 52 262;
#P fasten 41 0 43 0 40 262 52 262;
#P fasten 42 0 43 0 79 262 52 262;
#P fasten 40 0 43 0 70 232 70 262 52 262;
#P fasten 39 0 43 0 63 235 70 235 70 262 52 262;
#P fasten 12 0 44 0 144 291 122 291 122 302 61 302;
#P fasten 44 0 57 0 61 467 73 467;
#P connect 57 0 58 0;
#P connect 58 0 60 0;
#P fasten 60 0 48 0 73 539 82 539;
#P fasten 61 0 48 0 109 538 82 538;
#P connect 48 0 47 0;
#P connect 86 0 88 0;
#P connect 57 1 59 0;
#P connect 59 0 61 0;
#P fasten 88 0 87 0 99 289 109 289 109 268 115 268;
#P fasten 25 0 46 0 492 586 124 586;
#P fasten 47 0 46 0 82 590 124 590;
#P fasten 46 0 97 0 124 616 135 616;
#P fasten 43 0 11 0 52 285 137 285 137 68 144 68;
#P connect 11 0 12 0;
#P fasten 87 0 5 0 115 294 144 294;
#P connect 12 0 5 0;
#P fasten 44 0 63 0 61 466 149 466;
#P connect 63 0 64 0;
#P connect 64 0 66 0;
#P fasten 67 0 62 0 185 538 158 538;
#P fasten 66 0 62 0 149 539 158 539;
#P connect 62 0 50 0;
#P connect 97 1 98 0;
#P connect 63 1 65 0;
#P connect 65 0 67 0;
#P fasten 19 0 13 0 446 163 191 163;
#P connect 18 0 13 0;
#P connect 13 0 6 0;
#P connect 6 0 5 1;
#P fasten 6 0 36 0 191 213 198 213;
#P fasten 25 0 49 0 492 587 201 587;
#P fasten 50 0 49 0 158 588 201 588;
#P fasten 49 0 95 0 201 616 212 616;
#P connect 36 1 37 0;
#P fasten 44 0 69 0 61 466 229 466;
#P connect 69 0 70 0;
#P connect 70 0 72 0;
#P fasten 19 0 20 0 446 164 238 164;
#P connect 17 0 20 0;
#P connect 20 0 7 0;
#P connect 7 0 5 2;
#P fasten 72 0 68 0 229 539 238 539;
#P fasten 73 0 68 0 265 538 238 538;
#P connect 68 0 52 0;
#P connect 95 1 96 0;
#P fasten 7 0 34 0 238 214 245 214;
#P fasten 87 0 45 0 115 301 46 301 46 695 259 695;
#P fasten 44 0 45 0 61 695 259 695;
#P connect 69 1 71 0;
#P connect 71 0 73 0;
#P fasten 46 0 45 1 124 685 272 685;
#P connect 34 1 35 0;
#P fasten 25 0 51 0 492 586 281 586;
#P fasten 52 0 51 0 238 587 281 587;
#P fasten 19 0 21 0 446 163 285 163;
#P connect 16 0 21 0;
#P connect 21 0 8 0;
#P connect 8 0 5 3;
#P fasten 49 0 45 2 201 681 285 681;
#P fasten 8 0 32 0 285 215 293 215;
#P fasten 51 0 93 0 281 616 293 616;
#P fasten 51 0 45 3 281 676 298 676;
#P fasten 44 0 75 0 61 465 309 465;
#P connect 75 0 76 0;
#P connect 76 0 78 0;
#P fasten 53 0 45 4 361 669 311 669;
#P fasten 79 0 74 0 345 538 318 538;
#P fasten 78 0 74 0 309 539 318 539;
#P connect 74 0 54 0;
#P connect 32 1 33 0;
#P connect 93 1 94 0;
#P fasten 55 0 45 5 443 674 324 674;
#P fasten 19 0 22 0 446 163 332 163;
#P connect 15 0 22 0;
#P connect 22 0 9 0;
#P connect 9 0 5 4;
#P fasten 9 0 30 0 332 214 340 214;
#P connect 75 1 77 0;
#P connect 77 0 79 0;
#P fasten 25 0 53 0 492 586 361 586;
#P fasten 54 0 53 0 318 586 361 586;
#P connect 30 1 31 0;
#P fasten 53 0 91 0 361 614 374 614;
#P connect 23 0 10 0;
#P connect 10 0 5 5;
#P fasten 19 0 23 0 446 163 380 163;
#P connect 14 0 23 0;
#P fasten 10 0 28 0 379 213 386 213;
#P fasten 44 0 81 0 61 466 391 466;
#P connect 81 0 82 0;
#P connect 82 0 84 0;
#P fasten 84 0 80 0 391 539 400 539;
#P fasten 85 0 80 0 427 538 400 538;
#P connect 80 0 56 0;
#P connect 91 1 92 0;
#P connect 28 1 29 0;
#P connect 81 1 83 0;
#P connect 83 0 85 0;
#P fasten 25 0 55 0 492 585 443 585;
#P fasten 56 0 55 0 400 585 443 585;
#P fasten 25 0 19 0 492 267 479 267 479 72 446 72;
#P fasten 55 0 89 0 443 613 455 613;
#P connect 89 1 90 0;
#P connect 24 0 25 0;
#P fasten 5 0 27 0 144 324 552 324 552 209 589 209;
#P connect 27 0 26 0;
#P connect 99 0 26 1;
#P fasten 45 0 99 0 259 726 679 726 679 205 632 205;
#P pop;

#29061
Dec 6, 2006 at 1:03am

> 4) encapsulate it in a poly~ and mute that
> –same as #2

but it should not. (use any CPU)

there must be something you are doing wrong.

a turned off poly patcher should use 0.0 CPU even
if 30 audio cables are going into it and its full
of DSP code.

around here using poly~ is the only known way of
safely turning shit on and off.

-110

#89927
Dec 6, 2006 at 4:02am

Howdy Zach,
if muting all your synths except one as you described still uses too much DSP ,could it might mean that the issue is in the architecture of the non muted synth itself ?
what happens when all synths are muted ? anything else going on ?

ciao camarade,
k

Quote: zlp wrote on Tue, 05 December 2006 16:43
—————————————————-
> Hi. I’m working on a patch that needs to rewire the MSP network fairly often. (kind of a dna/analog synth evolutionary thing) I used scripting at first, but of course that won’t work because of the MSP hiccups during object creation/destruction. So, based on the reference and previous forum talk, I’ve been telling a poly~ to select one of several possible objects and mute the rest.
>
> Here’s the problem: I can’t completely remove the unused objects from the DSP chain like scripting does, so my CPU usage is off the charts! I have tried these methods:
>
> 1) Use begin~ and selector~
> –seems to work except for certain key objects
>
> 2) make a subpatcher and use mute~
> –outputs zeroes but still uses DSP
>
> 3) make a subpatcher and use pcontrol (enable 0)
> –same as #2
>
> 4) encapsulate it in a poly~ and mute that
> –same as #2
>
> 5) send “enable 0″ directly to the objects in question
> –same as #2
>
> I attached a quick demonstration of methods 1 and 2. I know there is debate over the efficacy of using number~ to report if a network is flowing (internal “change” algorithm”?) but when put inside my larger patch (poly~ with many instances), my old scripted version costs maybe 20% and these versions cost 100%+ (kills msp) so I suspect that nothing is really being removed from the DSP chain.
>
> Thanks for any help or insight.
>

#89928
Dec 6, 2006 at 4:14am

Good question karl. Perhaps you can shed a little west-coast light on the problem?

I whipped up a tester to directly compare the two systems. It’s attached as a zip because there are 11 little patches to get loaded by various poly~s.

It takes 23% CPU to run 10 multiply operators inside the magic muted poly~ structure, but 1% to run them as hardwired multiply objects. (More notes in the patch)

Can anybody find what I’m missing? (beyond the basics: sanity, rationality, etc.)
-zlp

PS – Note the weird behavior of the original (text) patch from my first post. Seems related.

#89929
Dec 6, 2006 at 5:09am

hey zach here is the mother patch.
when muting all the instances of your [poly~ operators] except one , dsp takes 3% of cpu so i guess that running ten or more instances quickly goes beyond 20% of cpu.

running a simple *~ between 2 oscillators not included in a poly~ takes 1-2%, 10 copies of this same AM in the same patch takes only 5% . so the issue is somewhere in the poly~.
check each synth individually maybe one of them might be more cpu hungry….
my 1/4 $

#P button 610 79 15 0;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 610 186 131 196617 bangbang 10;
#P flonum 267 417 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 152 346 39 196617 open 1;
#P toggle 469 462 15 0;
#P newex 469 490 58 196617 metro 500;
#P button 469 520 15 0;
#P flonum 469 569 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 469 543 66 196617 adstatus cpu;
#P message 687 224 20 196617 10;
#P message 671 224 14 196617 9;
#P message 656 224 14 196617 8;
#P message 641 224 14 196617 7;
#P message 626 224 14 196617 6;
#P message 611 224 14 196617 5;
#P message 596 224 14 196617 4;
#P message 581 224 14 196617 3;
#P message 566 224 14 196617 2;
#P message 551 224 14 196617 1;
#P toggle 725 225 15 0;
#P newex 593 292 68 196617 pak mute 0 0;
#P toggle 475 121 15 0;
#P message 475 143 56 196617 mute 0 $1;
#P newex 31 193 48 196617 loadbang;
#P window setfont “Sans Serif” 12.;
#P comment 121 470 209 196620 this costs 23% on my 1.2gig mini;
#P window setfont “Sans Serif” 9.;
#P message 216 255 51 196617 triangle~;
#P message 170 255 40 196617 cycle~;
#P message 136 255 31 196617 sah~;
#P message 109 255 19 196617 -~;
#P message 85 255 20 196617 +~;
#P message 58 255 20 196617 /~;
#P message 31 256 21 196617 *~;
#P comment 314 370 396 196617 so it should be computationally similar to a directly-connected operator object.;
#P comment 314 415 396 196617 many single-voice “operators” instead , wired together in a branched network.;
#P comment 314 399 396 196617 We have 10 “voices” here to get the CPU cooking , but in the real patch there will be;
#P comment 314 355 396 196617 It contains a sub-poly~ for each possible operator , muting the unused ones;
#P user ezdac~ 193 430 237 463 0;
#P newex 210 375 49 196617 *~ 0.1;
#P newex 436 256 61 196617 cycle~ 800;
#P newex 357 256 67 196617 phasor~ 440;
#P newex 210 331 97 196617 poly~ operators 10;
#P window setfont “Sans Serif” 12.;
#P comment 313 334 448 196620 “operators” poly is the chameleon that creates the chosen operator:;
#P window setfont “Sans Serif” 9.;
#P comment 98 225 100 196617 CHOOSE YOUR OP:;
#P comment 497 122 100 196617 mute all;
#P comment 752 228 100 196617 un/mute;
#P window linecount 2;
#P comment 630 70 100 196617 mute/unmute 9 of the instances;
#P window linecount 6;
#P comment 749 86 100 196617 running one single instance costs around 3-4% so you quickly reach >20% when running 10 instances;
#P connect 45 9 27 0;
#P connect 45 8 37 0;
#P connect 45 7 36 0;
#P connect 45 6 35 0;
#P connect 27 0 26 2;
#P connect 45 5 34 0;
#P connect 45 4 33 0;
#P connect 28 0 26 1;
#P connect 29 0 26 1;
#P connect 30 0 26 1;
#P fasten 31 0 26 1 603 239;
#P connect 32 0 26 1;
#P connect 33 0 26 1;
#P connect 34 0 26 1;
#P connect 35 0 26 1;
#P connect 36 0 26 1;
#P connect 37 0 26 1;
#P connect 45 3 32 0;
#P connect 46 0 45 0;
#P connect 45 2 31 0;
#P connect 45 1 30 0;
#P connect 45 0 29 0;
#P connect 25 0 24 0;
#P connect 38 0 39 0;
#P connect 40 0 38 0;
#P connect 41 0 40 0;
#P connect 42 0 41 0;
#P fasten 8 0 6 2 441 320 301 320;
#P fasten 7 0 6 1 362 310 258 310;
#P connect 44 0 9 1;
#P fasten 9 0 10 0 215 407 198 407;
#P fasten 9 0 10 1 215 408 232 408;
#P connect 6 0 9 0;
#P fasten 15 0 6 0 36 319 215 319;
#P fasten 16 0 6 0 63 318 215 318;
#P fasten 17 0 6 0 90 318 215 318;
#P fasten 18 0 6 0 114 317 215 317;
#P fasten 19 0 6 0 141 318 215 318;
#P fasten 20 0 6 0 175 317 215 317;
#P fasten 21 0 6 0 221 317 215 317;
#P fasten 24 0 6 0 480 320 215 320;
#P fasten 26 0 6 0 598 320 215 320;
#P fasten 43 0 6 0 157 372 200 372 200 334;
#P connect 23 0 15 0;
#P window clipboard copycount 47;

Quote: zlp wrote on Tue, 05 December 2006 20:14
—————————————————-
> Good question karl. Perhaps you can shed a little west-coast light on the problem?
>
> I whipped up a tester to directly compare the two systems. It’s attached as a zip because there are 11 little patches to get loaded by various poly~s.
>
> It takes 23% CPU to run 10 multiply operators inside the magic muted poly~ structure, but 1% to run them as hardwired multiply objects. (More notes in the patch)
>
> Can anybody find what I’m missing? (beyond the basics: sanity, rationality, etc.)
> -zlp
>
> PS – Note the weird behavior of the original (text) patch from my first post. Seems related.
—————————————————-

#89930
Dec 6, 2006 at 5:12am

….maybe [/~]……

#89931
Dec 6, 2006 at 6:08am

Uh, that’s exactly what I’m saying. Something in the poly~ is using DSP when it’s not supposed to. There’s no real “synth” in there at all. It’s a nested poly~ that looks like this:

The outer poly~ emulates a single operator (like *~). The inner poly~s are simply operator objects with ins and outs, so they can be muted and unmuted depending on whether each one is the “chosen” operator for the outer poly~. That’s all there is.

In the zip attached to the last post there should be 2 example patches so you can compare the muted poly~ technique against the hardwired technique. Any thoughts?
-zlp

#89932
Dec 6, 2006 at 7:36am

>Something in the poly~ is using DSP when it’s not supposed to.

maybe having another poly~ ?
try with your second example patch ( 2 – non-poly test patch.mxb) to insert another poly~ in it ( another operator with ten instances i.e. ). see the difference with a [*~] and then a [/~].
in both cases having a poly~ inside the main poly~ sucks cpu, but the one with the [/~] sucks 10% more on my machine …
its in the doc somewhere , max/msp does not like divisions and we are advised to use multiplications instead…

Quote: zlp wrote on Tue, 05 December 2006 22:08
—————————————————-
> Uh, that’s exactly what I’m saying. Something in the poly~ is using DSP when it’s not supposed to. There’s no real “synth” in there at all. It’s a nested poly~ that looks like this:
>
> The outer poly~ emulates a single operator (like *~). The inner poly~s are simply operator objects with ins and outs, so they can be muted and unmuted depending on whether each one is the “chosen” operator for the outer poly~. That’s all there is.
>
> In the zip attached to the last post there should be 2 example patches so you can compare the muted poly~ technique against the hardwired technique. Any thoughts?
> -zlp
—————————————————-

#89933
Dec 6, 2006 at 9:49am

On 6-Dec-2006, at 1:43, zpoff wrote:

> 1) Use begin~ and selector~
> –seems to work except for certain key objects
>
> 2) make a subpatcher and use mute~
> –outputs zeroes but still uses DSP
>
> 3) make a subpatcher and use pcontrol (enable 0)
> –same as #2
>
> 4) encapsulate it in a poly~ and mute that
> –same as #2
>
> 5) send “enable 0″ directly to the objects in question
> –same as #2

Encapsulate in poly~ and send ‘mute 0 $1′ messages to the poly~
object to turn on and off as needed.

Works here.

And it’s documented in poly~.help (bottom left).

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de

#89934
Dec 6, 2006 at 10:16am

Quote: zlp wrote on Wed, 06 December 2006 01:43
—————————————————-
> 1) Use begin~ and selector~
> –seems to work except for certain key objects
>
> 2) make a subpatcher and use mute~
> –outputs zeroes but still uses DSP
>
> 3) make a subpatcher and use pcontrol (enable 0)
> –same as #2
>
> 4) encapsulate it in a poly~ and mute that
> –same as #2
>
> 5) send “enable 0″ directly to the objects in question
> –same as #2

There is one option you didn’t mention (the only one I found reliable so far): build the muteable parts to vst plugins, load them in the vst~ object and mute them with the bypass message.

Mattijs

#89935
Dec 6, 2006 at 5:08pm

>
> Encapsulate in poly~ and send ‘mute 0 $1′ messages to the poly~
> object to turn on and off as needed.
>
> Works here.
>
> And it’s documented in poly~.help (bottom left).
>
he tried that in his example patches ( see the second set of patches he sent ) + muting all his instances of in his poly~ works as expected. the issue is that even with only one instance of the poly~ running the CPU is above 20% where the content of the poly~s are just basic single signal operations …….

#89936
Dec 6, 2006 at 6:48pm

On 6-Dec-2006, at 18:08, karl-otto von oertzen wrote:

> he tried that in his example patches ( see the second set of
> patches he sent

Actually, what he did was a little different. What I was after is
attached below. However, both Zachary’s and my versions should be, in
essence, equally effective.

> the issue is that even with only one instance of the poly~ running
> the CPU is above 20% where the content of the poly~s are just basic
> single signal operations …….

One thing you can do is kill the gate~ objects, which are superfluous
and cost some CPU. That reduced CPU by around 4% on my Intel, should
buy maybe 8% on a G4.

There is still significant overhead in my version. I’m not sure why.
I’ve used this technique in other, very complex, projects to
successfully reduce CPU demands. It is worth noting the the wrapper
poly~ ‘operators’ (plural) is more complex than the poly~
‘operator’ (singular), so in a sense Z’s patches 1 and 2 are not an A/
B comparison.

Finally, muting a poly~ will never reduce its CPU demands to absolute
zero. The best you can be done is to reduce to some small fraction of
a percent. But you put 70 of ‘em together (as in the example) and it
adds up. Who was it who said “A few billion cycles here, a few
billion cycles there, sooner or later it we’re talkin’ about real CPU”?

– P.

(The following is a replacement for the operators file from Zachary’s
previous .zip)

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P message 101 316 56 196617 mute 0 $1;
#P message 297 288 14 196617 1;
#P button 297 271 15 0;
#P message 137 288 14 196617 1;
#P message 101 288 14 196617 0;
#P button 137 271 15 0;
#P button 101 271 15 0;
#P newex 101 244 46 196617 select 1;
#P message 221 288 14 196617 1;
#P message 185 288 14 196617 0;
#P button 221 271 15 0;
#P button 185 271 15 0;
#P newex 185 244 46 196617 select 2;
#P message 194 314 56 196617 mute 0 $1;
#P message 263 287 14 196617 0;
#P button 263 270 15 0;
#P newex 263 243 46 196617 select 3;
#P message 272 313 56 196617 mute 0 $1;
#P message 381 286 14 196617 1;
#P message 345 286 14 196617 0;
#P button 381 269 15 0;
#P button 345 269 15 0;
#P newex 345 242 46 196617 select 4;
#P message 354 312 56 196617 mute 0 $1;
#P message 462 286 14 196617 1;
#P message 426 286 14 196617 0;
#P button 462 269 15 0;
#P button 426 269 15 0;
#P newex 426 242 46 196617 select 5;
#P message 435 312 56 196617 mute 0 $1;
#P message 540 285 14 196617 1;
#P message 504 285 14 196617 0;
#P button 540 268 15 0;
#P button 504 268 15 0;
#P newex 504 241 46 196617 select 6;
#P message 513 311 56 196617 mute 0 $1;
#P message 621 285 14 196617 1;
#P message 585 285 14 196617 0;
#P button 621 268 15 0;
#P button 585 268 15 0;
#P newex 585 241 46 196617 select 7;
#P message 594 311 56 196617 mute 0 $1;
#P newex 569 335 88 196617 poly~ op-triangle;
#P newex 487 335 77 196617 poly~ op-cycle;
#P newex 417 335 68 196617 poly~ op-sah;
#P newex 322 335 91 196617 poly~ op-subtract;
#P newex 250 336 68 196617 poly~ op-add;
#P newex 168 337 80 196617 poly~ op-divide;
#P newex 74 338 90 196617 poly~ op-multiply;
#N in~ 3;
#X comment SIGNAL in to left operator inlet;
#P newobj 402 80 33 196617 in~ 3;
#P comment 440 82 100 196617 in right;
#N in~ 2;
#X comment SIGNAL in to left operator inlet;
#P newobj 236 79 33 196617 in~ 2;
#P comment 272 81 100 196617 in left;
#P number 42 142 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#N vpatcher 219 267 980 660;
#P button 521 177 15 0;
#P window setfont “Sans Serif” 9.;
#P window linecount 0;
#P message 521 207 14 196617 7;
#P newex 521 152 81 196617 match triangle~;
#P button 438 176 15 0;
#P message 438 206 14 196617 6;
#P newex 438 151 70 196617 match cycle~;
#P button 362 176 15 0;
#P button 292 176 15 0;
#P button 216 176 15 0;
#P button 145 175 15 0;
#P button 70 176 15 0;
#P number 62 298 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 362 206 14 196617 5;
#P message 292 204 14 196617 4;
#P message 216 205 14 196617 3;
#P message 145 204 14 196617 2;
#P message 70 204 14 196617 1;
#P window linecount 1;
#P newex 292 151 51 196617 match -~;
#P newex 216 151 52 196617 match +~;
#P newex 145 151 52 196617 match /~;
#P newex 70 151 53 196617 match *~;
#P outlet 62 329 15 0;
#P inlet 68 42 15 0;
#P newex 362 151 61 196617 match sah~;
#P fasten 22 0 12 0 526 291 67 291;
#P fasten 19 0 12 0 443 291 67 291;
#P fasten 7 0 12 0 75 290 67 290;
#P fasten 8 0 12 0 150 291 67 291;
#P fasten 9 0 12 0 221 291 67 291;
#P fasten 10 0 12 0 297 291 67 291;
#P fasten 11 0 12 0 367 291 67 291;
#P connect 12 0 2 0;
#P fasten 1 0 3 0 73 124 75 124;
#P connect 3 0 13 0;
#P connect 13 0 7 0;
#P fasten 1 0 4 0 73 126 150 126;
#P connect 4 0 14 0;
#P connect 14 0 8 0;
#P fasten 1 0 5 0 73 126 221 126;
#P connect 5 0 15 0;
#P connect 15 0 9 0;
#P fasten 1 0 6 0 73 125 297 125;
#P connect 6 0 16 0;
#P connect 16 0 10 0;
#P fasten 1 0 0 0 73 125 367 125;
#P connect 0 0 17 0;
#P connect 17 0 11 0;
#P fasten 1 0 18 0 73 126 443 126;
#P connect 18 0 20 0;
#P connect 20 0 19 0;
#P fasten 1 0 21 0 73 126 526 126;
#P connect 21 0 23 0;
#P connect 23 0 22 0;
#P pop;
#P newobj 42 115 127 196617 p map words to gate nums;
#N out~ 1;
#P newobj 292 467 39 196617 out~ 1;
#N in 1;
#X comment NAME of intended operator;
#P newobj 42 79 25 196617 in 1;
#P comment 71 81 100 196617 operator name;
#P connect 8 0 9 1;
#P connect 8 0 10 1;
#P connect 8 0 11 1;
#P connect 8 0 12 1;
#P connect 8 0 13 1;
#P connect 8 0 14 1;
#P connect 8 0 15 1;
#P connect 19 0 21 0;
#P connect 17 1 19 0;
#P fasten 21 0 16 0 626 305 599 305;
#P fasten 20 0 16 0 590 306 599 306;
#P connect 18 0 20 0;
#P connect 17 0 18 0;
#P fasten 4 0 50 0 47 165 106 165;
#P fasten 4 0 45 0 47 165 190 165;
#P fasten 4 0 41 0 47 165 268 165;
#P fasten 4 0 35 0 47 165 350 165;
#P fasten 4 0 29 0 47 164 431 164;
#P fasten 4 0 23 0 47 165 509 165;
#P fasten 4 0 17 0 47 165 590 165;
#P connect 6 0 9 0;
#P connect 6 0 10 0;
#P connect 6 0 11 0;
#P connect 6 0 12 0;
#P connect 6 0 13 0;
#P connect 6 0 14 0;
#P connect 6 0 15 0;
#P fasten 16 0 15 0 599 332 574 332;
#P connect 25 0 27 0;
#P connect 23 1 25 0;
#P fasten 26 0 22 0 509 306 518 306;
#P fasten 27 0 22 0 545 305 518 305;
#P connect 24 0 26 0;
#P connect 23 0 24 0;
#P fasten 22 0 14 0 518 331 492 331;
#P connect 31 0 33 0;
#P connect 29 1 31 0;
#P fasten 32 0 28 0 431 307 440 307;
#P fasten 33 0 28 0 467 306 440 306;
#P connect 30 0 32 0;
#P connect 29 0 30 0;
#P fasten 28 0 13 0 440 331 422 331;
#P connect 37 0 39 0;
#P connect 35 1 37 0;
#P fasten 39 0 34 0 386 306 359 306;
#P fasten 38 0 34 0 350 307 359 307;
#P connect 36 0 38 0;
#P connect 35 0 36 0;
#P fasten 34 0 12 0 359 330 327 330;
#P connect 55 0 56 0;
#P connect 41 1 55 0;
#P fasten 9 0 2 0 79 422 297 422;
#P fasten 10 0 2 0 173 422 297 422;
#P fasten 11 0 2 0 255 421 297 421;
#P fasten 12 0 2 0 327 423 297 423;
#P fasten 13 0 2 0 422 423 297 423;
#P fasten 14 0 2 0 492 422 297 422;
#P fasten 15 0 2 0 574 422 297 422;
#P fasten 56 0 40 0 302 309 277 309;
#P fasten 43 0 40 0 268 308 277 308;
#P connect 42 0 43 0;
#P connect 41 0 42 0;
#P fasten 40 0 11 0 277 333 255 333;
#P connect 47 0 49 0;
#P connect 45 1 47 0;
#P fasten 49 0 44 0 226 308 199 308;
#P fasten 48 0 44 0 190 309 199 309;
#P connect 46 0 48 0;
#P connect 45 0 46 0;
#P fasten 44 0 10 0 199 332 173 332;
#P connect 52 0 54 0;
#P connect 50 1 52 0;
#P connect 53 0 57 0;
#P fasten 54 0 57 0 142 308 106 308;
#P connect 51 0 53 0;
#P connect 50 0 51 0;
#P fasten 57 0 9 0 106 335 79 335;
#P connect 3 0 4 0;
#P connect 1 0 3 0;
#P window clipboard copycount 58;

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de

#89937
Dec 6, 2006 at 8:26pm

>
> One thing you can do is kill the gate~ objects, which are superfluous
> and cost some CPU. That reduced CPU by around 4% on my Intel, should
> buy maybe 8% on a G4.

… i would not have never imagined that a [gate~] would be so “gourmand”…good to know. taking the [gate~s] off reduces the cpu up to 8-10% as you predicted it would on my G4 … never the less there are still some sudden cpu peaks now the patch oscillates from 16 to 28 % …

thanks for this clarification Peter.

#89938
Dec 6, 2006 at 10:07pm

Interesting ideas folks. I won’t be back to MAX for a few more hours but I’ll surely investigate the VST solution that Mattijs suggests. It has come up in previous posts as the only surefire way to bypass DSP objects.

Thanks for nixing the gates, Peter. They’re leftover from earlier attempts to get stuff to stop flowing. That should certainly help. It’s true that the guts in those poly~s will be more complex than the directly-connected objects, but the only message-math taking place is the rarely-triggered logic to figure out who should get muted. The rest is MSP encapsulated in muted poly~s. Of course, the number~ boxes for testing are outputting messages too, so that will get scrapped. I can’t figure a way to avoid nesting the poly~s in this application so I believe I’m stuck with that. (except for VSTs of course)

And on Karl’s advice, I’ll go with * instead of / where possible.

I’m still extremely curious about why the cycle~ object in the first posted patch refuses to mute when all the others do. For now it’s filed under “that little bit of magic that gives max character”!
-zlp

#89939
Dec 6, 2006 at 11:18pm

On 6-Dec-2006, at 21:26, karl-otto von oertzen wrote:

> … i would not have never imagined that a [gate~] would be so
> “gourmand”…good to know.

You do have 20 of them (2 for each instantiation of the poly~). Also,
I think the ‘silent’ patch cords may be filled with zeros. All very
simple processing but it adds up.

> taking the [gate~s] off reduces the cpu up to 8-10% as you
> predicted it would on my G4 … never the less there are still
> some sudden cpu peaks now the patch oscillates from 16 to 28 % …

You may find the Running CPU Usage ‘Extra’ from Litter Power helpful
in tracking CPU, particularly when there are stray peaks. It’s in the
Starter Pack.

– P.

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de

#89940
Dec 7, 2006 at 7:04am

The Plot Thickens!

Now I’ve got VST doing the work. I used “disable” instead of “bypass” because I didn’t want input to echo across to output when muted.

But only one poly~ voice will work. Subsequent voices don’t seem to honor the disable requests, so all potential ops are “oping” when I’d rather have just one. In my particular application I don’t need more than one voice of any poly~ (the 10-voice versions we have been using so far are for demonstration only). Regardless, is there something I’m missing here. I didn’t find anything obvious in the devguide that would explain this but I’ve missed the obvious before!

When I get time to do a 10-operator test with single-voice poly~s I’ll post it for comparison. Till then you’ll find the current state of things attached. Cheerio!
-zlp

#89941
Dec 9, 2006 at 11:06pm

zpoff wrote:
> I’m still extremely curious about why the cycle~ object in the first
> posted patch refuses to mute when all the others do. For now it’s
> filed under “that little bit of magic that gives max character”! -zlp

When I cut the number of voices in your first patch (the one with the
gate~s) from 10 to 1, I get 2% CPU, thats about the same functionality
as the non poly~ test patch. You never muted ALL the other operators in
the remaining 9 voices the All stay on if you don’t mute them. Remeber
that there is a target message to poly~ which is essential for this kind
of stuff. The default target probably is 1, not 0…

If I send a [target 0] message to your [poly~ operators 10] and then hit
one of the operator messages, I get even less than 1% CPU.

I had roughly the same CPU readings as you (Powerbook 1.5 GHz)

If you want to control voices with muting, you need to [loadmess mute
1]->thispoly~ for each poly, if you embed poly~’s into poly~’s you need
to do that for each level…

hope that clarifies the confusion…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#89942
Dec 10, 2006 at 12:09am

Now we’re getting somewhere! In response to Stefan’s post I “flattened” the 10voice poly~ into 10 seperate 1-voice poly~s. (below) It works (6% CPU instead of 23%) I’m unclear about the muting, though, since I was never trying to mute/unmute individual voices of the 10voice “operators” poly~. I was only ever muting the single-voice sub-poly~s inside. Those little guys were being muted by “mute 0 1″ as referenced in the poly~ help…

“Turn signal processing on and off using the mute message: mute 1-for-mute, 0-for-non-mute;
mute 0 1 mutes all, mute 0 0 unmutes all”

So I’m still not getting why multiple voices of a poly~ don’t mute, even though the muting structure is internal to each. So now I’ll redo all the tests with multiple 1-voice poly~s to see if I can get the CPU down even closer to the hardwired version. Thanks all.
-zlp

(this patch requires the “poly muting tests and extensions” zip from earlier in the thread.)

max v2;
#N vpatcher 444 233 1495 937;
#P window setfont “Sans Serif” 12.;
#P window linecount 1;
#P comment 300 654 209 196620 this costs 6% on my 1.2gig mini;
#P window setfont “Sans Serif” 9.;
#P newex 440 476 91 196617 r operator_choice;
#P newex 440 518 91 196617 poly~ operators 1;
#P newex 440 403 91 196617 r operator_choice;
#P newex 440 445 91 196617 poly~ operators 1;
#P newex 438 320 91 196617 r operator_choice;
#P newex 438 362 91 196617 poly~ operators 1;
#P newex 440 246 91 196617 r operator_choice;
#P newex 440 288 91 196617 poly~ operators 1;
#P newex 438 163 91 196617 r operator_choice;
#P newex 438 205 91 196617 poly~ operators 1;
#P newex 247 476 91 196617 r operator_choice;
#P newex 247 518 91 196617 poly~ operators 1;
#P newex 247 403 91 196617 r operator_choice;
#P newex 247 445 91 196617 poly~ operators 1;
#P newex 245 320 91 196617 r operator_choice;
#P newex 245 362 91 196617 poly~ operators 1;
#P newex 247 246 91 196617 r operator_choice;
#P newex 247 288 91 196617 poly~ operators 1;
#P newex 245 163 91 196617 r operator_choice;
#P newex 19 127 91 196617 s operator_choice;
#P newex 19 36 48 196617 loadbang;
#P message 204 98 51 196617 triangle~;
#P message 158 98 40 196617 cycle~;
#P message 124 98 31 196617 sah~;
#P message 97 98 19 196617 -~;
#P message 73 98 20 196617 +~;
#P message 46 98 20 196617 /~;
#P message 19 99 21 196617 *~;
#P comment 551 199 396 196617 so it should be computationally similar to a directly-connected operator object.;
#P comment 551 184 396 196617 It contains a sub-poly~ for each possible operator , muting the unused ones;
#P user ezdac~ 371 601 415 634 0;
#P newex 371 557 49 196617 *~ 0.1;
#P newex 422 33 61 196617 cycle~ 800;
#P newex 343 33 67 196617 phasor~ 440;
#P newex 245 205 91 196617 poly~ operators 1;
#P window setfont “Sans Serif” 12.;
#P comment 550 163 448 196620 “operators” poly is the chameleon that creates the chosen operator:;
#P window setfont “Sans Serif” 9.;
#P comment 86 68 100 196617 CHOOSE YOUR OP:;
#P connect 16 0 9 0;
#P fasten 10 0 17 0 51 119 24 119;
#P fasten 11 0 17 0 78 119 24 119;
#P fasten 12 0 17 0 102 119 24 119;
#P fasten 13 0 17 0 129 119 24 119;
#P fasten 14 0 17 0 163 119 24 119;
#P fasten 15 0 17 0 209 119 24 119;
#P connect 9 0 17 0;
#P connect 18 0 2 0;
#P connect 22 0 21 0;
#P connect 20 0 19 0;
#P connect 24 0 23 0;
#P connect 26 0 25 0;
#P fasten 3 0 2 1 348 184 290 184;
#P fasten 3 0 21 1 348 346 290 346;
#P fasten 3 0 19 1 348 266 292 266;
#P fasten 3 0 23 1 348 431 292 431;
#P fasten 3 0 25 1 348 502 292 502;
#P fasten 4 0 2 2 427 192 330 192;
#P fasten 4 0 21 2 427 356 330 356;
#P fasten 4 0 19 2 427 280 332 280;
#P fasten 4 0 23 2 427 439 332 439;
#P fasten 4 0 25 2 427 508 332 508;
#P fasten 25 0 5 0 252 544 376 544;
#P fasten 23 0 5 0 252 467 376 467;
#P fasten 21 0 5 0 250 387 376 387;
#P fasten 19 0 5 0 252 313 376 313;
#P fasten 2 0 5 0 250 228 376 228;
#P fasten 35 0 5 0 445 546 376 546;
#P fasten 33 0 5 0 445 469 376 469;
#P fasten 31 0 5 0 443 390 376 390;
#P fasten 29 0 5 0 445 312 376 312;
#P fasten 27 0 5 0 443 231 376 231;
#P connect 5 0 6 0;
#P fasten 5 0 6 1 376 588 410 588;
#P connect 28 0 27 0;
#P connect 32 0 31 0;
#P connect 30 0 29 0;
#P connect 34 0 33 0;
#P connect 36 0 35 0;
#P fasten 3 0 27 1 348 185 483 185;
#P fasten 3 0 31 1 348 345 483 345;
#P fasten 3 0 29 1 348 268 485 268;
#P fasten 3 0 33 1 348 431 485 431;
#P fasten 3 0 35 1 348 502 485 502;
#P fasten 4 0 27 2 427 194 523 194;
#P fasten 4 0 31 2 427 357 523 357;
#P fasten 4 0 29 2 427 281 525 281;
#P fasten 4 0 33 2 427 440 525 440;
#P fasten 4 0 35 2 427 509 525 509;
#P pop;

#89943
Dec 11, 2006 at 5:12pm

zpoff wrote:
> “Turn signal processing on and off using the mute message: mute
> 1-for-mute, 0-for-non-mute; mute 0 1 mutes all,
> mute 0 0 unmutes all”

The mute 0 x message and the muting of single voices is like seperate
commands. If you send mute 0 1, and then mute 1 0, you will not hear
anything, the “mute all” is overriding the single voice mute command.
Play a bit with the help file, as the 3 voices have different pitches
you can easily hear what’s going on.
Most important all the voices will be on by default !!!

> So I’m still not getting why multiple voices of a poly~ don’t mute,
> even though the muting structure is internal to each.

they do, just don’t mix the global mute command with the single ones…
And mute all voices in the poly on load with a mute message to
thispatcher, then switch them on one by one from outside…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#89944

You must be logged in to reply to this topic.