#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;