#N canvas 691 23 655 688 12;
#X declare -stdpath ./;
#X obj 218 172 *~;
#X floatatom 218 87 0 0 0 0 - - - 0;
#X floatatom 148 132 0 0 0 0 - - - 0;
#X obj 148 202 +~;
#N canvas 0 0 450 300 (subpatch) 0;
#X array fm-output 441 float 0;
#X coords 0 1.02 440 -1.02 200 130 1;
#X restore 401 97 graph;
#X msg 204 254 bang;
#X obj 204 288 tabwrite~ fm-output;
#X floatatom 236 142 0 0 0 0 - - - 0;
#X text 123 89 carrier;
#X text 122 107 frequency;
#X text 203 63 frequency;
#X text 204 46 modulation;
#X text 64 13 FREQUENCY MODULATION ("FM") USING TWO OSCILLATORS;
#X obj 148 248 osc~;
#X text 61 229 "carrier";
#X text 56 164 add modulator;
#X text 55 182 to carrier;
#X text 275 154 index;
#X text 277 135 modulation;
#X obj 218 112 osc~;
#X text 405 229 --- 0.01 seconds ----;
#X text 61 484 To get the FM sound \, set all three of carrier frequency
\, modulation frequency \, and modulation index in the hundreds. Note
that you get a timbral change as you sweep modulation index \, because
this changes the amplitudes of the components of the output sound but
not their frequencies., f 71;
#X obj 90 297 output~;
#X text 369 632 updated for Pd version 0.37;
#X text 61 388 This patch shows the classical FM synthesis technique
developed by John Chowning. It's nothing but an oscillator with vibrato
controlled by another "modulation" oscillator. First \, to understand
the patch \, set carrier frequency to 400 or so \, modulation frequency
between 5 and 10 \, and try modulation index values between 0 and 400
\, say. You'll hear a sine wave with vibrato., f 71;
#X text 61 563 The component frequencies are equal to the carrier frequency
\, plus or minus multiples of the modulator frequency. A more complete
discussion of FM occurs in part 5 of this series., f 71;
#X text 43 247 oscillator =>;
#X text 53 201 frequency =>;
#X text 246 254 <= click to graph;
#X obj 461 26 declare -stdpath ./;
#X connect 0 0 3 1;
#X connect 1 0 19 0;
#X connect 2 0 3 0;
#X connect 3 0 13 0;
#X connect 5 0 6 0;
#X connect 7 0 0 1;
#X connect 13 0 6 0;
#X connect 13 0 22 0;
#X connect 13 0 22 1;
#X connect 19 0 0 0;
