#N canvas 36 68 722 738 12; #X obj 224 164 *~; #X floatatom 224 107 0 0 0 0 - - -; #X obj 312 144 line~; #X floatatom 128 121 0 0 0 0 - - -; #X obj 128 235 cos~; #X obj 128 191 +~; #X obj 224 132 osc~ 0; #X obj 312 118 pack 0 50; #X floatatom 312 65 0 0 0 0 - - -; #X obj 312 92 / 100; #X text 286 27 modulation index; #X text 286 42 in hundredths; #X text 125 78 carrier; #X text 124 96 frequency; #X text 209 83 frequency; #X text 210 66 modulation; #X text 33 132 carrier; #X text 33 147 phase -->; #X text 6 175 phase; #X text 5 190 modulation-->; #X text 12 217 output; #X text 11 234 waveform -->; #X text 129 1 PHASE MODULATION; #X text 16 378 Most implementations of "FM" actually use phase \, not frequency \, modulation \, because it extends in a more natural way to "multi-operator FM" with three or more oscillators.; #X text 16 434 To do phase modulation \, we split the "carrier oscillator" into its phase calculation (phasor~) and its waveform lookup (cos~). These together would be equivalent to an osc~ object \, but the "+~" between them adds the modulating oscillator's output to the phase. ; #X text 20 652 We also have to use a line~ to smooth changes in the modulation index \, which wasn't necessary in the previous patch.; #X obj 128 148 phasor~; #X obj 117 557 cos~; #X obj 117 529 phasor~; #X text 60 539 this:; #X text 219 532 is the same; #X text 220 551 as this:; #X obj 335 544 osc~; #N canvas 0 0 450 300 graph2 0; #X array phase-out 441 float 1; #A 0 0.43245 0.433463 0.434452 0.435418 0.43636 0.43728 0.438178 0.439056 0.439912 0.440749 0.441567 0.442366 0.443148 0.443912 0.444659 0.445391 0.446107 0.446809 0.447497 0.448172 0.448834 0.449484 0.450122 0.450751 0.451369 0.451978 0.452579 0.453172 0.453758 0.454338 0.454911 0.45548 0.456045 0.456606 0.457164 0.457719 0.458274 0.458827 0.45938 0.459934 0.460489 0.461046 0.461605 0.462168 0.462735 0.463306 0.463883 0.464466 0.465056 0.465654 0.466259 0.466873 0.467497 0.468131 0.468776 0.469433 0.470102 0.470783 0.471479 0.472188 0.472913 0.473653 0.474409 0.475182 0.475973 0.476782 0.477611 0.478459 0.479327 0.480216 0.481127 0.48206 0.483015 0.483994 0.484997 0.486024 0.487077 0.488156 0.48926 0.490392 0.491552 0.49274 0.493957 0.495203 0.496479 0.497785 0.499123 0.500493 0.501896 0.503332 0.504801 0.506304 0.507842 0.509415 0.511023 0.512667 0.514348 0.516066 0.517821 0.519615 0.521447 0.523318 0.525228 0.527179 0.52917 0.531202 0.533275 0.53539 0.537547 0.539747 0.541992 0.54428 0.546613 0.548989 0.551411 0.553877 0.556389 0.558947 0.561551 0.564202 0.5669 0.569645 0.572437 0.575278 0.578166 0.581104 0.58409 0.587125 0.59021 0.593345 0.596529 0.599764 0.603051 0.606389 0.609778 0.613219 0.61671 0.620254 0.62385 0.627497 0.631197 0.634949 0.638754 0.642612 0.646522 0.650486 0.654503 0.658573 0.662696 0.666873 0.671104 -0.324611 -0.320273 -0.315881 -0.311434 -0.306931 -0.302375 -0.297764 -0.2931 -0.288381 -0.283608 -0.278781 -0.2739 -0.268964 -0.263975 -0.258931 -0.253833 -0.248682 -0.243476 -0.238217 -0.232904 -0.227537 -0.222116 -0.216642 -0.211115 -0.205534 -0.1999 -0.194211 -0.18847 -0.182675 -0.176829 -0.170929 -0.164978 -0.158975 -0.152919 -0.146813 -0.140655 -0.134446 -0.128186 -0.121875 -0.115514 -0.109103 -0.102642 -0.0961313 -0.0895714 -0.0829625 -0.0763049 -0.0695988 -0.0628447 -0.056041 -0.0491896 -0.0422913 -0.0353461 -0.0283546 -0.0213171 -0.0142339 -0.00710538 6.80089e-05 0.00728586 0.0145478 0.0218535 0.0292025 0.0365944 0.0440286 0.0515049 0.0590228 0.0665818 0.0741815 0.0818213 0.0895009 0.0972198 0.104978 0.112776 0.120611 0.128484 0.136393 0.144339 0.15232 0.160337 0.168388 0.176473 0.184592 0.192744 0.200929 0.209146 0.217393 0.225672 0.233981 0.24232 0.250688 0.259084 0.267509 0.27596 0.284439 0.292944 0.301475 0.310031 0.318611 0.327215 0.335842 0.344491 0.353162 0.361854 0.370566 0.379298 0.38805 0.39682 0.405608 0.414413 0.423234 0.432072 0.440924 0.449792 0.458673 0.467567 0.476474 0.485394 0.494324 0.503265 0.512216 0.521176 0.530145 0.539121 0.548104 0.557094 0.566089 0.575089 0.584094 0.593102 0.602113 0.611126 0.620141 0.629157 0.638173 0.647189 0.656203 0.665215 0.674225 0.683232 0.692234 0.701231 0.710224 0.71921 0.728189 0.737161 0.746124 0.755079 0.764024 0.772959 0.781884 0.790796 0.799697 0.808584 0.817458 0.826318 0.835162 0.843992 0.852804 0.861601 0.870379 0.879139 0.887879 0.8966 0.905301 0.913981 0.92264 0.931276 0.93989 0.94848 0.957046 0.965588 0.974105 0.982595 0.99106 0.999497 1.00791 1.01629 1.02464 1.03296 1.04126 1.04952 1.05775 1.06595 1.07412 1.08225 1.09035 1.09841 1.10645 1.11444 1.1224 1.13033 1.13822 1.14607 1.15388 1.16166 1.1694 1.17709 1.18475 1.19237 1.19995 1.20749 1.21498 1.22244 1.22985 1.23722 1.24454 1.25182 1.25906 1.26625 1.2734 0.280502 0.287559 0.29457 0.301536 0.308454 0.315325 0.32215 0.328926 0.335655 0.342335 0.348967 0.35555 0.362084 0.368568 0.375003 0.381388 0.387722 0.394004 0.400235 0.406415 0.412544 0.418621 0.424647 0.430621 0.436542 0.442412 0.448228 0.453993 0.459704 0.465363 0.470969 0.476521 0.48202 0.487466 0.492858 0.498196 0.503481 0.508712 0.513889 0.519011 0.524077 0.52909 0.534049 0.538953 0.543804 0.5486 0.553342 0.55803 0.562664 0.567243 0.571769 0.57624 0.580658 0.585021 0.589331 0.593587 0.597789 0.601938 0.606033 0.610075 0.614064 0.617999 0.621879 0.625706 0.629481 0.633203 0.636873 0.640491 0.644057 0.647571 0.651033 0.654445 0.657805 0.661114 0.664372 0.66758 0.670739 0.673847 0.676905 0.679914 0.682875 ; #X array cos-out 441 float 1; #A 0 -0.911256 -0.913872 -0.916365 -0.918789 -0.921097 -0.923342 -0.925486 -0.927564 -0.92956 -0.931483 -0.93335 -0.935129 -0.936867 -0.938528 -0.940137 -0.941707 -0.943197 -0.944657 -0.946072 -0.947426 -0.948755 -0.95004 -0.951276 -0.952491 -0.953672 -0.954806 -0.955924 -0.957024 -0.958071 -0.959106 -0.960132 -0.961119 -0.962086 -0.963047 -0.963993 -0.964903 -0.965811 -0.966718 -0.967595 -0.968461 -0.969329 -0.970192 -0.971025 -0.971863 -0.972707 -0.973527 -0.974343 -0.975168 -0.975986 -0.976786 -0.977597 -0.978414 -0.979202 -0.980003 -0.980816 -0.981596 -0.982391 -0.983194 -0.983968 -0.984757 -0.985543 -0.98631 -0.987093 -0.987851 -0.98861 -0.98937 -0.990102 -0.990852 -0.991557 -0.992275 -0.99296 -0.993642 -0.994295 -0.994935 -0.995544 -0.996137 -0.996687 -0.997227 -0.997705 -0.998173 -0.998575 -0.998944 -0.999273 -0.999527 -0.999743 -0.999894 -0.999966 -0.999981 -0.999927 -0.999765 -0.999526 -0.999202 -0.998785 -0.99824 -0.997586 -0.996816 -0.995923 -0.994897 -0.99373 -0.992413 -0.990934 -0.989283 -0.987458 -0.985449 -0.983247 -0.980843 -0.978222 -0.975372 -0.972288 -0.968961 -0.965377 -0.96153 -0.95741 -0.952995 -0.948265 -0.943231 -0.937881 -0.932182 -0.926128 -0.919728 -0.912938 -0.905762 -0.898197 -0.890198 -0.881799 -0.87293 -0.863637 -0.853855 -0.843612 -0.832873 -0.821629 -0.809886 -0.797593 -0.784764 -0.771394 -0.757466 -0.742953 -0.727864 -0.712189 -0.695918 -0.679041 -0.661549 -0.643437 -0.624697 -0.605324 -0.585314 -0.564664 -0.543374 -0.521441 -0.498869 -0.475658 -0.451811 -0.427334 -0.402219 -0.376482 -0.350131 -0.323174 -0.295626 -0.267508 -0.238824 -0.2096 -0.179853 -0.149603 -0.118875 -0.0876953 -0.0560885 -0.0240874 0.00827867 0.040974 0.0739643 0.107208 0.140666 0.174297 0.208056 0.241893 0.275757 0.309603 0.343385 0.377036 0.410498 0.443712 0.476616 0.509148 0.541242 0.572835 0.603858 0.634244 0.66391 0.692797 0.720837 0.747961 0.774084 0.799131 0.823051 0.845758 0.867169 0.887248 0.90588 0.923037 0.938628 0.952605 0.964885 0.975433 0.984153 0.991037 0.995988 0.998986 0.999997 0.998938 0.995807 0.990576 0.983211 0.973668 0.961961 0.948075 0.932007 0.913757 0.893328 0.87073 0.845995 0.81915 0.790227 0.759268 0.726324 0.691452 0.654714 0.616181 0.57593 0.534037 0.490599 0.445716 0.399491 0.352033 0.303459 0.253886 0.203441 0.152259 0.100478 0.0482368 -0.00432081 -0.057045 -0.109786 -0.162386 -0.214696 -0.266564 -0.317814 -0.368301 -0.417864 -0.466337 -0.513584 -0.559424 -0.603732 -0.646344 -0.687125 -0.725934 -0.762631 -0.797101 -0.829205 -0.858847 -0.8859 -0.91028 -0.931885 -0.950636 -0.966466 -0.97929 -0.989092 -0.995773 -0.999358 -0.999773 -0.997042 -0.991152 -0.982099 -0.969941 -0.954655 -0.936332 -0.915008 -0.890737 -0.863625 -0.833713 -0.801132 -0.765979 -0.728348 -0.688394 -0.646219 -0.601975 -0.555817 -0.507869 -0.45832 -0.407319 -0.355036 -0.301652 -0.247328 -0.192258 -0.136617 -0.0805873 -0.0243537 0.0319027 0.0879985 0.143752 0.198986 0.253526 0.307194 0.359834 0.411262 0.461345 0.509907 0.556823 0.601935 0.645131 0.686266 0.725245 0.761935 0.796272 0.828125 0.857461 0.884158 0.9082 0.929508 0.948044 0.9638 0.976698 0.986778 0.99402 0.998404 0.999981 0.998763 0.994751 0.988022 0.978621 0.966582 0.95197 0.93487 0.915357 0.893512 0.869405 0.843139 0.814817 0.784538 0.752408 0.718535 0.68303 0.646007 0.607581 0.567872 0.526996 0.485074 0.442227 0.398573 0.354231 0.30932 0.263957 0.218256 0.172326 0.126282 0.0802317 0.0342922 -0.0114471 -0.0568861 -0.101931 -0.146492 -0.190474 -0.233802 -0.276394 -0.318171 -0.359072 -0.399015 -0.437958 -0.475821 -0.512573 -0.548149 -0.582512 -0.615632 -0.647446 -0.677951 -0.707119 -0.734897 -0.761296 -0.786293 -0.80988 -0.83204 -0.852773 -0.872085 -0.88998 -0.906462 -0.921542 -0.935229 -0.94754 -0.95849 -0.968102 -0.976397 -0.9834 -0.989136 -0.993613 -0.996882 -0.998976 -0.99993 -0.999748 -0.998484 -0.996188 -0.99286 -0.988563 -0.983336 -0.977186 -0.970195 -0.962347 -0.953732 -0.944344 -0.934249 -0.923482 -0.912051 -0.900028 -0.887441 -0.874296 -0.860659 -0.846562 -0.832035 -0.817101 -0.801792 -0.786149 -0.770201 -0.753977 -0.737507 -0.720826 -0.703952 -0.686912 -0.669731 -0.652436 -0.635043 -0.617572 -0.600055 -0.582513 -0.564966 -0.547418 -0.529898 -0.512429 -0.495016 -0.477676 -0.460438 -0.443287 -0.426265 -0.409364; #X coords 0 1 440 -1 200 140 1; #X restore 509 190 graph; #X obj 213 246 tabwrite~ phase-out; #X obj 213 273 tabwrite~ cos-out; #X msg 213 221 bang; #X text 260 220 <-- graph them; #X obj 126 296 output~; #X obj 127 270 hip~; #X text 408 98 ramped to avoid; #X text 407 114 clicks.); #X text 407 82 (the index is; #X text 435 704 updated for Pd version 0.37; #X text 21 588 The "modulation" index \, which in true FM is in units of Hertz \, is dimensionless for phase moduation. "Good" values tend to be between 0 and 1... in this patch the index is in hundredths. ; #X connect 0 0 5 1; #X connect 1 0 6 0; #X connect 2 0 0 1; #X connect 3 0 26 0; #X connect 4 0 35 0; #X connect 4 0 39 0; #X connect 5 0 4 0; #X connect 5 0 34 0; #X connect 6 0 0 0; #X connect 7 0 2 0; #X connect 8 0 9 0; #X connect 9 0 7 0; #X connect 26 0 5 0; #X connect 28 0 27 0; #X connect 36 0 34 0; #X connect 36 0 35 0; #X connect 39 0 38 0; #X connect 39 0 38 1;