aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2005-05-05 20:35:49 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2005-05-05 20:35:49 +0000
commit620adaeeb584611e6a13932083bf388f8a26b99f (patch)
tree284ed10a84e8df814ebf9145d438ba4d148314d7
parentc57d0f27495886454f037277366d69b809955bbb (diff)
sketches of ideas for easy to play patchecs to illustrate concepts
svn path=/trunk/; revision=2904
-rw-r--r--doc/tutorials/playnow/additive.pd106
-rw-r--r--doc/tutorials/playnow/draw_sound.pd197
-rw-r--r--doc/tutorials/playnow/filter.sweep.pd212
-rw-r--r--doc/tutorials/playnow/vibrato.pd176
-rw-r--r--doc/tutorials/playnow/voice-am.pd75
-rw-r--r--doc/tutorials/playnow/voice-fm.pd66
-rw-r--r--doc/tutorials/playnow/waveform_draw.pd115
7 files changed, 947 insertions, 0 deletions
diff --git a/doc/tutorials/playnow/additive.pd b/doc/tutorials/playnow/additive.pd
new file mode 100644
index 00000000..c326cf00
--- /dev/null
+++ b/doc/tutorials/playnow/additive.pd
@@ -0,0 +1,106 @@
+#N canvas 237 83 750 557 10;
+#X text 87 15 ADDITIVE SYNTHESIS;
+#X text 32 73 This patch demonstrates using an abstraction \, "partial"
+\, to make a simple additive synthesis instrument.;
+#X text 28 114 Partial takes as arguments an amplitude \, a relative
+frequency \, a detuning frequency \, and a relative duration. You set
+absolute duration and pitch using the controls below. Hit hte trigger
+to make sound.;
+#N canvas 47 404 460 310 guts 0;
+#X floatatom 59 226 0 0 0 0 - - -;
+#N canvas 159 26 536 283 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 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 obj 425 153 t b;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 0;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 7 1 26 0;
+#X connect 8 1 4 1;
+#X connect 9 0 23 0;
+#X connect 10 0 1 1;
+#X connect 10 0 8 0;
+#X connect 11 0 9 0;
+#X connect 11 0 17 0;
+#X connect 13 0 21 0;
+#X connect 14 0 16 0;
+#X connect 14 0 19 0;
+#X connect 17 0 18 0;
+#X connect 20 0 21 1;
+#X connect 21 0 22 0;
+#X connect 21 0 22 1;
+#X connect 23 0 20 0;
+#X connect 26 0 5 0;
+#X restore 21 253 pd output;
+#X msg 97 226 MUTE;
+#X text 131 225 <-- output amplitude;
+#X obj 21 195 catch~ sum;
+#X obj 23 112 ../../3.audio.examples/partial 1.8 0.94 0 0.55;
+#X obj 22 87 ../../3.audio.examples/partial 1 0.92 0 0.65;
+#X obj 23 63 ../../3.audio.examples/partial 1 0.56 1 0.9;
+#X obj 23 39 ../../3.audio.examples/partial 0.67 0.56 0 1;
+#X connect 0 0 1 1;
+#X connect 1 0 0 0;
+#X connect 2 0 1 2;
+#X connect 4 0 1 0;
+#X restore 433 21 pd guts;
+#X obj 274 218 grid grid5 200 0 199 200 0 199 1 1 1 10 10 0 0;
+#X obj 467 424 * 40;
+#X obj 275 447 nbx 5 18 -1e+37 1e+37 0 0 frequency empty frequency
+-8 26 1 12 -233017 -1 -1 0 256;
+#X obj 467 447 nbx 5 18 -1e+37 1e+37 0 0 duration empty duration -2
+26 1 12 -233017 -1 -1 7960 256;
+#X obj 549 24 vsl 22 200 0 150 0 0 master-lvl empty volume -9 -8 1
+8 -225271 -1 -1 0 1;
+#X obj 63 404 bng 55 250 50 0 trigger empty trigger 0 -9 1 10 -24198
+-1 -1;
+#X text 72 370 click for one;
+#X msg 79 271 stop;
+#X obj 44 268 bng 25 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 63 306 metro 1500;
+#X obj 192 212 vsl 25 128 30 3000 0 0 empty empty empty 0 -8 1 8 -262131
+-1 -1 0 1;
+#X text 44 241 click for many;
+#X obj 275 423 * 20;
+#X text 10 519 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 227 533 released under the GNU GPL;
+#X text 421 520 $Revision: 1.1 $$Date: 2005-05-05 20:35:48 $;
+#X text 422 533 $Author: eighthave $;
+#X connect 4 0 16 0;
+#X connect 4 1 5 0;
+#X connect 5 0 7 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 0;
+#X connect 13 0 9 0;
+#X connect 14 0 13 1;
+#X connect 16 0 6 0;
diff --git a/doc/tutorials/playnow/draw_sound.pd b/doc/tutorials/playnow/draw_sound.pd
new file mode 100644
index 00000000..dbbc52ce
--- /dev/null
+++ b/doc/tutorials/playnow/draw_sound.pd
@@ -0,0 +1,197 @@
+#N canvas 119 39 861 618 10;
+#N canvas 0 22 450 300 graph9 0;
+#X array draw_waveform 515 float 1;
+#A 0 0.312861 0.304105 0.295348 0.286591 0.277835 0.269078 0.260321
+0.251565 0.242808 0.234051 -0.0103345 0.0330935 0.0765215 0.11995 0.163378
+0.206806 0.250234 0.293662 0.288842 0.284023 0.279204 0.274385 0.269565
+0.264746 0.259927 0.255108 0.250289 0.245469 0.24065 0.235831 0.231012
+0.226193 0.221373 0.216554 0.211735 0.206916 0.202096 0.197277 0.192458
+0.187639 0.18282 0.178 0.173181 0.168362 0.163543 0.158724 0.153904
+0.149085 0.144266 0.139447 0.134627 0.129808 0.124989 0.12017 0.115351
+0.110531 0.105712 0.100893 0.0960738 0.0912545 0.0864353 0.0816161
+0.0767969 0.0719777 0.0671585 0.0623393 0.05752 0.0527008 0.0478816
+0.0430624 0.0382432 0.033424 0.0286048 0.0237855 0.0189663 -0.0503341
+-0.0432675 -0.0362009 -0.0291343 -0.0220678 -0.0150012 -0.0079346 -0.000868028
+0.00619855 0.0132651 0.0203317 0.0273983 0.0344649 0.0415314 0.048598
+0.0556646 0.0627311 0.0697977 0.0768643 0.0839309 0.0909975 0.098064
+0.105131 0.112197 0.119264 0.12633 0.133397 0.140464 0.14753 0.154597
+0.161663 0.16873 0.175796 0.182863 0.18993 0.196996 0.204063 0.211129
+0.218196 0.225262 0.232329 0.239396 0.246462 0.253529 0.260595 0.267662
+0.274728 0.281795 0.288862 0.295928 0.302995 0.310061 0.317128 0.324195
+0.331261 0.338328 0.345394 0.352461 0.359527 0.366594 0.37366 0.371097
+0.368534 0.365971 0.363408 0.360845 0.358282 0.355718 0.353155 0.350592
+0.348029 0.345466 0.342903 0.34034 0.337777 0.335214 0.332651 0.330088
+0.327525 0.324962 0.322399 0.319836 0.317273 0.31471 0.0296649 0.0333448
+0.0370248 0.0407047 0.0443847 0.0480646 0.0517446 0.0554245 0.0591045
+0.0627844 0.0664644 0.0701443 0.0738243 0.0775043 0.0811842 0.0848642
+0.0885441 0.0922241 0.095904 0.099584 0.103264 0.106944 0.110624 0.114304
+0.117984 0.121664 0.125344 0.129024 0.132704 0.136383 0.140063 0.143743
+0.147423 0.151103 0.154783 0.158463 0.162143 0.165823 0.169503 0.173183
+0.176863 0.180543 0.184223 0.187903 0.191583 0.195263 0.198943 0.202623
+0.206302 0.557658 0.528659 0.499659 0.470659 0.44166 0.41266 0.38366
+0.354661 0.325661 0.320895 0.316129 0.311363 0.306598 0.301832 0.297066
+0.2923 0.287534 0.282768 0.278002 0.273236 0.26847 0.263705 0.258939
+0.254173 0.249407 0.244641 0.239875 0.235109 0.230343 0.225577 0.220811
+0.216046 0.21128 0.206514 0.201748 0.196982 0.192216 0.18745 0.182684
+0.177918 0.173152 0.168387 0.163621 0.158855 0.154089 0.149323 0.144557
+0.139791 0.135025 0.130259 0.125493 0.120728 0.115962 0.111196 0.10643
+0.101664 0.0968981 0.0921322 0.0873663 0.0826004 0.0778345 0.0730686
+0.0683027 0.0635368 0.0587709 0.054005 0.0492391 0.0444732 0.0397073
+0.0349414 0.0301755 0.0254096 0.0206437 0.0158778 0.0111119 0.00634605
+0.00158015 -0.00318574 -0.00795164 -0.0127175 -0.0174834 -0.0222493
+-0.0270152 -0.0317811 -0.036547 -0.0413129 -0.0460788 -0.0508447 -0.0556106
+-0.0603765 -0.0651424 -0.0699083 -0.0746742 -0.0794401 -0.084206 -0.0889719
+-0.0937378 -0.0985037 -0.10327 -0.108035 -0.112801 -0.117567 -0.122333
+0.265209 0.268605 0.272002 0.275398 0.278794 0.28219 0.285586 0.288982
+0.292379 0.295775 0.299171 0.302567 0.305963 0.30936 0.312756 0.316152
+0.319548 0.322944 0.32634 0.329737 0.333133 0.336529 0.339925 0.343321
+0.346718 0.350114 0.35351 0.356906 0.360302 0.363698 0.367095 0.370491
+0.373887 0.377283 0.380679 0.384076 0.387472 0.390868 0.394264 0.39766
+0.538876 0.547571 0.556267 0.564963 0.573658 -0.166506 -0.171724 -0.176941
+-0.182158 -0.187376 -0.192593 -0.19781 -0.203028 -0.208245 -0.213462
+-0.21868 -0.223897 -0.229114 -0.234332 -0.239549 -0.244766 -0.249984
+-0.255201 -0.260418 -0.265636 -0.270853 -0.27607 -0.281288 -0.286505
+-0.291722 -0.296939 -0.302157 -0.307374 -0.312591 -0.317809 -0.323026
+-0.328243 -0.333461 -0.338678 -0.343895 -0.349113 -0.35433 -0.34825
+-0.34217 -0.33609 -0.33001 -0.323931 -0.317851 -0.311771 -0.305691
+-0.299611 -0.293531 -0.287451 -0.281371 -0.275291 -0.269211 -0.263131
+-0.257051 -0.250972 -0.244892 -0.238812 -0.232732 -0.226652 -0.220572
+-0.214492 -0.208412 -0.202332 -0.196252 -0.190172 -0.184092 -0.178012
+-0.171933 -0.165853 -0.159773 -0.153693 -0.147613 -0.141533 -0.135453
+-0.129373 -0.123293 -0.117213 -0.111133 -0.105053 -0.0989734 -0.0928935
+-0.0868136 -0.0807337 -0.0746537 -0.0685738 -0.0624939 -0.056414 -0.050334
+-0.0442541 -0.0381742 -0.0320943 -0.0260144 -0.0199344 -0.0138545 -0.00777459
+-0.00169467 0.00438525 0.0104652 0.0165451 0.022625 0.0287049 0.0347849
+0.0408648 0.0469447 0.0530246 0.0591046 0.0651845 0.0712644 0.0773443
+0.0834242 0.0895042 0.0955841 0.101664 0.224145 0.232835 0.241524 0.250214
+0.258903 0.267593 0.276282 0.284972 0.293662 -0.248492 -0.254469 -0.260446
+-0.266423 -0.2724 -0.278377 -0.284354 -0.290331 -0.280045 -0.26976
+-0.259474 -0.249189 -0.238903 -0.228617 -0.218332 -0.208046 -0.197761
+-0.187475 -0.177189 -0.166904 -0.156618 -0.146333 -0.136047 -0.125762
+-0.115476 -0.10519 -0.0949048 -0.0846192 -0.0743336 -0.064048 -0.0537625
+-0.0434769 -0.0331913 -0.0229057 -0.0126201 -0.00233454 -0.0200942
+-0.0151342;
+#X coords 0 1 514 -1 515 200 1;
+#X restore 134 5 graph;
+#X obj 641 412 tabosc4~ draw_waveform;
+#X obj 641 522 *~;
+#X obj 630 549 dac~;
+#N canvas 0 22 450 300 graph10 0;
+#X array draw_pitch 131 float 1;
+#A 0 327.18 327.18 327.18 327.18 337.17 357.151 372.136 402.107 487.024
+541.97 626.887 656.858 671.843 706.809 721.794 736.78 751.765 766.75
+781.736 796.721 826.692 851.667 891.628 906.614 911.609 916.604 926.594
+936.584 946.575 951.57 961.56 966.555 966.555 966.555 685.359 566.946
+574.666 582.385 590.105 597.825 605.544 586.926 596.462 605.999 615.535
+625.071 634.607 644.143 653.679 663.215 672.751 682.288 691.824 691.574
+846.672 776.741 726.79 676.838 851.667 641.873 729.287 636.877 561.951
+524.487 558.204 591.921 649.365 706.809 791.726 811.707 777.99 744.272
+710.555 676.838 629.385 581.931 541.97 502.009 800.051 743.44 686.829
+618.562 590.256 561.951 507.004 821.697 769.248 716.799 676.838 636.877
+596.917 556.956 516.995 477.034 377.131 536.975 556.956 651.863 631.882
+561.951 526.985 541.97 586.926 631.882 631.882 610.237 588.591 566.946
+521.99 596.917 641.873 601.912 536.975 497.014 621.892 601.912 570.692
+539.473 508.253 477.034 427.083 561.951 531.98 526.985 586.926 541.97
+531.98 571.941 581.931 573.606 586.926;
+#X coords 0 1000 130 1 300 200 1;
+#X restore 134 352 graph;
+#X obj 641 393 tabosc4~ draw_pitch;
+#X obj 644 369 hsl 128 18 0.01 50 1 0 empty empty pitch_scan_rate -2
+-6 1 14 -225233 -1 -1 0 0;
+#X obj 790 19 vsl 22 200 0.011 150 1 0 master-lvl empty amplitude -9
+-8 1 8 -225271 -1 -1 0 0;
+#X obj 657 486 r master-lvl;
+#X obj 641 469 *~;
+#N canvas 0 22 450 300 graph11 0;
+#X array draw_amplitude 515 float 1;
+#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0142856
+-0.0367343 -0.059183 -0.0816318 -0.104081 -0.126529 -0.148978 -0.171427
+-0.195236 -0.219045 -0.242855 -0.25714 -0.271426 -0.271426 -0.299997
+-0.328568 -0.357139 -0.379758 -0.402377 -0.424995 -0.447614 -0.470233
+-0.492852 -0.515471 -0.53809 -0.560708 -0.583327 -0.605946 -0.628565
+-0.646025 -0.663485 -0.680945 -0.698406 -0.715866 -0.733326 -0.750786
+-0.768246 -0.785706 -0.799992 -0.814277 -0.828563 -0.842848 -0.857134
+-0.871419 -0.885705 -0.899991 -0.914276 -0.931419 -0.948562 -0.965704
+-0.982847 -0.99999 -1.01428 -1.01427 -1.01202 -1.00976 -1.00751 -1.00525
+-1.003 -1.00074 -0.998486 -0.99623 -0.993975 -0.991719 -0.989463 -0.987208
+-0.984952 -0.982696 -0.980441 -0.978185 -0.97593 -0.973674 -0.971418
+-0.968897 -0.966376 -0.963855 -0.961334 -0.958813 -0.956292 -0.953771
+-0.95125 -0.948729 -0.946208 -0.943687 -0.941167 -0.938646 -0.936125
+-0.933604 -0.931083 -0.928562 -0.926041 -0.92352 -0.920999 -0.918478
+-0.915957 -0.913436 -0.910915 -0.908394 -0.905873 -0.903352 -0.900831
+-0.89831 -0.895789 -0.893268 -0.890747 -0.888226 -0.885705 -0.881896
+-0.878086 -0.874277 -0.870467 -0.866658 -0.862848 -0.859039 -0.855229
+-0.85142 -0.84761 -0.843801 -0.839991 -0.836182 -0.832372 -0.828563
+-0.824991 -0.82142 -0.817849 -0.814277 -0.808563 -0.802849 -0.797135
+-0.79142 -0.785706 -0.779992 -0.774278 -0.768563 -0.762849 -0.757135
+-0.751421 -0.745707 -0.739992 -0.734278 -0.728564 -0.72285 -0.717135
+-0.711421 -0.705707 -0.699993 -0.694278 -0.688564 -0.68285 -0.677136
+-0.671421 -0.661898 -0.652374 -0.64285 -0.633327 -0.623803 -0.614279
+-0.602375 -0.59047 -0.578565 -0.566661 -0.554756 -0.542852 -0.527995
+-0.513138 -0.498281 -0.483424 -0.468567 -0.45371 -0.438853 -0.423996
+-0.409139 -0.394282 -0.379425 -0.364568 -0.349711 -0.334854 -0.319997
+-0.30514 -0.290283 -0.275426 -0.260569 -0.245712 -0.230855 -0.215998
+-0.201141 -0.186284 -0.171427 -0.15824 -0.145053 -0.131867 -0.11868
+-0.105493 -0.0923068 -0.0791201 -0.0659334 -0.0527467 -0.0395601 -0.0263734
+-0.0131867 -2.63636e-08 0.0131866 0.0263733 0.03956 0.0527467 0.0659333
+0.07912 0.0923067 0.105493 0.11868 0.131867 0.145053 0.15824 0.171427
+0.178284 0.185141 0.191998 0.198855 0.205712 0.212569 0.219426 0.226283
+0.23314 0.239998 0.246855 0.253712 0.260569 0.267426 0.274283 0.28114
+0.287997 0.294854 0.301711 0.308568 0.315425 0.322282 0.329139 0.335997
+0.342854 0.349711 0.356568 0.363425 0.370282 0.377139 0.383996 0.390853
+0.39771 0.404567 0.411424 0.418281 0.425138 0.431995 0.438853 0.44571
+0.452567 0.459424 0.466281 0.473138 0.479995 0.486852 0.493709 0.500566
+0.507423 0.51428 0.518089 0.521899 0.525708 0.529518 0.533327 0.537137
+0.540946 0.544756 0.548566 0.552375 0.556185 0.559994 0.563804 0.567613
+0.571423 0.578565 0.585708 0.588883 0.592057 0.595232 0.598407 0.601581
+0.604756 0.60793 0.611105 0.61428 0.617454 0.620629 0.623803 0.626978
+0.630152 0.633327 0.636501 0.639676 0.64285 0.64285 0.64285 0.64285
+0.64285 0.64285 0.64285 0.64285 0.64285 0.639843 0.636835 0.633828
+0.63082 0.627813 0.624805 0.621798 0.61879 0.615783 0.612775 0.609768
+0.60676 0.603753 0.600745 0.597738 0.594731 0.591723 0.588716 0.585708
+0.579215 0.572721 0.566228 0.559734 0.553241 0.546748 0.540254 0.533761
+0.527267 0.520774 0.51428 0.505524 0.496769 0.488013 0.479257 0.470502
+0.461746 0.45299 0.444235 0.435479 0.426723 0.417968 0.409212 0.400456
+0.391701 0.382945 0.374189 0.365434 0.356678 0.347922 0.339167 0.330411
+0.321655 0.3129 0.304144 0.295389 0.286633 0.277877 0.269122 0.260366
+0.25161 0.242855 0.235712 0.228569 0.214283 0.192855 0.171427 0.171427
+0.164284 0.157141 0.149998 0.142856 0.135713 0.12857 0.114285 0.099999
+0.0857134 0.0714279 0.0602035 0.0489791 0.0377547 0.0265304 0.015306
+0.00408162 -0.00714275 -0.0183671 -0.0295915 -0.0408159 -0.0520402
+-0.0632646 -0.074489 -0.0857134 -0.0969377 -0.108162 -0.119386 -0.130611
+-0.141835 -0.15306 -0.164284 -0.175508 -0.186733 -0.197957 -0.209181
+-0.220406 -0.23163 -0.242854 -0.248568 -0.254283 -0.259997 -0.265711
+-0.271425 -0.277139 -0.282854 -0.288568 -0.294282 -0.299996 -0.305711
+-0.311425 -0.317139 -0.322853 -0.328568 -0.334282 -0.339996 -0.34571
+-0.351425 -0.357139 -0.362853 -0.368567 -0.374282 -0.379996 -0.38571
+-0.391424 -0.397138 -0.402853 -0.408567 -0.414281 -0.419995 -0.42571
+-0.431424 -0.437138 -0.442852 -0.448567 -0.454281 -0.459995 -0.465709
+-0.471424 -0.477138 -0.482852 -0.488566 -0.494281 -0.499995 -0.499995
+-0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995
+-0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995
+-0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995
+-0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995 -0.499995
+-0.499995 -0.499995 -0.342854;
+#X coords 0 1 514 -1 515 140 1;
+#X restore 134 209 graph;
+#X obj 657 451 tabosc4~ draw_amplitude;
+#X obj 491 433 hsl 128 18 0.01 50 1 0 empty empty amplitude_scan_rate
+-2 -6 1 14 -57297 -1 -1 0 0;
+#X obj 700 27 nbx 3 18 -1e+37 1e+37 0 0 empty master-lvl amplitude
+-9 -6 1 14 -124831 -1 -1 0 256;
+#X obj 657 504 / 100;
+#X text 60 579 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 277 593 released under the GNU GPL;
+#X text 471 580 $Revision: 1.1 $$Date: 2005-05-05 20:35:49 $;
+#X text 472 593 $Author: eighthave $;
+#X connect 1 0 9 0;
+#X connect 2 0 3 1;
+#X connect 2 0 3 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
+#X connect 8 0 14 0;
+#X connect 9 0 2 0;
+#X connect 11 0 9 1;
+#X connect 12 0 11 0;
+#X connect 14 0 2 1;
diff --git a/doc/tutorials/playnow/filter.sweep.pd b/doc/tutorials/playnow/filter.sweep.pd
new file mode 100644
index 00000000..28bb76ce
--- /dev/null
+++ b/doc/tutorials/playnow/filter.sweep.pd
@@ -0,0 +1,212 @@
+#N canvas 171 51 741 541 12;
+#X text 35 6 SWEEPING FILTERS;
+#X text 13 28 If you want actively changing center frequencies \, use
+"vcf~" instead of "bp~". The vcf~ module takes an audio signal to set
+center frequency. (Q is still set by messages though.) Vcf is somewhat
+more expensive than bp~.;
+#X text 13 95 Note the effect of negative and positive sweep speed.
+;
+#X obj 374 152 grid grid6 200 0 199 200 0 199 1 1 1 10 10 0 0;
+#X obj 374 357 / 2;
+#X obj 688 30 vsl 22 200 0 100 0 0 master-lvl empty volume -9 -8 1
+8 -225271 -1 -1 0 1;
+#N canvas 0 22 822 508 guts 0;
+#X floatatom 144 438 0 0 0 0 - - -;
+#N canvas 159 26 497 268 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 115 466 pd output;
+#X msg 173 438 MUTE;
+#X text 212 437 <-- output amplitude;
+#X obj 115 111 line~;
+#X floatatom 115 63 0 0 0 0 - - -;
+#X obj 115 87 pack 0 100;
+#X obj 115 159 phasor~;
+#X obj 115 135 tabread4~ mtof;
+#X obj 248 283 +~;
+#X obj 264 260 line~;
+#X obj 264 236 pack 0 100;
+#X floatatom 264 212 0 0 0 0 - - -;
+#X floatatom 248 63 0 0 0 0 - - -;
+#X floatatom 271 137 0 0 0 0 - - -;
+#X obj 115 39 r pitch;
+#X obj 271 113 r depth;
+#X obj 248 39 r speed;
+#X obj 264 188 r offset;
+#X obj 195 364 r q;
+#X floatatom 195 388 0 0 0 0 - - -;
+#X obj 115 383 vcf~;
+#X obj 115 407 hip~ 5;
+#X obj 248 162 *~ 0;
+#X obj 248 87 phasor~ 0;
+#X obj 248 307 tabread4~ mtof;
+#X text 234 389 <-- Q (selectivity);
+#X text 125 176 sawtooth;
+#X text 124 190 oscillator;
+#X text 302 66 <-- sweep speed;
+#X text 339 88 LFO for sweep;
+#X text 325 140 <-- sweep depth;
+#X text 311 214 <-- base center frequency;
+#X text 292 282 add base to sweep;
+#X text 376 306 convert to Hz.;
+#X text 152 64 <-- pitch;
+#X obj 565 31 loadbang;
+#N canvas 0 22 600 392 conversion-tables 0;
+#N canvas 0 22 450 300 graph1 0;
+#X array dbtorms 123 float 1;
+#A 0 0 0 1.25893e-05 1.41254e-05 1.58489e-05 1.77828e-05 1.99526e-05
+2.23872e-05 2.51189e-05 2.81838e-05 3.16228e-05 3.54813e-05 3.98107e-05
+4.46684e-05 5.01187e-05 5.62341e-05 6.30957e-05 7.07946e-05 7.94328e-05
+8.91251e-05 0.0001 0.000112202 0.000125893 0.000141254 0.000158489
+0.000177828 0.000199526 0.000223872 0.000251189 0.000281838 0.000316228
+0.000354813 0.000398107 0.000446684 0.000501187 0.000562341 0.000630957
+0.000707946 0.000794328 0.000891251 0.001 0.00112202 0.00125893 0.00141254
+0.00158489 0.00177828 0.00199526 0.00223872 0.00251189 0.00281838 0.00316228
+0.00354813 0.00398107 0.00446684 0.00501187 0.00562341 0.00630957 0.00707946
+0.00794328 0.00891251 0.01 0.0112202 0.0125893 0.0141254 0.0158489
+0.0177828 0.0199526 0.0223872 0.0251189 0.0281838 0.0316228 0.0354813
+0.0398107 0.0446684 0.0501187 0.0562341 0.0630957 0.0707946 0.0794328
+0.0891251 0.1 0.112202 0.125893 0.141254 0.158489 0.177828 0.199526
+0.223872 0.251189 0.281838 0.316228 0.354813 0.398107 0.446684 0.501187
+0.562341 0.630957 0.707946 0.794328 0.891251 1 1.12202 1.25893 1.41254
+1.58489 1.77828 1.99526 2.23872 2.51189 2.81838 3.16228 3.54813 3.98107
+4.46684 5.01187 5.62341 6.30957 7.07946 7.94328 8.91251 10 11.2202
+12.5893;
+#X coords 0 10 123 0 200 100 1;
+#X restore 302 48 graph;
+#X text 504 141 0;
+#X text 506 41 10;
+#X text 321 151 ------ 123 samples ------;
+#N canvas 0 22 450 300 graph2 0;
+#X array mtof 130 float 1;
+#A 0 8.1758 8.66196 9.17702 9.72272 10.3009 10.9134 11.5623 12.2499
+12.9783 13.75 14.5676 15.4339 16.3516 17.3239 18.354 19.4454 20.6017
+21.8268 23.1247 24.4997 25.9565 27.5 29.1352 30.8677 32.7032 34.6478
+36.7081 38.8909 41.2034 43.6535 46.2493 48.9994 51.9131 55 58.2705
+61.7354 65.4064 69.2957 73.4162 77.7817 82.4069 87.3071 92.4986 97.9989
+103.826 110 116.541 123.471 130.813 138.591 146.832 155.563 164.814
+174.614 184.997 195.998 207.652 220 233.082 246.942 261.626 277.183
+293.665 311.127 329.628 349.228 369.994 391.995 415.305 440 466.164
+493.883 523.251 554.365 587.33 622.254 659.255 698.456 739.989 783.991
+830.609 880 932.328 987.767 1046.5 1108.73 1174.66 1244.51 1318.51
+1396.91 1479.98 1567.98 1661.22 1760 1864.66 1975.53 2093 2217.46 2349.32
+2489.02 2637.02 2793.83 2959.96 3135.96 3322.44 3520 3729.31 3951.07
+4186.01 4434.92 4698.64 4978.03 5274.04 5587.65 5919.91 6271.93 6644.88
+7040 7458.62 7902.13 8372.02 8869.84 9397.27 9956.06 10548.1 11175.3
+11839.8 12543.9 13289.8 14080;
+#X coords 0 12000 130 0 200 100 1;
+#X restore 309 225 graph;
+#X text 319 333 ------ 130 samples ------;
+#X text 518 318 0;
+#X text 520 218 12000;
+#X restore 498 177 pd conversion-tables;
+#X msg 565 55 \; pitch 48 \; speed -2 \; depth 27 \; offset 56 \; q
+2 \; dsp 1;
+#X connect 0 0 1 1;
+#X connect 1 0 0 0;
+#X connect 2 0 1 2;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 21 0;
+#X connect 8 0 7 0;
+#X connect 9 0 25 0;
+#X connect 10 0 9 1;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 24 0;
+#X connect 14 0 23 1;
+#X connect 15 0 5 0;
+#X connect 16 0 14 0;
+#X connect 17 0 13 0;
+#X connect 18 0 12 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 2;
+#X connect 21 0 22 0;
+#X connect 22 0 1 0;
+#X connect 23 0 9 0;
+#X connect 24 0 23 0;
+#X connect 25 0 21 1;
+#X connect 36 0 38 0;
+#X restore 576 23 pd guts;
+#X obj 57 151 grid grid7 200 0 199 200 0 199 1 1 1 10 10 0 0;
+#X obj 250 356 - 100;
+#X obj 57 379 s pitch;
+#X obj 250 401 s speed;
+#X obj 250 378 / 10;
+#X obj 57 356 / 2;
+#X obj 374 380 s depth;
+#X obj 567 379 s offset;
+#X obj 567 357 / 1;
+#X obj 621 157 vsl 22 200 0 4 0 0 q empty Q 3 -8 1 8 -261689 -1 -1
+0 1;
+#X obj 55 439 nbx 5 18 -1e+37 1e+37 0 0 empty pitch pitch 2 27 1 12
+-233017 -1 -1 0 256;
+#X obj 249 439 nbx 5 18 -1e+37 1e+37 0 0 empty speed speed 2 27 1 12
+-233017 -1 -1 9.9 256;
+#X obj 377 439 nbx 5 18 -1e+37 1e+37 0 0 empty depth depth 2 27 1 12
+-233017 -1 -1 0 256;
+#X obj 559 439 nbx 5 18 -1e+37 1e+37 0 0 empty offset offset 2 27 1
+12 -233017 -1 -1 199 256;
+#X obj 629 439 nbx 5 18 -1e+37 1e+37 0 0 empty q Q 2 27 1 12 -233017
+-1 -1 2 256;
+#X text 58 492 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 367 509 released under the GNU GPL;
+#X connect 3 0 4 0;
+#X connect 3 1 15 0;
+#X connect 4 0 13 0;
+#X connect 7 0 12 0;
+#X connect 7 1 8 0;
+#X connect 8 0 11 0;
+#X connect 11 0 10 0;
+#X connect 12 0 9 0;
+#X connect 15 0 14 0;
diff --git a/doc/tutorials/playnow/vibrato.pd b/doc/tutorials/playnow/vibrato.pd
new file mode 100644
index 00000000..a52d4eaf
--- /dev/null
+++ b/doc/tutorials/playnow/vibrato.pd
@@ -0,0 +1,176 @@
+#N canvas 365 22 632 541 12;
+#X text 71 6 PORTAMENTO AND VIBRATO;
+#N canvas 0 22 452 302 graph1 0;
+#X array array62 131 float 1;
+#A 0 0.970031 1 0.970031 0.881921 0.740952 0.555571 0.336891 0.0980184
+-0.146729 -0.382682 -0.595698 -0.773009 -0.88 -0.9 -0.92 -0.92 -0.85773
+-0.707109 -0.514106 -0.290288 -0.0490716 0.195086 0.427551 0.63439
+0.803205 0.86 0.88 0.88 0.88 0.84 0.82 0.471402 0.242986 6.63397e-06
+-0.242974 -0.471391 -0.671554 -0.831465 -0.941541 -0.995184 -0.989178
+-0.923883 -0.803213 -0.68 -0.42 -0.24 0.1 0.4 0.6 0.7071 0.857723 0.956937
+0.998795 0.980787 0.903994 0.773018 0.595708 0.382694 0.146742 -0.0980052
+-0.336878 -0.55556 -0.7 -0.8 -0.88 -0.88 -0.88 -0.84 -0.82 -0.555582
+-0.336903 -0.0980316 0.146716 0.38267 0.595687 0.773001 0.903983 0.980782
+0.998796 0.956945 0.857737 0.707119 0.514117 0.290301 0.0490849 -0.195073
+-0.427539 -0.63438 -0.803197 -0.923873 -0.989174 -0.995187 -0.94155
+-0.83148 -0.671573 -0.471414 -0.242999 -1.99019e-05 0.242961 0.471379
+0.671544 0.831458 0.88 0.9 0.9 0.88 0.803221 0.63441 0.08 -0.14 -0.28
+-0.48 -0.64 -0.72 -0.857717 -0.956933 -0.998794 -0.98079 -0.904 -0.773026
+-0.595719 -0.382706 -0.146755 0.097992 0.336866 0.555549 0.740934 0.881909
+0.970025 1 0.970038;
+#X coords 0 1 130 -1 200 100 1;
+#X restore 391 404 graph;
+#X text 11 32 Portamento can be treated as a special case of an ADSR
+envelope \, with 100 percent sustain. Vibrato is properly computed
+in units of pitch \, but it's also easy to add vibrato to the envelope--before
+raising it to the fourth power \, so that it acts pseudo-logarithmically.
+Rather than add to the ADSR output \, we multiply a signal which controls
+relative frequency. The relative frequency change is one plus an oscillator.
+;
+#N canvas 153 366 686 470 guts 0;
+#X obj 30 8 r trigger;
+#X floatatom 68 403 0 0 0 0 - - -;
+#N canvas 159 26 531 288 output 0;
+#X obj 351 166 t b;
+#X obj 351 114 f;
+#X obj 351 62 inlet;
+#X text 358 30 mute;
+#X obj 351 192 f;
+#X msg 442 185 0;
+#X msg 351 88 bang;
+#X obj 351 140 moses 1;
+#X obj 413 122 moses 1;
+#X obj 86 154 dbtorms;
+#X obj 413 96 r master-lvl;
+#X obj 86 44 r master-lvl;
+#X obj 351 218 s master-lvl;
+#X obj 24 163 inlet~;
+#X obj 207 42 inlet;
+#X text 207 19 level;
+#X obj 207 104 s master-lvl;
+#X msg 100 67 set \$1;
+#X obj 100 93 outlet;
+#X msg 222 66 \; pd dsp 1;
+#X obj 86 202 line~;
+#X obj 23 221 *~;
+#X obj 23 250 dac~;
+#X obj 86 178 pack 0 50;
+#X text 22 140 audio;
+#X obj 442 159 t b;
+#X obj 21 191 hip~ 1;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 0;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 7 1 25 0;
+#X connect 8 1 4 1;
+#X connect 9 0 23 0;
+#X connect 10 0 1 1;
+#X connect 10 0 8 0;
+#X connect 11 0 9 0;
+#X connect 11 0 17 0;
+#X connect 13 0 26 0;
+#X connect 14 0 16 0;
+#X connect 14 0 19 0;
+#X connect 17 0 18 0;
+#X connect 20 0 21 1;
+#X connect 21 0 22 0;
+#X connect 21 0 22 1;
+#X connect 23 0 20 0;
+#X connect 25 0 5 0;
+#X connect 26 0 21 0;
+#X restore 29 432 pd output;
+#X msg 105 403 MUTE;
+#X obj 30 268 *~;
+#X obj 30 296 *~;
+#X floatatom 65 99 5 0 100 0 - - -;
+#X floatatom 30 99 1 0 100 0 - - -;
+#X obj 29 347 +~ 0.3;
+#X obj 29 373 cos~;
+#X obj 29 321 osc~;
+#X obj 65 122 mtof;
+#X obj 65 147 sqrt;
+#X obj 65 172 sqrt;
+#X obj 30 238 *~;
+#X obj 239 218 +~ 1;
+#X obj 239 164 tabosc4~ array62;
+#X floatatom 239 108 5 0 0 0 - - -;
+#X obj 239 135 / 6;
+#X obj 239 192 *~;
+#X floatatom 393 145 5 0 0 0 - - -;
+#X text 238 243 since we'll multiply \,;
+#X text 237 258 vibrato output should;
+#X text 237 275 be centered at 1 \, not 0;
+#X text 278 194 multiply by vib depth;
+#X obj 393 172 / 6923;
+#X text 64 239 apply vibrato;
+#X text 68 267 fourth;
+#X text 71 283 power;
+#X text 99 351 waveform;
+#X text 98 331 simple;
+#X text 468 166 4/(exp(log(2)/1200)-1);
+#X text 472 147 conversion factor is;
+#X text 386 101 vibrato depth;
+#X text 385 118 in cents;
+#X text 236 67 vibrato speed;
+#X text 235 84 in Hertz;
+#X obj 30 197 ../../doc/3.audio.examples/adsr 0 100 200 100 300;
+#X obj 65 39 r pitch;
+#X obj 232 10 r vibrato-speed;
+#X obj 391 10 r vibrato-depth;
+#X obj 44 65 t b f;
+#X connect 0 0 7 0;
+#X connect 1 0 2 1;
+#X connect 2 0 1 0;
+#X connect 3 0 2 2;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 10 0;
+#X connect 6 0 11 0;
+#X connect 7 0 37 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X connect 10 0 8 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 37 1;
+#X connect 14 0 4 0;
+#X connect 14 0 4 1;
+#X connect 15 0 14 1;
+#X connect 16 0 19 0;
+#X connect 17 0 18 0;
+#X connect 18 0 16 0;
+#X connect 19 0 15 0;
+#X connect 20 0 25 0;
+#X connect 25 0 19 1;
+#X connect 37 0 14 0;
+#X connect 38 0 41 0;
+#X connect 39 0 17 0;
+#X connect 40 0 20 0;
+#X connect 41 0 7 0;
+#X connect 41 1 6 0;
+#X restore 491 32 pd guts;
+#X text 10 166 I made a table with 6 cycles of vibrato and made small
+changes with the mouse to get a not-exactly-repeating vibrato \, and
+thus have to divide vibrato frequency by 6 You can just use a sine
+or triangle wave if you prefer.;
+#X obj 581 35 vsl 22 200 0 100 0 0 master-lvl empty volume -9 -8 1
+8 -225271 -1 -1 0 1;
+#X obj 23 255 grid grid9 200 0 199 200 0 199 1 1 1 10 10 0 0;
+#X obj 25 487 nbx 5 18 -1e+37 1e+37 0 0 vibrato-speed empty speed 0
+26 1 12 -233017 -1 -1 0 256;
+#X obj 217 487 nbx 5 18 -1e+37 1e+37 0 0 vibrato-depth empty depth
+-2 26 1 12 -233017 -1 -1 5970 256;
+#X obj 392 296 tgl 55 0 trigger empty trigger 0 -9 1 10 -24198 -1 -1
+0 1;
+#X obj 291 259 vsl 22 200 0 127 0 0 pitch empty pitch 0 -9 1 8 -62784
+-1 -1 0 1;
+#X obj 25 463 * 0.2;
+#X obj 217 464 * 30;
+#X connect 6 0 11 0;
+#X connect 6 1 12 0;
+#X connect 11 0 7 0;
+#X connect 12 0 8 0;
diff --git a/doc/tutorials/playnow/voice-am.pd b/doc/tutorials/playnow/voice-am.pd
new file mode 100644
index 00000000..32aa8ec4
--- /dev/null
+++ b/doc/tutorials/playnow/voice-am.pd
@@ -0,0 +1,75 @@
+#N canvas 450 159 679 598 10;
+#X obj 246 34 adc~;
+#X obj 152 496 dac~;
+#X obj 72 106 fiddle~;
+#X obj 71 126 mtof;
+#X obj 159 223 osc~;
+#X floatatom 32 107 5 0 0 0 - - -;
+#X obj 155 467 *~;
+#X obj 172 448 r \$0-master-amp;
+#X obj 248 299 *~;
+#X obj 285 266 line~;
+#X obj 160 343 cos~;
+#X obj 160 323 +~;
+#X obj 285 243 pack 0 50;
+#X floatatom 285 195 0 0 0 0 - - -;
+#X obj 285 219 / 100;
+#X obj 549 24 vsl 22 200 0 1 0 0 \$0-master-amp empty volume -9 -8
+1 8 -225271 -1 -1 0 0;
+#X floatatom 129 105 5 0 0 0 - - -;
+#X obj 143 276 *~;
+#X obj 121 250 / 100;
+#X obj 91 212 - 55;
+#X obj 366 505 writesf~;
+#X msg 323 448 start;
+#X msg 384 468 stop;
+#X msg 366 419 open \$1;
+#X obj 367 342 +;
+#X floatatom 393 343 5 0 0 0 - - -;
+#X msg 365 319 1;
+#X obj 357 251 bng 25 250 50 0 empty empty empty 0 -6 0 8 -4033 -1
+-1;
+#X obj 358 287 t b b b;
+#X obj 342 412 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 367 379 makesymbol /Users/hans/Desktop/voice-fm-%s.wav;
+#X text 87 5 sing into the mic to control AM synthesis with your voice
+;
+#X text 17 539 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 236 555 released under the GNU GPL;
+#X connect 0 0 2 0;
+#X connect 0 0 8 0;
+#X connect 2 0 3 0;
+#X connect 2 0 5 0;
+#X connect 2 3 16 0;
+#X connect 2 3 19 0;
+#X connect 3 0 4 0;
+#X connect 4 0 17 1;
+#X connect 6 0 1 1;
+#X connect 6 0 1 0;
+#X connect 6 0 20 0;
+#X connect 7 0 6 1;
+#X connect 8 0 11 1;
+#X connect 9 0 8 1;
+#X connect 10 0 6 0;
+#X connect 11 0 10 0;
+#X connect 12 0 9 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 17 0 11 0;
+#X connect 18 0 17 0;
+#X connect 19 0 18 0;
+#X connect 21 0 20 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 25 0;
+#X connect 24 0 30 0;
+#X connect 25 0 24 1;
+#X connect 26 0 24 0;
+#X connect 27 0 28 0;
+#X connect 28 0 21 0;
+#X connect 28 1 26 0;
+#X connect 28 2 22 0;
+#X connect 30 0 29 0;
+#X connect 30 0 23 0;
diff --git a/doc/tutorials/playnow/voice-fm.pd b/doc/tutorials/playnow/voice-fm.pd
new file mode 100644
index 00000000..0f3b100d
--- /dev/null
+++ b/doc/tutorials/playnow/voice-fm.pd
@@ -0,0 +1,66 @@
+#N canvas 527 178 683 602 10;
+#X obj 72 16 adc~;
+#X obj 152 496 dac~;
+#X obj 72 103 fiddle~;
+#X obj 71 126 mtof;
+#X floatatom 32 107 5 0 0 0 - - -;
+#X obj 155 467 *~;
+#X obj 172 448 r \$0-master-amp;
+#X obj 549 24 vsl 22 200 0 1 0 0 \$0-master-amp empty volume -9 -8
+1 8 -225271 -1 -1 0 0;
+#X floatatom 129 105 5 0 0 0 - - -;
+#X obj 366 505 writesf~;
+#X msg 323 448 start;
+#X msg 384 468 stop;
+#X msg 366 419 open \$1;
+#X obj 367 342 +;
+#X floatatom 393 343 5 0 0 0 - - -;
+#X msg 365 319 1;
+#X obj 357 251 bng 25 250 50 0 empty empty empty 0 -6 0 8 -4033 -1
+-1;
+#X obj 358 287 t b b b;
+#X obj 342 412 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 367 379 makesymbol /Users/hans/Desktop/voice-fm-%s.wav;
+#X obj 119 299 osc~;
+#X obj 124 234 +~;
+#X obj 140 203 *~;
+#X obj 119 179 osc~;
+#X obj 17 187 phasor~;
+#X obj 157 164 * 5;
+#X obj 92 152 * 2;
+#X text 194 76 sing into the mic to control the FM synthesizer;
+#X text 17 539 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 236 555 released under the GNU GPL;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 2 3 8 0;
+#X connect 2 3 25 0;
+#X connect 3 0 24 0;
+#X connect 3 0 26 0;
+#X connect 5 0 1 1;
+#X connect 5 0 1 0;
+#X connect 5 0 9 0;
+#X connect 6 0 5 1;
+#X connect 10 0 9 0;
+#X connect 11 0 9 0;
+#X connect 12 0 9 0;
+#X connect 13 0 14 0;
+#X connect 13 0 19 0;
+#X connect 14 0 13 1;
+#X connect 15 0 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 10 0;
+#X connect 17 1 15 0;
+#X connect 17 2 11 0;
+#X connect 19 0 18 0;
+#X connect 19 0 12 0;
+#X connect 20 0 5 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 1;
+#X connect 23 0 22 0;
+#X connect 24 0 21 0;
+#X connect 25 0 22 1;
+#X connect 26 0 23 0;
diff --git a/doc/tutorials/playnow/waveform_draw.pd b/doc/tutorials/playnow/waveform_draw.pd
new file mode 100644
index 00000000..fdb65dc5
--- /dev/null
+++ b/doc/tutorials/playnow/waveform_draw.pd
@@ -0,0 +1,115 @@
+#N canvas 177 80 735 618 10;
+#N canvas 0 22 450 300 graph9 0;
+#X array draw_waveform 515 float 1;
+#A 0 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311
+0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311
+0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311
+0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0851311 0.0811311
+0.0771312 0.0744645 0.0744646 0.0728646 0.0712646 0.0696646 0.0680646
+0.0664646 0.0611314 0.0557981 0.0504649 0.042465 0.0367507 0.0310365
+0.0253223 0.0196081 0.0138939 0.00817968 0.00246547 -0.00553443 -0.0135343
+-0.0199342 -0.0263342 -0.0327341 -0.039134 -0.0455339 -0.0535338 -0.0615337
+-0.0695336 -0.0775335 -0.0855334 -0.101533 -0.101533 -0.101533 -0.106866
+-0.1122 -0.117533 -0.121533 -0.125533 -0.133533 -0.141533 -0.141533
+-0.157532 -0.157532 -0.157532 -0.162866 -0.168199 -0.173532 -0.178866
+-0.184199 -0.189532 -0.197532 -0.205532 -0.213532 -0.217532 -0.221532
+-0.225532 -0.237531 -0.237531 -0.237531 -0.242865 -0.248198 -0.253531
+-0.258864 -0.264198 -0.269531 -0.272198 -0.274864 -0.277531 -0.278762
+-0.279992 -0.281223 -0.282454 -0.283685 -0.284915 -0.286146 -0.287377
+-0.288608 -0.289838 -0.291069 -0.2923 -0.293531 -0.293531 -0.293531
+-0.285531 -0.277531 -0.269531 -0.261531 -0.237531 -0.221532 -0.205532
+-0.197532 -0.176199 -0.154866 -0.133533 -0.117533 -0.101533 -0.0735335
+-0.0455339 -0.0255342 -0.00553441 0.0304651 0.0664647 0.106464 0.114464
+0.162463 0.178463 0.186463 0.194463 0.202463 0.210463 0.210463 0.210463
+0.210463 -0.565527 -0.565527 -0.565527 -0.581527 -0.597527 -0.909523
+-1.02152 -0.101533 0.258462 0.290462 0.306462 0.314461 0.330461 0.362461
+0.370461 0.378461 0.386461 0.39446 0.40246 0.407794 0.413127 0.41846
+0.42646 0.45046 0.498459 0.538459 0.562458 0.578458 0.608172 0.6196
+0.631029 0.642457 0.650457 0.658457 0.666457 0.670457 0.698457 0.698457
+0.714456 0.726456 0.738456 0.744856 0.751256 0.757656 0.764056 0.770455
+0.775255 0.780055 0.784855 0.789655 0.794455 0.799255 0.804055 0.810455
+0.810455 0.810455 0.810455 0.810455 0.810455 0.810455 0.811788 0.813122
+0.814455 0.815788 0.817122 0.818455 0.819344 0.820233 0.821122 0.82201
+0.822899 0.823788 0.824677 0.825566 0.826455 0.826455 0.826455 0.826455
+0.826455 0.826455 0.826455 0.826455 0.826455 0.826455 0.826455 0.826455
+0.826455 0.826455 0.824055 0.821655 0.819255 0.816855 0.814455 0.812055
+0.809655 0.807255 0.804855 0.802455 0.800455 0.798455 0.830819 0.826819
+0.822819 0.816819 0.810819 0.804819 0.798819 0.793486 0.788153 0.782819
+0.782819 0.774819 0.75882 0.75882 0.75882 0.75482 0.75082 0.74282 0.73482
+0.72682 0.71882 0.71082 0.694821 0.686249 0.677678 0.669107 0.660535
+0.651964 0.643393 0.634821 0.62625 0.617679 0.609107 0.600536 0.591965
+0.583393 0.574822 0.476157 0.436157 0.390824 0.345492 0.300159 0.268159
+0.23616 0.20416 0.100161 0.0681619 0.0361623 -0.115836 -0.107836 -0.0998359
+-0.0998359 -0.0998359 -0.091836 -0.091836 -0.395832 -0.415832 -0.435832
+-0.455831 -0.475831 -0.495831 -0.515831 -0.545164 -0.574497 -0.60383
+-0.633162 -0.662495 -0.691828 -0.715828 -0.739828 -0.763827 -0.787827
+-0.811827 -0.833826 -0.855826 -0.877826 -0.899826 -0.939825 -0.939825
+-0.947825 -0.947825 -0.947825 -0.947825 -0.947825 -0.947825 -0.947825
+-0.947825 -0.943825 -0.939825 -0.929159 -0.918492 -0.907826 -0.899826
+-0.891826 -0.883826 -0.875826 -0.867826 -0.859826 -0.851826 -0.843826
+-0.835826 -0.827827 -0.819827 -0.811827 -0.806684 -0.801541 -0.796399
+-0.791256 -0.786113 -0.78097 -0.775827 -0.770685 -0.765542 -0.760399
+-0.755256 -0.750113 -0.744971 -0.739828 -0.731828 -0.723828 -0.715828
+-0.691828 -0.683828 -0.675829 -0.667828 -0.653329 -0.638829 -0.624329
+-0.609829 -0.595329 -0.58083 -0.56633 -0.55183 -0.53733 -0.52283 -0.508331
+-0.493831 -0.479331 -0.464831 -0.450331 -0.435832 -0.421832 -0.407832
+-0.393832 -0.363833 -0.339833 -0.315833 -0.163835 -0.107836 -0.0998359
+0.110828 0.118828 0.118828 0.126828 0.134828 0.134828 0.142828 0.142828
+0.142828 0.142828 0.142828 0.142828 0.142828 0.142828 0.142828 0.142828
+0.142828 0.142828 0.142828 0.142828 0.142828 0.142828 0.142828 0.142828
+0.142828 0.142828 0.142828 0.142828 0.142828 0.142828 0.142828 0.134828
+0.134828 0.134828 0.134828 0.126828 0.126828 0.126828 0.126828 0.110828
+0.110828 0.110828 0.110828 0.102828 0.0948282 0.0868283 0.0829908 0.0775172
+0.0720435 0.0665699 0.0610963 0.0556227 0.0501491 0.0446755 0.0392019
+0.0337282 0.0282546 0.022781 0.0173074 0.0118338 0.00636017 0.000886559
+-0.00458705 -0.0100607 -0.0155343 -0.0214829 -0.0274316 -0.0333802
+-0.0393288 -0.0452775 -0.0512261 -0.0571748 -0.0631234 -0.0690721 -0.0750207
+-0.0809693 -0.086918 -0.0928666 -0.0988153 -0.104764 -0.104764 -0.104764
+-0.104764 -0.104764 -0.104764 -0.104764 -0.104764 -0.102478 -0.100193
+-0.0979068 -0.0956211 -0.0933355 -0.0910498 -0.0887641 -0.0887641 -0.0887641
+-0.0887641 -0.0887641 -0.0887641 -0.0887641 -0.0887641 -0.0807642 -0.0807642
+-0.0807642 -0.0807642 -0.0807642 -0.0767643 -0.0727643 -0.0727643 -0.0687644
+-0.0647644 -0.0634311 -0.0620978 -0.0607645 -0.0594311 -0.0580978 -0.0567645
+-0.0535645 -0.0503646 -0.0471646 -0.0439647 -0.0407647 -0.016765;
+#X coords 0 1 514 -1 512 250 1;
+#X restore 119 35 graph;
+#X obj 118 396 sig~;
+#X obj 121 309 hsl 512 18 10.24 1024 1 0 empty empty pitch -2 -6 1
+14 -257472 -1 -1 0 0;
+#X obj 118 415 tabosc4~ draw_waveform;
+#X obj 118 490 *~;
+#X obj 118 539 dac~;
+#X obj 137 470 hsl 128 18 0.01 1 1 0 empty empty amplitude -2 -6 1
+14 -225271 -1 -1 0 0;
+#N canvas 0 22 450 300 graph10 0;
+#X array draw_pitch 131 float 1;
+#A 0 459.551 444.565 424.585 404.604 399.609 379.629 364.644 334.673
+299.707 269.736 239.766 214.79 179.824 149.854 139.863 134.868 119.883
+109.893 102.757 95.6208 88.4849 81.3491 74.2132 67.0773 59.9414 59.9414
+39.9609 32.4683 24.9756 14.9854 4.99512 -0 -0 34.9658 64.9365 74.9268
+89.9121 94.9072 114.888 122.38 129.873 137.366 144.858 159.844 174.829
+187.317 199.805 208.13 216.455 224.78 239.766 254.751 262.244 269.736
+289.717 304.702 319.688 339.668 354.653 384.624 397.944 411.265 424.585
+454.556 467.043 494.517 504.507 509.502 529.482 559.453 569.443 529.482
+499.512 484.526 472.039 459.551 399.609 284.722 4.99512 9.99023 9.99023
+24.9756 29.9707 44.9561 54.9463 64.9365 77.4243 89.9121 98.2373 106.562
+114.888 128.624 142.361 156.097 169.834 183.154 196.475 209.795 223.115
+236.436 249.756 256.416 263.076 269.736 304.702 309.697 329.678 364.644
+369.639 377.131 384.624 394.614 419.59 434.575 439.57 454.556 454.556
+459.551 469.541 474.536 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1000 130 1 300 200 1;
+#X restore 342 364 graph;
+#X obj 160 372 tabosc4~ draw_pitch;
+#X obj 163 350 hsl 128 18 0.01 1 1 0 empty empty pitch_scan_rate -2
+-6 1 14 -261689 -1 -1 0 0;
+#X text 60 579 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 277 593 released under the GNU GPL;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 1;
+#X connect 4 0 5 0;
+#X connect 6 0 4 1;
+#X connect 8 0 3 0;
+#X connect 9 0 8 0;