#N canvas 439 152 649 445 12;
#X obj 495 257 sqrt;
#X text 78 85 trigger;
#X msg 82 143 bang;
#X obj 81 211 * \$2;
#X text 126 210 relative frequency;
#X obj 83 340 *~;
#X obj 262 307 line~;
#X obj 262 335 *~;
#X obj 260 364 *~;
#X obj 264 229 float;
#X msg 264 280 0 \$1;
#X obj 494 280 sqrt;
#X obj 82 110 r trigger;
#X obj 495 232 float \$1;
#X obj 294 206 r duration;
#X obj 81 179 float;
#X obj 126 180 r frequency;
#X text 497 199 amplitude;
#X obj 83 311 osc~ 0;
#X obj 278 168 t b b;
#X obj 81 238 + \$3;
#X text 119 240 detune;
#X obj 264 255 * \$4;
#X text 306 256 relative duration;
#X text 106 6 partial - arguments: amplitude \, frequency \, detune \, duration;
#X obj 83 367 throw~ sum;
#X text 74 35 This patch is used as an abstraction in 15.additive.pd;
#X connect 0 0 11 0;
#X connect 2 0 15 0;
#X connect 2 0 19 0;
#X connect 3 0 20 0;
#X connect 5 0 25 0;
#X connect 6 0 7 0;
#X connect 6 0 7 1;
#X connect 7 0 8 0;
#X connect 7 0 8 1;
#X connect 8 0 5 1;
#X connect 9 0 22 0;
#X connect 10 0 6 0;
#X connect 11 0 6 0;
#X connect 12 0 2 0;
#X connect 13 0 0 0;
#X connect 14 0 9 1;
#X connect 15 0 3 0;
#X connect 16 0 15 1;
#X connect 18 0 5 0;
#X connect 19 0 9 0;
#X connect 19 1 13 0;
#X connect 20 0 18 0;
#X connect 22 0 10 0;