XML Feeds

.

[maxmsp] Breakoint envelopes

Roald Baudoux roald.baudoux at brutele.be
Wed Jan 30 04:07:53 MST 2008


Two additional possibilites to use function to control several voices  
when using poly~:
1. Save the envelope's shape into a buffer. The buffer can be either  
played back with a cycle~ (useful to synchronize the envelop with a  
groove~ or a phasor~ for instance) or with a wave~ (see patcher below  
for recording).

2. Transform the function data so they can be used in a zigzag~  
object (see patcher 2). Quite tricky but useful. However I still  
wonder why the folks at C74 haven't thought about a better solution  
than having to cope with adsr~ when one wants to use complex  
envelopes inside poly~.

Roald Baudoux

1. function to buffer~

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P message 351 279 14 196617 0;
#P newex 503 61 72 196617 loadmess 513;
#P newex 503 84 66 196617 sampstoms~;
#P message 503 108 43 196617 size \$1;
#P message 266 33 33 196617 clear;
#P newex 503 134 65 196617 buffer~ tutu;
#P newex 232 131 31 196617 t 1 b;
#P button 232 112 15 0;
#P newex 318 58 72 196617 loadmess 512;
#P message 318 121 70 196617 setdomain \$1;
#P newex 318 81 66 196617 sampstoms~;
#P newex 329 300 67 196617 record~ tutu;
#P comment 467 150 17 196617 1.;
#P user function 266 154 466 254 1 1 1 0;
#X frgb 82 82 82;
#X brgb 204 204 204;
#X rgb2 85 85 85;
#X rgb3 255 255 255;
#X rgb4 0 0 0;
#X rgb5 0 0 0;
#X add 0. 0. 0;
#X add 2.778984 0.681818 0;
#X add 11.61 1. 0;
#X domain 11.61;
#X range 0. 1.;
#X done;
#P newex 329 258 32 196617 line~;
#P comment 467 247 17 196617 0.;
#P window linecount 5;
#P comment 11 45 199 196617 Shows how to draw a waveform store in a  
buffer using a function object with line~ and record~. It is  
important to resize the buffer and the function time axis the right  
way.;
#P connect 13 0 11 0;
#P fasten 14 1 13 0 564 104 508 104;
#P connect 15 0 14 0;
#P connect 2 1 16 0;
#P connect 2 0 5 0;
#P fasten 10 0 5 0 237 281 334 281;
#P connect 16 0 5 0;
#P connect 3 1 2 0;
#P connect 6 1 7 0;
#P connect 8 0 6 0;
#P connect 12 0 3 0;
#P connect 10 1 3 0;
#P connect 7 0 3 0;
#P connect 9 0 10 0;
#P connect 3 3 9 0;
#P window clipboard copycount 17;

2. function to zigzag~

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#N vpatcher 119 145 745 575;
#N comlet listdump contents;
#P inlet 74 37 15 0;
#N comlet to zigzag~'s right input;
#P outlet 300 370 15 0;
#P window setfont "Sans Serif" 9.;
#P message 246 91 119 196617 insert 50 0. 0. \, jump 50;
#B color 5;
#P newex 74 306 74 196617 prepend insert;
#N counter 0 200;
#X flags 0 0;
#P newobj 74 218 306 196617 counter 0 200;
#P newex 109 256 45 196617 buddy 0.;
#P message 366 120 45 196617 delete 0;
#B color 6;
#P newex 370 90 40 196617 uzi 50;
#B color 6;
#P newex 74 62 308 196617 t l b 0 b b;
#P newex 74 284 81 196617 pack 1 0. 0.;
#P newex 74 129 150 196617 unpack 0. 0.;
#P newex 74 188 27 196617 - 0.;
#P message 148 105 17 196617 0.;
#P newex 91 161 50 196617 bucket 0.;
#P newex 74 104 45 196617 zl iter 2;
#N comlet to zigzag~'s left input;
#P outlet 246 370 15 0;
#P comment 412 93 159 196617 empties zigzag~ (up to 50 points);
#P comment 167 106 70 196617 resets bucket;
#P comment 384 219 69 196617 counts points;
#P comment 159 285 182 196617 creates new point : index - delta x - y;
#P comment 104 191 113 196617 replaces x with delta x;
#P connect 20 0 12 0;
#P connect 12 0 6 0;
#P connect 6 0 10 0;
#P connect 10 0 9 0;
#P connect 9 0 16 0;
#P connect 16 0 11 0;
#P connect 11 0 17 0;
#P connect 10 0 7 0;
#P connect 8 0 7 0;
#P connect 7 0 9 1;
#P connect 10 1 15 0;
#P connect 15 0 11 1;
#P connect 9 0 15 1;
#P connect 15 1 11 2;
#P connect 12 1 8 0;
#P connect 12 2 16 2;
#P fasten 12 3 18 0 301 85 251 85;
#P connect 18 0 5 0;
#P connect 14 0 5 0;
#P fasten 17 0 19 0 79 346 305 346;
#P fasten 13 2 14 0 405 113 371 113;
#P connect 12 4 13 0;
#P pop;
#P newobj 612 425 109 196617 p function_to_zigzag~;
#P window linecount 4;
#P comment 52 235 285 196617 2) When a new point is inserted \, the  
enveloppe isautomatically triggered. The only trick I have found to  
avoid this is by insertion of a special point after deleting the old  
envelope and before inserting the new envelope.;
#P window linecount 1;
#P message 571 42 32 196617 clear;
#P button 352 309 52 0;
#P comment 512 26 17 196617 2.;
#P message 540 25 45 196617 listdump;
#P user function 540 70 740 170 1 1 0 0;
#X frgb 82 82 82;
#X brgb 204 204 204;
#X rgb2 85 85 85;
#X rgb3 255 255 255;
#X rgb4 0 0 0;
#X rgb5 0 0 0;
#X add 0. 0. 0;
#X add 148.936172 0.786667 0;
#X add 196.808502 0.653333 0;
#X add 218.085098 0.226667 0;
#X add 244.680847 0.213333 0;
#X add 244.680847 0.546667 0;
#X add 452.127655 0.453333 0;
#X add 494.680847 0.853333 0;
#X add 515.957458 0.213333 0;
#X add 521.27655 1. 0;
#X add 585.106384 0.413333 0;
#X add 654.25531 0.2 0;
#X add 686.170166 0.76 0;
#X add 712.76593 0.186667 0;
#X add 1000. 0. 0;
#X domain 1000.;
#X range 0. 1.;
#X done;
#P user scope~ 752 488 882 618 256 3 128 -1. 1. 0 0. 0 0. 102 255 51  
135 135 135 0;
#P message 355 46 32 196617 clear;
#P newex 520 497 38 196617 noise~;
#P message 314 26 45 196617 listdump;
#P user function 314 71 514 171 1 1 0 0;
#X frgb 82 82 82;
#X brgb 204 204 204;
#X rgb2 85 85 85;
#X rgb3 255 255 255;
#X rgb4 0 0 0;
#X rgb5 0 0 0;
#X add 0. 0. 0;
#X add 175.531906 1. 0;
#X add 1000. 0. 0;
#X domain 1000.;
#X range 0. 1.;
#X done;
#P newex 520 531 102 196617 *~ 1.;
#P user bargraf~ 315 443 128 24 100 0 0 0 0 155 155 155 0 186 0 77  
202 0 124 225 0 255 255 0 255 0 0 225 225 225 108 108 108 225 225 225  
108 108 108 0 0 0 12 1;
#P user bargraf~ 284 443 128 24 100 0 0 0 0 155 155 155 0 186 0 77  
202 0 124 225 0 255 255 0 255 0 0 225 225 225 108 108 108 225 225 225  
108 108 108 0 0 0 12 1;
#P message 175 561 27 196617 stop;
#B color 5;
#P message 108 561 65 196617 startwindow;
#B color 6;
#P newex 256 590 96 196617 dac~;
#P user gain~ 342 443 24 100 158 0 1.071519 7.94321 10.;
#P user gain~ 256 443 24 100 158 0 1.071519 7.94321 10.;
#P newex 612 495 53 196617 zigzag~;
#P comment 293 26 17 196617 1.;
#P window linecount 3;
#P comment 55 150 186 196617 The purpose of the patcher is to create  
envelopes with function and store them in zigzag~.;
#P window linecount 2;
#P comment 52 202 285 196617 1) The patcher use a uzi with the  
"delete 0" message to delete all points in zigzag~. Is there an  
easier way to achieve this?;
#P window linecount 1;
#P comment 66 303 140 196617 Roald Baudoux \, 02/02/2005;
#P fasten 12 0 5 0 525 564 386 564 386 407 261 407;
#P fasten 12 0 6 0 525 567 383 567 383 413 347 413;
#P fasten 12 0 17 0 525 554 724 554 724 455 757 455;
#P fasten 24 1 4 1 716 453 660 453;
#P connect 4 0 12 1;
#P fasten 21 0 4 0 357 390 417 390 417 488 617 488;
#P connect 24 0 4 0;
#P fasten 13 2 24 0 445 299 617 299;
#P fasten 18 2 24 0 671 296 617 296;
#P connect 22 0 18 0;
#P connect 19 0 18 0;
#P connect 15 0 12 0;
#P fasten 6 0 11 0 347 575 340 575 340 438 320 438;
#P connect 6 0 7 1;
#P fasten 5 1 6 0 275 574 311 574 311 436 347 436;
#P connect 16 0 13 0;
#P connect 14 0 13 0;
#P fasten 5 0 10 0 261 579 281 579 281 437 289 437;
#P fasten 8 0 7 0 113 589 152 589 261 589;
#P fasten 9 0 7 0 180 589 261 589;
#P connect 5 0 7 0;
#P window clipboard copycount 25;

Le 26-janv.-08 à 21:59, seanzshow a écrit :

>
> I am trying to build an additive synth with 16 oscilators, each  
> having its own amplitude envelope.
>
> I wish to eliminate having 16 envelopes on the interface so was  
> wondeing if there was a way to have a master envelope that could be  
> assigned to a particular oscilator, while using a ...preset?... to  
> save the previous oscilators envelope settings to be recalled when  
> the oscilator was next selected??
>
> This would require the oscilators particular envelope to mirror the  
> master one when the required message was sent. It would also  
> require the master envelope to revert to the selected oscilators  
> precviously saved settings when that osc was subsequently selected.???
>
> It occured to me there may be a way of using poly to achieve this?
> _______________________________________________
> maxmsp mailing list
> maxmsp at cycling74.com
> http://www.cycling74.com/mailman/listinfo/maxmsp




More information about the maxmsp mailing list