Forums > MaxMSP

adsr~ signal triggering wierdness

October 5, 2006 | 11:25 pm

Hello Cyclists,

I’m experiencing some strange behavior from adsr~. When trigered by a pulse wave, everything’s fine. However, if triggered by a cycle~d buffer~, only the first non-zero value in the buffer~ will trigger the adsr~. Below is a simplified patch which illustrates the issue. I’ve tried this on both intel and ppc installations of 4.6, both seem to exibhit the same behavior. Am I overlooking something really simple?

Thanks,

Bil

max v2;
#N vpatcher 60 48 828 749;
#P window setfont "Sans Serif" 12.;
#P newex 58 82 78 196620 loadmess 1;
#P comment 65 543 100 196620 adsr~ output;
#P newex 342 219 36 196620 !/ 1.;
#P newex 308 264 44 196620 rate~;
#P newex 180 291 30 196620 + 1;
#P user umenu 180 269 100 196659 1 64 289 1;
#X add square wave;
#X add step Seq;
#P newex 308 291 48 196620 < ~ 0.5;
#P newex 180 318 267 196620 selector~ 2;
#P newex 308 156 71 196620 phasor~ 1;
#P newex 180 472 27 196620 *~;
#P newex 197 447 49 196620 noise~;
#P user scope~ 67 492 167 542 256 3 128 0. 1. 0 0. 0 0. 102 255 51 135 135 135 0;
#P user scope~ 67 441 167 491 256 3 128 0. 1. 0 0. 0 0. 102 255 51 135 135 135 0;
#N vpatcher 870 668 1114 999;
#P window setfont "Sans Serif" 12.;
#P newex 86 213 27 196620 – 1;
#P newex 87 140 40 196620 * 0.5;
#P newex 50 165 47 196620 uzi 32;
#P newex 86 189 38 196620 +;
#P newex 114 165 37 196620 * 32;
#P newex 86 261 99 196620 peek~ stepSeq;
#P newex 86 237 101 196620 pack 0 0.;
#P newex 50 74 137 196620 unpack;
#P newex 50 50 66 196620 listfunnel;
#P newex 177 186 41 196620 / 16.;
#P inlet 141 32 15 0;
#P inlet 50 30 15 0;
#P newex 50 115 74 196620 t b i;
#P connect 1 0 4 0;
#P connect 4 0 5 0;
#P connect 5 0 0 0;
#P connect 0 0 10 0;
#P connect 10 2 9 0;
#P connect 9 0 12 0;
#P connect 12 0 6 0;
#P connect 6 0 7 0;
#P connect 2 0 11 0;
#P connect 11 0 10 1;
#P connect 0 1 8 0;
#P connect 8 0 9 1;
#P connect 2 0 8 1;
#P connect 5 1 3 0;
#P connect 3 0 6 1;
#P pop;
#P newobj 465 223 95 196620 p bufferStock;
#P window setfont "Sans Serif" 9.;
#P comment 216 366 15 196617 A;
#P user dial 216 378 35 35 100 1 0 0 234 270 1 1. 227 234 168 248 248 248 147 147 147 187 153 91 175 26 26 1 184 43;
#P comment 252 366 15 196617 D;
#P user dial 252 378 35 35 500 1 0 0 234 270 1 1. 227 234 168 248 248 248 147 147 147 187 153 91 175 26 26 1 184 43;
#P window setfont "Sans Serif" 12.;
#P newex 180 415 155 196620 adsr~ 0 0 0 0;
#P message 436 272 83 196620 set stepSeq;
#P newex 436 175 68 196620 t b l clear;
#P message 550 47 53 196620 size $1;
#P newex 550 180 49 196620 * 512.;
#P number 550 26 35 12 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 550 156 36 196620 !/ 1.;
#P window setfont "Sans Serif" 9.;
#P newex 436 294 118 196617 cycle~ stepSeq;
#B color 5;
#P newex 494 204 112 196617 buffer~ stepSeq 11.61;
#P user gain~ 180 502 24 100 158 0 1.071519 7.94321 10.;
#N vpreset 8;
#X append 1 2 3 69 550 multiSlider list 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ; 6 502 180 gain~ list 88 10. ; 10 26 550 number int 16 ; 16 378 252;
#X append 1 2 dial int 106 ; 18 378 216 dial int 0 ; 28 269 180 umenu int 0 ;;
#P preset 58 107 47 27;
#P user ezdac~ 180 645 224 678 0;
#P user multiSlider 550 69 188 69 0. 16. 16 2921 15 0 0 2 4 0 0;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P window setfont "Sans Serif" 12.;
#P window linecount 8;
#P comment 377 439 198 196620 everything’s ok when trigger source is square wave , but when triggered by the ‘cycled’ buffer , only the first value triggers the the adsr~. The other values do get through , but you but the volume must be turned way up to hear.;
#P window linecount 1;
#P comment 68 424 100 196620 adsr~ input;
#P comment 182 250 100 196620 trigger source:;
#P connect 33 0 5 0;
#P connect 26 0 21 0;
#P connect 15 0 22 0;
#P connect 28 0 29 0;
#P connect 29 0 26 0;
#P connect 26 0 15 0;
#P connect 15 0 24 0;
#P connect 24 0 6 0;
#P connect 6 0 4 0;
#P connect 23 0 24 1;
#P connect 6 0 4 1;
#P connect 18 0 15 1;
#P connect 16 0 15 2;
#P connect 25 0 30 0;
#P connect 30 0 27 0;
#P connect 27 0 26 1;
#P fasten 10 0 31 0 555 46 347 46;
#P connect 31 0 30 1;
#P fasten 3 0 13 0 555 147 441 147;
#P fasten 13 0 14 0 441 239 441 239;
#P connect 14 0 8 0;
#P connect 8 0 26 2;
#P connect 13 1 20 0;
#P connect 13 2 7 0;
#P fasten 13 0 7 0 441 200 499 200;
#P fasten 25 0 8 1 313 253 549 253;
#P connect 10 0 12 0;
#P connect 12 0 3 0;
#P connect 10 0 9 0;
#P connect 9 0 11 0;
#P connect 11 0 20 1;
#P pop;


October 6, 2006 | 8:23 pm

William Bowen wrote:
> Am I overlooking something really simple?

The content of your buffer is never going to zero isn’t it? Only zero
will switch off…

Stefan


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


October 6, 2006 | 8:41 pm

Thanks for your reply, Stefan.

I just noticed that the preset didn’t replicate the patch’s settings just as it should have. change some values in the multislider and it will redraw with zeros in between the ‘hits’.

I also tried making the spaces in between the ‘hits’ go to -1. and then using a [clip~ 0. 1.] on playback… still didn’t work.

Could this be an artifact of the interpolation of the 512 sample lookup table?

What’s more, it will trigger the first value of the buffer~ (if it’s non-zero), but none after that… it’s like the lookup index must go to zero, not the value triggering the adsr~.

does this make sense?

bb


October 9, 2006 | 6:04 am

William Bowen wrote:
> What’s more, it will trigger the first value of the buffer~ (if it’s
> non-zero), but none after that… it’s like the lookup index must go
> to zero, not the value triggering the adsr~.
>
> does this make sense?

Yes, obviously, as explained in the help file. (hint: always look for
subpatchers in help files…)

Stefan


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


October 9, 2006 | 2:14 pm

Stefan,

Which subpatcher in which .help file obviously describes that only the peek~d value of indexes 0-31 will be presented on output and, once that output returns to zero (for re-triggering of the adsr~, after having been high for 32 samples), that the remaining 480 samples will not rise more than 1/100 of the value peek~d at its index in the buffer~? (hint: it’s not peek~, buffer~, cycle~, or adsr~).

I’m referring to _index_ as the address in the buffer~ (0 – 511), and _value_ as the floating point number (0.0 – 0.999999) located at that index.

hook a [snapshot~ 10] to a print before and after the adsr~ if this isn’t clear in the scope~. To make this even more clear, make the multislider all full values which will make the cycle~ output identical to the phase-locked pulse wave selectable from the umenu.

Thanks,

Bil


Viewing 5 posts - 1 through 5 (of 5 total)