chris@164: #N canvas 275 573 442 207 10; chris@164: #X obj 39 149 dac~ 1 2; chris@164: #X text 218 143 ---------------------------------; chris@164: #X text 218 133 @krighxz / BELA / heavy / 12/2015; chris@164: #X text 242 152 beaglert.cc / enzienaudio.com; chris@164: #X text 35 32 Rubber Duckie; chris@164: #X text 35 42 =============; chris@164: #N canvas 325 86 823 605 duckie 0; chris@164: #X obj 186 510 *~; chris@164: #X obj 306 517 *~; chris@164: #X obj 372 468 noise~; chris@164: #X obj 372 492 bp~ 3000 10; chris@164: #X obj 366 162 abs~; chris@164: #X obj 509 158 sig~ 0; chris@164: #X obj 467 371 +~; chris@164: #X obj 411 210 -~ 0.55; chris@164: #X obj 411 231 /~ 0.2; chris@164: #X obj 411 252 clip~ 0 1; chris@164: #X obj 411 282 *~; chris@164: #X obj 411 308 *~ 1000; chris@164: #X obj 366 334 +~; chris@164: #X obj 366 308 +~ 800; chris@164: #X obj 186 536 *~ 0.2; chris@164: #X obj 366 282 *~ 800; chris@164: #N canvas 568 775 135 226 <~ 0; chris@164: #X obj 20 -43 -~; chris@164: #X obj 20 27 +~ 1e-37; chris@164: #X obj 20 6 clip~ -1e-37 0; chris@164: #X obj 20 -88 inlet~; chris@164: #X obj 64 -87 inlet~; chris@164: #X obj 20 -64 max~; chris@164: #X obj 20 -19 *~ -1; chris@164: #X obj 20 79 outlet~; chris@164: #X obj 20 48 *~ 1e+37; chris@164: #X connect 0 0 6 0; chris@164: #X connect 1 0 8 0; chris@164: #X connect 2 0 1 0; chris@164: #X connect 3 0 5 0; chris@164: #X connect 4 0 0 1; chris@164: #X connect 4 0 5 1; chris@164: #X connect 5 0 0 0; chris@164: #X connect 6 0 2 0; chris@164: #X connect 8 0 7 0; chris@164: #X restore 186 367 pd <~ 0; chris@164: #N canvas 568 775 135 226 <~ 0; chris@164: #X obj 20 -43 -~; chris@164: #X obj 20 27 +~ 1e-37; chris@164: #X obj 20 6 clip~ -1e-37 0; chris@164: #X obj 20 -88 inlet~; chris@164: #X obj 64 -87 inlet~; chris@164: #X obj 20 -64 max~; chris@164: #X obj 20 -19 *~ -1; chris@164: #X obj 20 79 outlet~; chris@164: #X obj 20 48 *~ 1e+37; chris@164: #X connect 0 0 6 0; chris@164: #X connect 1 0 8 0; chris@164: #X connect 2 0 1 0; chris@164: #X connect 3 0 5 0; chris@164: #X connect 4 0 0 1; chris@164: #X connect 4 0 5 1; chris@164: #X connect 5 0 0 0; chris@164: #X connect 6 0 2 0; chris@164: #X connect 8 0 7 0; chris@164: #X restore 482 181 pd <~; chris@164: #X obj 186 428 *~; chris@164: #X obj 225 345 sig~ 1; chris@164: #X obj 186 394 lop~ 10; chris@164: #X text 524 393 << band-limited pulse; chris@164: #X text 10 367 reed stops when overblown >>; chris@164: #X obj 186 460 *~; chris@164: #X obj 186 480 *~; chris@164: #X text 25 470 exp amplitude response >>; chris@164: #X text 537 238 << detune frequency on change of direction; chris@164: #X obj 482 236 *~ -300; chris@164: #X obj 306 485 *~; chris@164: #X obj 306 449 *~ 0.1; chris@164: #X text 448 493 << noise simulates non-oscillating airflow when overblown chris@164: ; chris@164: #X obj 186 561 outlet~; chris@164: #N canvas 58 1286 407 525 pulse 0; chris@164: #X obj 83 340 *~; chris@164: #X obj 83 366 *~; chris@164: #X obj 31 366 sig~ 1; chris@164: #X obj 52 419 /~; chris@164: #X obj 67 393 +~; chris@164: #X text 116 366 X^2; chris@164: #X text 97 396 1+X^2; chris@164: #X text 84 421 1/(1+X^2); chris@164: #X obj 83 317 osc~; chris@164: #X obj 167 320 clip~ 0 999999; chris@164: #X obj 52 483 outlet~; chris@164: #X text 271 218 << tweak all this; chris@164: #X text 25 14 based on F04.waveshaping.pulse.pd; chris@164: #X obj 83 84 /~ 2; chris@164: #X obj 167 148 -~; chris@164: #X obj 167 170 /~ 127; chris@164: #X obj 52 452 hip~ 5; chris@164: #X obj 167 202 *~; chris@164: #X obj 167 232 *~; chris@164: #X obj 167 262 *~; chris@164: #X obj 167 294 *~ 1000; chris@164: #X obj 118 125 sig~ 139; chris@164: #X obj 83 58 inlet~; chris@164: #N canvas 331 1377 215 174 _ftom 0; chris@164: #X obj -482 -776 tabread4~ _ftom; chris@164: #X obj -482 -818 /~ 10000; chris@164: #X obj -482 -797 *~ 256; chris@164: #N canvas 0 23 450 278 (subpatch) 0; chris@164: #X array _ftom 256 float 3; chris@164: #A 0 0 27.0762 39.0762 46.0958 51.0762 54.9394 58.0958 60.7645 63.0762 chris@164: 65.1153 66.9394 68.5894 70.0958 71.4815 72.7645 73.9589 75.0762 76.1258 chris@164: 77.1153 78.0514 78.9394 79.784 80.5894 81.359 82.0958 82.8025 83.4815 chris@164: 84.1349 84.7645 85.372 85.9589 86.5266 87.0762 87.609 88.1258 88.6276 chris@164: 89.1153 89.5897 90.0514 90.5011 90.9394 91.3669 91.784 92.1914 92.5894 chris@164: 92.9785 93.359 93.7313 94.0958 94.4528 94.8025 95.1453 95.4815 95.8113 chris@164: 96.1349 96.4525 96.7645 97.0709 97.372 97.6679 97.9589 98.2451 98.5266 chris@164: 98.8036 99.0762 99.3446 99.609 99.8693 100.126 100.379 100.628 100.873 chris@164: 101.115 101.354 101.59 101.822 102.051 102.278 102.501 102.722 102.939 chris@164: 103.154 103.367 103.577 103.784 103.989 104.191 104.392 104.589 104.785 chris@164: 104.978 105.17 105.359 105.546 105.731 105.914 106.096 106.275 106.453 chris@164: 106.629 106.803 106.975 107.145 107.314 107.482 107.647 107.811 107.974 chris@164: 108.135 108.294 108.453 108.609 108.764 108.918 109.071 109.222 109.372 chris@164: 109.521 109.668 109.814 109.959 110.103 110.245 110.386 110.527 110.666 chris@164: 110.804 110.94 111.076 111.211 111.345 111.477 111.609 111.74 111.869 chris@164: 111.998 112.126 112.253 112.379 112.504 112.628 112.751 112.873 112.995 chris@164: 113.115 113.235 113.354 113.472 113.59 113.706 113.822 113.937 114.051 chris@164: 114.165 114.278 114.39 114.501 114.612 114.722 114.831 114.939 115.047 chris@164: 115.154 115.261 115.367 115.472 115.577 115.681 115.784 115.887 115.989 chris@164: 116.09 116.191 116.292 116.392 116.491 116.589 116.688 116.785 116.882 chris@164: 116.978 117.074 117.17 117.265 117.359 117.453 117.546 117.639 117.731 chris@164: 117.823 117.915 118.005 118.096 118.186 118.275 118.364 118.453 118.541 chris@164: 118.629 118.716 118.803 118.889 118.975 119.06 119.145 119.23 119.314 chris@164: 119.398 119.482 119.565 119.647 119.729 119.811 119.893 119.974 120.055 chris@164: 120.135 120.215 120.294 120.374 120.453 120.531 120.609 120.687 120.764 chris@164: 120.842 120.918 120.995 121.071 121.147 121.222 121.297 121.372 121.446 chris@164: 121.521 121.594 121.668 121.741 121.814 121.887 121.959 122.031 122.103 chris@164: 122.174 122.245 122.316 122.386 122.457 122.527 122.596 122.666 122.735 chris@164: 122.804 122.872 122.94 123.008; chris@164: #X coords 0 127 256 -12 50 50 1 0 0; chris@164: #X restore -546 -793 graph; chris@164: #X obj -482 -838 clip~ 0 10000; chris@164: #X obj -482 -858 inlet~; chris@164: #X obj -482 -755 outlet~; chris@164: #X text -567 -722 shoddy temp replacement for ftom~; chris@164: #X connect 0 0 6 0; chris@164: #X connect 1 0 2 0; chris@164: #X connect 2 0 0 0; chris@164: #X connect 4 0 1 0; chris@164: #X connect 5 0 4 0; chris@164: #X restore 182 125 pd _ftom; chris@164: #X connect 0 0 1 0; chris@164: #X connect 0 0 1 1; chris@164: #X connect 1 0 4 1; chris@164: #X connect 2 0 3 0; chris@164: #X connect 2 0 4 0; chris@164: #X connect 3 0 16 0; chris@164: #X connect 4 0 3 1; chris@164: #X connect 8 0 0 0; chris@164: #X connect 9 0 0 1; chris@164: #X connect 13 0 8 0; chris@164: #X connect 13 0 23 0; chris@164: #X connect 14 0 15 0; chris@164: #X connect 15 0 17 0; chris@164: #X connect 15 0 17 1; chris@164: #X connect 16 0 10 0; chris@164: #X connect 17 0 18 0; chris@164: #X connect 17 0 18 1; chris@164: #X connect 18 0 19 0; chris@164: #X connect 18 0 19 1; chris@164: #X connect 19 0 20 0; chris@164: #X connect 20 0 9 0; chris@164: #X connect 21 0 14 0; chris@164: #X connect 22 0 13 0; chris@164: #X connect 23 0 14 1; chris@164: #X restore 467 394 pd pulse; chris@164: #X obj 366 105 inlet~; chris@164: #X text 295 104 airflow >>; chris@164: #X text 218 118 ('squeeze pressure'); chris@164: #X text 13 20 Sound model of a rubber duckie toy; chris@164: #X text 14 51 Hint: use the differential of a continuous signal as chris@164: input for a realistic response; chris@164: #X text 13 29 ==================================; chris@164: #X obj 366 133 lop~ 0.5; chris@164: #X text 423 132 << airflow resistance; chris@164: #X connect 0 0 14 0; chris@164: #X connect 1 0 14 0; chris@164: #X connect 2 0 3 0; chris@164: #X connect 3 0 1 1; chris@164: #X connect 4 0 7 0; chris@164: #X connect 4 0 15 0; chris@164: #X connect 4 0 29 0; chris@164: #X connect 4 0 18 1; chris@164: #X connect 4 0 16 0; chris@164: #X connect 5 0 17 1; chris@164: #X connect 6 0 32 0; chris@164: #X connect 7 0 8 0; chris@164: #X connect 8 0 9 0; chris@164: #X connect 9 0 10 0; chris@164: #X connect 9 0 10 1; chris@164: #X connect 10 0 11 0; chris@164: #X connect 11 0 12 1; chris@164: #X connect 12 0 6 0; chris@164: #X connect 13 0 12 0; chris@164: #X connect 14 0 31 0; chris@164: #X connect 15 0 13 0; chris@164: #X connect 16 0 20 0; chris@164: #X connect 17 0 27 0; chris@164: #X connect 18 0 23 0; chris@164: #X connect 18 0 23 1; chris@164: #X connect 19 0 16 1; chris@164: #X connect 20 0 18 0; chris@164: #X connect 23 0 24 1; chris@164: #X connect 23 0 24 0; chris@164: #X connect 24 0 0 0; chris@164: #X connect 27 0 6 1; chris@164: #X connect 28 0 1 0; chris@164: #X connect 29 0 28 1; chris@164: #X connect 29 0 28 0; chris@164: #X connect 32 0 0 1; chris@164: #X connect 33 0 39 0; chris@164: #X connect 39 0 4 0; chris@164: #X connect 39 0 17 0; chris@164: #X restore 39 127 pd duckie; chris@164: #X obj 39 77 adc~ 10; chris@164: #N canvas 0 22 504 229 differential 0; chris@164: #X obj 27 80 rzero~ 1; chris@164: #X obj 72 57 sig~ 1; chris@164: #X obj 27 152 *~ 44100; chris@164: #X obj 72 131 samplerate~; chris@164: #X obj 72 110 loadbang; chris@164: #X obj 27 25 inlet~; chris@164: #X obj 27 190 outlet~; chris@164: #X text 84 83 y[n] = x[n] - x[n-1]; chris@164: #X text 121 57 <<< heavy currently requires signal input to set coefficient chris@164: ; chris@164: #X text 91 151 <<< multiply by samplerate to get velocity; chris@164: #X connect 0 0 2 0; chris@164: #X connect 1 0 0 1; chris@164: #X connect 2 0 6 0; chris@164: #X connect 3 0 2 1; chris@164: #X connect 4 0 3 0; chris@164: #X connect 5 0 0 0; chris@164: #X restore 39 101 pd differential; chris@164: #X connect 6 0 0 0; chris@164: #X connect 6 0 0 1; chris@164: #X connect 7 0 8 0; chris@164: #X connect 8 0 6 0;