#N canvas 202 197 790 487 12; #X obj 168 387 dac~; #X obj 168 217 abstraction1 110 100 440; #X obj 214 249 abstraction1 110 100 1320; #X floatatom 168 186 4 0 0; #X floatatom 273 188 4 0 0; #X floatatom 379 189 4 0 0; #X obj 168 326 *~; #X obj 214 328 *~; #X obj 170 355 +~; #X floatatom 190 302 1 0 0; #X floatatom 236 302 1 0 0; #X msg 591 27 \; pd dsp 1; #X msg 678 27 \; pd dsp 0; #X text 224 3 ABSTRACTIONS; #X text 44 25 This patch demonstrates how to use abstractions to manage copies of a given function \, in this case \, FM synthesis. The "abstraction1" is defnied by a separate file \, "abstraction1.pd" \, which takes three arguments: modulation frequency \, modulation depth \, and carrier frequency. You also get inlets to override the startup values \, as the top copy demonstrates. You don't have to design abstractions to offer both possibilities if you don't need them \, but it's done that way here for thoroughness.; #X text 259 303 on/off switches for the two voices; #X connect 1 0 6 0; #X connect 2 0 7 0; #X connect 3 0 1 0; #X connect 4 0 1 1; #X connect 5 0 1 2; #X connect 6 0 8 0; #X connect 7 0 8 1; #X connect 8 0 0 0; #X connect 8 0 0 1; #X connect 9 0 6 1; #X connect 10 0 7 1;