#N canvas 1 23 809 567 12;
#X graph graph1 0 -1.02 882 1.02 542 471 742 341;
#X array pulse-output 882 float 0;
#X pop;
#X floatatom 101 331 0 0 0;
#N canvas 159 26 495 266 output 0;
#X obj 338 160 t b;
#X obj 338 110 f;
#X obj 338 60 inlet;
#X text 344 29 mute;
#X obj 338 185 f;
#X msg 425 178 0;
#X msg 338 85 bang;
#X obj 338 135 moses 1;
#X obj 425 153 t b f;
#X obj 397 117 moses 1;
#X obj 83 148 dbtorms;
#X obj 397 92 r master-lvl;
#X obj 83 42 r master-lvl;
#X obj 338 210 s master-lvl;
#X obj 22 181 inlet~;
#X obj 199 41 inlet;
#X text 199 18 level;
#X obj 199 100 s master-lvl;
#X msg 96 65 set \$1;
#X obj 96 89 outlet;
#X msg 214 64 \; pd dsp 1;
#X obj 83 194 line~;
#X obj 22 212 *~;
#X obj 22 241 dac~;
#X obj 83 171 pack 0 50;
#X text 20 158 audio;
#X text 93 110 show level;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 13 0;
#X connect 5 0 13 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 5 0;
#X connect 9 1 4 1;
#X connect 10 0 24 0;
#X connect 11 0 1 1;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
#X connect 12 0 18 0;
#X connect 14 0 22 0;
#X connect 15 0 17 0;
#X connect 15 0 20 0;
#X connect 18 0 19 0;
#X connect 21 0 22 1;
#X connect 22 0 23 0;
#X connect 22 0 23 1;
#X connect 24 0 21 0;
#X restore 63 359 pd output;
#X msg 139 332 MUTE;
#X text 179 331 <-- output amplitude;
#X floatatom 63 48 0 0 0;
#X obj 63 303 hip~ 5;
#X graph graph1 0 0 128 1000 490 259 746 129;
#X array spectrum 128 float 0;
#X pop;
#X obj 129 278 tabwrite~ pulse-output;
#X msg 129 243 bang;
#X text 170 244 <-- click to graph;
#N canvas 204 17 358 234 fft 0;
#X obj 46 48 inlet~;
#X obj 159 181 tabwrite~ spectrum;
#X obj 159 145 inlet;
#X obj 46 78 rfft~;
#X obj 46 111 *~;
#X obj 77 111 *~;
#X obj 46 141 sqrt~;
#X obj 191 45 block~ 2048 1;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 4 0;
#X connect 3 0 4 1;
#X connect 3 1 5 0;
#X connect 3 1 5 1;
#X connect 4 0 6 0;
#X connect 5 0 6 0;
#X connect 6 0 1 0;
#X restore 74 281 pd fft;
#X text 488 265 0;
#X obj 79 194 osc~ 0;
#N canvas 0 0 600 384 pulse-train 0;
#X obj 185 162 line~;
#X obj 39 251 cos~;
#X obj 185 138 pack 0 50;
#X obj 40 178 -~ 0.5;
#X obj 40 204 *~;
#X obj 185 63 / 10;
#X obj 185 87 moses 0;
#X msg 185 111 0;
#X obj 39 227 clip~ -0.5 0.5;
#X obj 185 187 +~ 1;
#X obj 38 274 +~ 1;
#X obj 184 38 inlet;
#X obj 38 299 outlet~;
#X obj 40 154 phasor~ 344.532;
#X text 51 13 This is the pulse train generator from example 17;
#X connect 0 0 9 0;
#X connect 1 0 10 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 8 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 1 2 0;
#X connect 7 0 2 0;
#X connect 8 0 1 0;
#X connect 9 0 4 1;
#X connect 10 0 12 0;
#X connect 11 0 5 0;
#X connect 13 0 3 0;
#X restore 63 75 pd pulse-train;
#X floatatom 79 168 0 0 0;
#X text 124 167 <-- modulation frequency;
#X text 102 48 <-- bandwidth;
#X obj 63 218 *~;
#X text 736 262 2656 Hz.;
#X text 196 77 fundamental is 344.5 Hz;
#X text 157 210 an oscillator...;
#X text 66 22 RING MODULATION;
#X text 542 473 ---- 0.02 seconds ----;
#X text 528 533 updated for Pd version 0.34;
#X text 156 195 Just multiply by;
#X text 12 422 Ring modulation is just multiplication by an oscillator.
This patch shows the effect of ring modulation on a pulse train. When
bandwidth is high and modulation frequency is moderately low \, you
see the spectrum reflect off the "y axis".;
#X obj 79 140 * 344.5;
#X floatatom 79 114 0 0 0;
#X text 120 114 <-- modulation frequency as;
#X text 159 128 multiple of fundamental;
#X connect 1 0 2 1;
#X connect 2 0 1 0;
#X connect 3 0 2 2;
#X connect 5 0 14 0;
#X connect 6 0 2 0;
#X connect 9 0 8 0;
#X connect 9 0 11 1;
#X connect 13 0 18 1;
#X connect 14 0 18 0;
#X connect 15 0 13 0;
#X connect 18 0 11 0;
#X connect 18 0 6 0;
#X connect 18 0 8 0;
#X connect 27 0 15 0;
#X connect 28 0 27 0;