#N canvas 0 0 450 300 16; #N canvas 1 0 1013 677 analog_synth 1; #N canvas 0 0 429 300 (subpatch) 0; #X array 29-sequence 9 float 3; #A 0 55 550 385 495 165 385 495 275 615; #X coords 0 700 9 0 200 100 1; #X restore 779 5 graph; #X obj 61 356 *~; #X obj 61 387 hip~ 5; #N canvas 0 0 450 300 (subpatch) 0; #X array 29-envelope 103 float 1; #A 0 0.0900028 0.230002 0.270002 0.340001 0.390001 0.420001 0.46 0.48 0.53 0.55 0.57 0.589999 0.619999 0.639999 0.649999 0.669999 0.689999 0.699999 0.709999 0.729998 0.739998 0.749998 0.759998 0.779998 0.789998 0.799998 0.809998 0.819998 0.819998 0.819998 0.819998 0.829998 0.839998 0.859998 0.869997 0.879997 0.889997 0.889997 0.899997 0.909997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.919997 0.909997 0.909997 0.909997 0.899997 0.899997 0.889997 0.889997 0.879997 0.879997 0.879997 0.869997 0.869997 0.859998 0.849998 0.759998 0.739998 0.729998 0.719998 0.709999 0.699999 0.699999 0.689999 0.689999 0.679999 0.659999 0.639999 0.629999 0.599999 0.55 0.51 0.49 0.47 0.44 0.46 0.43 0.410001 0.370001 0.350001 0.330001 0.310001 0.290001 0.240002 0.200002 0.100003; #X coords 0 1 102 0 200 100 1; #X restore 781 144 graph; #N canvas 0 0 450 300 (subpatch) 0; #X array 29-sample 259 float 1; #A 0 -0.0417097 0 0.0417097 0.0833323 0.124781 0.165969 0.206812 0.247225 0.287126 0.326434 0.36507 0.402959 0.440025 0.4762 0.511413 0.545602 0.578706 0.610666 0.641431 0.67095 0.699179 0.726076 0.751607 0.775738 0.798442 0.819698 0.839487 0.857796 0.874615 0.889942 0.903776 0.916123 0.926992 0.936396 0.944353 0.950886 0.95602 0.959784 0.962211 0.963337 0.963202 0.961849 0.959321 0.955666 0.950934 0.945176 0.938446 0.930797 0.922285 0.912968 0.902901 0.892143 0.880752 0.868785 0.856298 0.84335 0.829994 0.816287 0.802281 0.788028 0.773579 0.758982 0.744282 0.729525 0.714751 0.700001 0.685311 0.670714 0.656244 0.641927 0.627791 0.613858 0.600147 0.586677 0.573461 0.560512 0.547837 0.535443 0.523333 0.511508 0.499966 0.488704 0.477715 0.466991 0.456522 0.446295 0.436298 0.426514 0.416928 0.407522 0.398277 0.389174 0.380193 0.371313 0.362515 0.353776 0.345077 0.336397 0.327715 0.319013 0.310271 0.301472 0.292598 0.283633 0.274562 0.265372 0.25605 0.246586 0.236971 0.227196 0.217255 0.207145 0.196862 0.186404 0.175772 0.164968 0.153995 0.142859 0.131565 0.120122 0.108539 0.0968254 0.0849936 0.0730557 0.0610252 0.0489164 0.0367439 0.0245233 0.0122705 1.32679e-06 -0.0122678 -0.0245207 -0.0367413 -0.0489137 -0.0610226 -0.0730531 -0.084991 -0.0968229 -0.108536 -0.12012 -0.131563 -0.142856 -0.153993 -0.164965 -0.175769 -0.186401 -0.196859 -0.207143 -0.217253 -0.227194 -0.236969 -0.246584 -0.256048 -0.26537 -0.27456 -0.283631 -0.292596 -0.30147 -0.31027 -0.319011 -0.327714 -0.336395 -0.345075 -0.353774 -0.362513 -0.371311 -0.380191 -0.389172 -0.398275 -0.40752 -0.416926 -0.426512 -0.436295 -0.446293 -0.456519 -0.466989 -0.477713 -0.488702 -0.499964 -0.511505 -0.52333 -0.53544 -0.547834 -0.560509 -0.573458 -0.586674 -0.600144 -0.613855 -0.627788 -0.641924 -0.656241 -0.670711 -0.685307 -0.699998 -0.714748 -0.729521 -0.744279 -0.758978 -0.773576 -0.788025 -0.802278 -0.816284 -0.829991 -0.843347 -0.856295 -0.868782 -0.88075 -0.892141 -0.902899 -0.912966 -0.922283 -0.930795 -0.938444 -0.945175 -0.950933 -0.955665 -0.95932 -0.961848 -0.963202 -0.963337 -0.962211 -0.959784 -0.956021 -0.950887 -0.944355 -0.936398 -0.926994 -0.916126 -0.903779 -0.889945 -0.874619 -0.857799 -0.839491 -0.819703 -0.798447 -0.775743 -0.751612 -0.726082 -0.699185 -0.670956 -0.641437 -0.610673 -0.578713 -0.54561 -0.511421 -0.476207 -0.440033 -0.402967 -0.365079 -0.326442 -0.287135 -0.247234 -0.206821 -0.165978 -0.12479 -0.0833412 -0.0417187 -9.02221e-06 0.0417007; #X coords 0 1 258 -1 200 100 1; #X restore 779 284 graph; #X obj 56 89 tabread~ 29-sequence; #X obj 145 121 wrap~; #X obj 146 153 *~ 100; #X obj 149 187 +~ 1; #X obj 57 122 phasor~; #X obj 58 154 -~ 0.5; #X obj 61 290 cos~; #X obj 123 332 tabread4~ 29-sample; #X obj 151 216 tabread4~ 29-envelope; #X obj 123 273 *~ 128; #X obj 61 322 +~ 1; #X obj 55 58 *~ 9; #X text 53 -29 ANALOG-SYNTH-STYLE SEQUENCER; #X text 133 58 main loop: sawtooth of amplitude 9; #X text 207 121 9x original frequency sawtooth; #X text 220 154 adjust for reading; #X text 426 151 envelope sample; #X text 166 245 multiply envelope by audio-frequency sawtooth; #X text 197 272 adjust amplitude and center for wavetable; #X text 101 355 multiply by raised-cosine smoothing function; #X obj 61 462 dac~; #X text 650 34 9 muestras \;; #X text 631 184 100 muestras \;; #X text 620 320 259 muestras \;; #X text 286 89 read frequency sequence (sin iterpol.); #X obj 62 427 *~; #N canvas 0 0 1013 677 make-tables 0; #X msg 120 57 bang; #X obj 120 85 t b b; #X obj 167 147 f; #X obj 209 147 + 1; #X msg 191 117 0; #X obj 120 113 until; #X obj 167 178 t f f; #X obj 30 209 moses 10; #X obj 20 299 tabwrite 29-envelope; #X obj 83 175 sel 102; #X obj 25 240 expr ($f1-1)/10; #X obj 39 267 expr (101-$f1)/90; #X msg 132 372 \; 29-sequence 0 55 550 385 495 165 385 495 275 615 ; #X text 33 9 bang to recalculate the envelope table (I did this but then went in and changed it with the mouse afterward.); #X text 92 329 The sequence is just a list of specified frequencies \; the wavetable is a cosine.; #X msg 132 418 \; 29-sample sinesum 256 0.8 0.3 0.1; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 2 0 6 0; #X connect 2 0 9 0; #X connect 3 0 2 1; #X connect 4 0 2 1; #X connect 5 0 2 0; #X connect 6 0 7 0; #X connect 6 1 8 1; #X connect 7 0 10 0; #X connect 7 1 11 0; #X connect 9 0 5 1; #X connect 10 0 8 0; #X connect 11 0 8 0; #X restore 811 484 pd make-tables; #X text 509 490 how to make the tables:; #X obj 166 435 * 0.7; #X obj 169 408 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 123 303 +~ 129; #X msg 531 530 \; 29-envelope const 0.5 \; 29-sequence const 440; #X obj 52 24 phasor~ 0.1; #X obj 123 245 *~; #X connect 1 0 2 0; #X connect 2 0 30 0; #X connect 5 0 9 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 10 0 38 0; #X connect 11 0 15 0; #X connect 12 0 1 1; #X connect 13 0 38 1; #X connect 14 0 35 0; #X connect 15 0 1 0; #X connect 16 0 5 0; #X connect 16 0 6 0; #X connect 30 0 25 0; #X connect 30 0 25 1; #X connect 33 0 30 1; #X connect 34 0 33 0; #X connect 35 0 12 0; #X connect 37 0 16 0; #X connect 38 0 14 0; #X restore 193 67 pd analog_synth; #N canvas -67 -9 1034 677 samplehold 0; #N canvas 0 0 450 300 (subpatch) 0; #X array table20 99300 float 0; #X coords 0 1.02 99299 -1.02 200 130 1; #X restore 752 49 graph; #X obj 546 441 loadbang; #X obj 26 515 hip~ 5; #X floatatom 107 65 0 0 0 0 - - -; #X text 230 66 <-- frequency (Hz.); #X floatatom 176 130 0 0 0 0 - - -; #X obj 66 253 +~ 1; #X obj 107 91 phasor~ 0; #X text 219 129 <-- chunk size (100ths of a second); #X obj 26 488 *~; #X obj 90 345 line~; #X floatatom 175 249 0 0 0 0 - - -; #X text 213 250 <-- read point in 100ths of a second; #X obj 67 403 +~; #X obj 90 376 samphold~; #X obj 92 198 samphold~; #X obj 67 227 *~; #X obj 24 124 -~ 0.5; #X obj 24 151 *~ 0.5; #X obj 24 176 cos~; #X obj 67 430 tabread4~ table20; #X obj 546 532 soundfiler; #X obj 26 640 dac~; #X msg 545 482 read -resize ../5/SampleFlauta.wav table20; #N canvas 0 0 1013 677 midiKeyb 0; #X obj 245 9 key; #X floatatom 245 37 5 0 0 0 - - -; #X msg 212 146 60; #X msg 244 147 61; #X msg 277 147 62; #X msg 308 148 63; #X msg 339 150 64; #X msg 372 150 65; #X msg 403 151 66; #X msg 438 152 67; #X msg 477 152 68; #X msg 514 152 69; #X msg 554 152 70; #X msg 591 153 71; #X msg 623 153 72; #X floatatom 235 334 5 0 0 0 - - -; #X floatatom 363 343 5 0 0 0 - - -; #X obj 253 250 t f b; #X msg 657 154 73; #X msg 694 152 74; #X msg 308 272 127; #X obj 250 305 makenote 100 300; #X obj 298 385 != 0; #X obj 231 437 spigot; #X obj 245 86 sel 113 50 119 51 101 114 53 116 54 121 55 117 105 57 111; #X text 316 667 nota \;; #X obj 231 510 mtof; #X obj 231 548 / 293.6; #X obj 230 587 expr (44100*$f1)/99300; #X obj 230 620 outlet; #X obj 231 475 + 0; #X connect 0 0 1 0; #X connect 1 0 24 0; #X connect 2 0 17 0; #X connect 3 0 17 0; #X connect 4 0 17 0; #X connect 5 0 17 0; #X connect 6 0 17 0; #X connect 7 0 17 0; #X connect 8 0 17 0; #X connect 9 0 17 0; #X connect 10 0 17 0; #X connect 11 0 17 0; #X connect 12 0 17 0; #X connect 13 0 17 0; #X connect 14 0 17 0; #X connect 15 0 23 0; #X connect 16 0 22 0; #X connect 17 0 21 0; #X connect 17 1 20 0; #X connect 18 0 17 0; #X connect 19 0 17 0; #X connect 20 0 21 1; #X connect 21 0 15 0; #X connect 21 1 16 0; #X connect 22 0 23 1; #X connect 23 0 30 0; #X connect 24 0 2 0; #X connect 24 1 3 0; #X connect 24 2 4 0; #X connect 24 3 5 0; #X connect 24 4 6 0; #X connect 24 5 7 0; #X connect 24 6 8 0; #X connect 24 7 9 0; #X connect 24 8 10 0; #X connect 24 9 11 0; #X connect 24 10 12 0; #X connect 24 11 13 0; #X connect 24 12 14 0; #X connect 24 13 18 0; #X connect 24 14 19 0; #X connect 26 0 27 0; #X connect 27 0 28 0; #X connect 28 0 29 0; #X connect 30 0 26 0; #X restore 107 18 pd midiKeyb; #X obj 28 581 *~; #X obj 101 559 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 744 202 ---- 99303 samples ---; #X obj 176 157 * 441; #X obj 175 277 * 441; #X text 202 189 pasa el valor que entra a la izq \, cuando el que \; entra a la derecha decrece.; #X obj 90 314 pack 0 100; #X connect 1 0 23 0; #X connect 2 0 25 0; #X connect 3 0 7 0; #X connect 5 0 28 0; #X connect 6 0 13 0; #X connect 7 0 14 1; #X connect 7 0 15 1; #X connect 7 0 16 0; #X connect 7 0 17 0; #X connect 9 0 2 0; #X connect 10 0 14 0; #X connect 11 0 29 0; #X connect 13 0 20 0; #X connect 14 0 13 1; #X connect 15 0 16 1; #X connect 16 0 6 0; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 9 0; #X connect 20 0 9 1; #X connect 23 0 21 0; #X connect 24 0 3 0; #X connect 25 0 22 0; #X connect 25 0 22 1; #X connect 26 0 25 1; #X connect 28 0 15 0; #X connect 29 0 31 0; #X connect 31 0 10 0; #X restore 194 20 pd samplehold; #N canvas 0 0 450 300 filtros1 0; #X obj 145 56 lop~; #X obj 151 111 hip~; #X obj 145 163 bp~; #X obj 152 216 rev3~; #X restore 192 109 pd filtros1; #N canvas 0 0 1013 677 tren_pulso 0; #X obj 310 190 line~; #X floatatom 69 81 0 0 0 0 - - -; #X obj 44 358 cos~; #N canvas 0 0 450 300 (subpatch) 0; #X array pulse-output 882 float 0; #X coords 0 1.02 882 -1.02 200 130 1; #X restore 652 461 graph; #X obj 69 111 phasor~ 0; #X obj 310 164 pack 0 50; #X floatatom 310 110 0 0 100 0 - - -; #X text 66 58 frequency; #X obj 69 138 -~ 0.5; #X obj 69 239 *~; #X obj 310 136 / 10; #X obj 44 303 clip~ -0.5 0.5; #X obj 44 471 hip~ 5; #N canvas 0 0 450 300 (subpatch) 0; #X array phase-output 882 float 0; #X coords 0 1.02 882 -1.02 200 60 1; #X restore 652 176 graph; #N canvas 0 0 450 300 (subpatch) 0; #X array clip-output 882 float 0; #X coords 0 1.02 882 -1.02 200 130 1; #X restore 652 310 graph; #X text 135 137 phase -1/2 to 1/2; #X text 164 111 phase 0 to 1; #X text 142 17 PULSE GENERATOR; #X obj 32 268 tabwrite~ phase-output; #X obj 32 443 tabwrite~ pulse-output; #X text 124 472 high pass filter to cut DC; #X text 362 138 fix range; #X text 370 192 smooth it; #X text 356 217 add 1; #X text 56 174 <-- click to graph; #X text 102 241 increase amplitude; #X text 191 302 clip back to range -1/2 to 1/2; #X text 110 359 cosine wave lookup (-1/2 and 1/2 give -1); #X obj 310 218 +~ 1; #X obj 32 332 tabwrite~ clip-output; #X text 655 604 ---- 0.02 seconds ----; #X obj 32 174 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 44 502 output~; #X obj 44 383 +~ 1; #X obj 44 408 *~ 0.5; #X text 108 382 add one (range now from 0 to 2); #X text 117 407 ...and now from 0 to 1; #X text 33 595 This patch computes a pulse train \, with an "index" control that essentually squeezes the pulses. If "bandwidth" is zero you get a pure cosine wave \, and for larger values of the bandwidth \, the cosine wave is squeezed to fill smaller portions of the waveform. ; #X text 307 89 index; #X text 880 167 0.5; #X text 877 229 -0.5; #X text 875 302 1; #X text 877 440 -1; #X text 875 457 1; #X text 876 592 -1; #X connect 0 0 28 0; #X connect 1 0 4 0; #X connect 2 0 33 0; #X connect 4 0 8 0; #X connect 5 0 0 0; #X connect 6 0 10 0; #X connect 8 0 9 0; #X connect 9 0 11 0; #X connect 9 0 18 0; #X connect 10 0 5 0; #X connect 11 0 2 0; #X connect 11 0 29 0; #X connect 12 0 32 0; #X connect 12 0 32 1; #X connect 28 0 9 1; #X connect 31 0 18 0; #X connect 31 0 29 0; #X connect 31 0 19 0; #X connect 33 0 34 0; #X connect 34 0 19 0; #X connect 34 0 12 0; #X restore 197 187 pd tren_pulso; #N canvas 0 0 450 300 clip 0; #X obj 166 70 clip~; #X restore 195 148 pd clip;