#N canvas 397 56 674 497 12;
#X obj 54 256 osc~;
#X floatatom 130 98 7 0 10000 1 frequency - - 0;
#X obj 54 435 outlet~;
#X floatatom 130 122 7 0 10000 1 bandwidth - - 0;
#X obj 139 247 max 1;
#X obj 139 273 t b f;
#X obj 54 357 *~;
#X obj 54 386 expr~ exp(-$v1*$v1);
#X obj 54 203 * 0.5;
#X obj 347 192 f;
#X obj 347 221 pack;
#X obj 287 99 savestate;
#X obj 287 309 unpack;
#X obj 130 302 / 1;
#X text 165 422 This is a waveshaping pulse generator using a Gaussian table lookup \, as described in Theory and Technique of electronic music \, chapter 6 The controls are "F" to set fundamental frequency \, and "BW" to set bandwidth \, both in cycles per second., f 68;
#X text 342 298 Left outlet returns the list or lists to the abstraction which can use them to restore its state when it is reloaded., f 40;
#X text 367 90 right outlet gets bang when parent patch is saved. In response we send [savestate] one or more lists that will be stored as part of the parent patch, f 41;
#X obj 139 160 s \$0-bw;
#X obj 382 191 r \$0-bw;
#X obj 326 357 s \$0-set-bw;
#X obj 29 49 r \$0-set-bw;
#X text 307 34 This is an abstraction used by the [savestate] help file., f 29;
#X obj 130 49 r \$0-set-freq;
#X obj 54 147 s \$0-freq;
#X obj 54 176 r \$0-freq;
#X obj 365 165 r \$0-freq;
#X text 391 214 Here we build and send a single list of parameters we want to save. The next example shows how you can store more than a single list., f 32;
#X obj 287 385 s \$0-set-freq;
#X connect 0 0 6 0;
#X connect 1 0 23 0;
#X connect 3 0 13 0;
#X connect 3 0 17 0;
#X connect 4 0 5 0;
#X connect 5 0 13 0;
#X connect 5 1 13 1;
#X connect 6 0 7 0;
#X connect 7 0 2 0;
#X connect 8 0 0 0;
#X connect 8 0 4 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 11 1 9 0;
#X connect 12 0 27 0;
#X connect 12 1 19 0;
#X connect 13 0 6 1;
#X connect 18 0 10 1;
#X connect 20 0 3 0;
#X connect 22 0 1 0;
#X connect 24 0 8 0;
#X connect 25 0 9 1;
#X coords 0 -1 1 1 125 70 1 125 75;
