├── .gitignore ├── .gitlab-ci.yml ├── frnd.pd ├── grnd.pd ├── license.txt ├── note_basic.pd ├── note_busvoldur.pd ├── note_off.pd ├── pan-stereo.pd ├── readme.txt ├── spat-invd.pd ├── spat-mono.pd ├── spat-multi.pd ├── spat-quad.pd ├── spat-stereo.pd ├── spat-varbus.pd ├── spat-vbap.pd ├── syn-dirac.pd ├── syn-grain.pd ├── syn-sample-var.pd ├── syn-sample-varcorr.pd ├── syn-sample.pd ├── syn-sample0.pd ├── syn-sine.pd ├── tc.pd ├── tcenv.pd ├── tcfade.pd ├── tutorials ├── 1a-onenote.pd ├── 1b-poly.pd ├── 2-chained.pd ├── 3-voices.pd ├── 4-noteoff.pd ├── 5-manyvoices.pd ├── 5a-chained.pd ├── 5b-2level.pd ├── 5c-table.pd ├── 6-granular.pd ├── 6a-granular-play.pd ├── 6b-granular-play.pd ├── 6c-granular-repitch.pd ├── 7-granular-tcorr.pd ├── 7a-granular-tcenv.pd ├── 7b-granular-tcorr-rnd.pd ├── 8-bus.pd ├── 8a-stereo.pd ├── 8b-quadro.pd ├── 8c-spat-5.1.pd ├── kbd-help.pd ├── kbd.pd ├── note_alt.pd ├── note_alt_vol.pd ├── out-mono.pd ├── out-multi.pd ├── out-stereo.pd └── sample.pd ├── upp-meta.pd ├── upp._check.pd ├── upp._extract.pd ├── upp._release.pd ├── upp._spat.invd.pd ├── upp._spat.pd ├── upp._spat.vbap.pd ├── upp._vlinesub.pd ├── upp._xhelper.pd ├── upp.cmpatom.pd ├── upp.comm.pd ├── upp.delay-help.pd ├── upp.delay.pd ├── upp.delay~-help.pd ├── upp.delay~.pd ├── upp.dilemma.pd ├── upp.dirac~-help.pd ├── upp.dirac~.pd ├── upp.dspintv-help.pd ├── upp.dspintv.pd ├── upp.dynchain.pd ├── upp.dynpatch.pd ├── upp.dynpatch1.pd ├── upp.flow.pd ├── upp.flowctrl.pd ├── upp.fwd.pd ├── upp.ms2s.pd ├── upp.once.pd ├── upp.onward.pd ├── upp.pd ├── upp.ramp~-help.pd ├── upp.ramp~.pd ├── upp.s2ms.pd ├── upp.samplerate.pd ├── upp.schedule-help.pd ├── upp.schedule.pd ├── upp.tabread2~-help.pd ├── upp.tabread2~.pd ├── upp.tabread4~-help.pd ├── upp.tabread4~.pd ├── upp.vline~-help.pd ├── upp.vline~.pd ├── upp.x2.pd ├── upp.xc.pd ├── upp.xf.pd ├── upp.xfade~-help.pd ├── upp.xfade~.pd ├── urnd.pd ├── vbap-5.1.pd ├── vbap-stereo.pd ├── version.txt ├── wnd-lin.pd └── wnd-sin.pd /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | test 3 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - package 3 | - deploy 4 | 5 | variables: 6 | GIT_SUBMODULE_STRATEGY: recursive 7 | 8 | package_pd_deken: 9 | stage: package 10 | script: 11 | - mkdir -p build/$CI_PROJECT_NAME 12 | - cp -r tutorials readme.txt license.txt $CI_PROJECT_DIR/*.pd build/$CI_PROJECT_NAME || true 13 | - deken package build/$CI_PROJECT_NAME --version `cat version.txt` 14 | artifacts: 15 | paths: 16 | - $CI_PROJECT_DIR/$CI_PROJECT_NAME*.dek* 17 | expire_in: 24h 18 | 19 | push_github: 20 | stage: deploy 21 | script: 22 | - git remote add github https://$GITHUB_ACCESS_TOKEN@github.com/$GITHUB_USERNAME/$CI_PROJECT_NAME.git || true 23 | # we need some extra treatment because the gitlab-runner doesn't check out the full history 24 | - git push github HEAD:master --tags 25 | 26 | upload_deken: 27 | stage: deploy 28 | dependencies: 29 | - package_pd_deken 30 | script: 31 | - deken upload --no-source-error $CI_PROJECT_DIR/$CI_PROJECT_NAME*.dek 32 | 33 | upload_owncloud: 34 | stage: deploy 35 | dependencies: 36 | - package_pd_deken 37 | script: 38 | - oc-upload.sh pdmax-packages $CI_PROJECT_DIR/$CI_PROJECT_NAME*.dek* $CI_PROJECT_DIR/$CI_PROJECT_NAME-*.zip 39 | -------------------------------------------------------------------------------- /frnd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 450 300 10; 2 | #X obj 64 37 inlet; 3 | #X obj 65 73 urnd; 4 | #X obj 64 102 * 2; 5 | #X obj 64 130 - 1; 6 | #X obj 62 161 outlet; 7 | #X connect 0 0 1 0; 8 | #X connect 1 0 2 0; 9 | #X connect 2 0 3 0; 10 | #X connect 3 0 4 0; 11 | -------------------------------------------------------------------------------- /grnd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 341 168 380 515 10; 2 | #X obj 45 91 inlet; 3 | #X text 143 240 S; 4 | #X obj 142 209 *; 5 | #X obj 108 209 *; 6 | #X obj 108 238 +; 7 | #X obj 108 285 log; 8 | #X obj 108 308 /; 9 | #X obj 108 328 * -2; 10 | #X obj 108 349 sqrt; 11 | #X obj 45 379 *; 12 | #X obj 45 468 outlet; 13 | #X obj 45 114 t b b; 14 | #X text 28 13 deliver normally distributed random number with unit 15 | standard deviation and zero mean; 16 | #X obj 45 142 urnd; 17 | #X obj 45 173 t a a a; 18 | #X obj 135 174 t a a; 19 | #X obj 135 143 urnd; 20 | #X obj 108 264 t a a; 21 | #X text 29 43 Box-Muller transformation; 22 | #X obj 45 292 cos; 23 | #X obj 45 264 * 6.28319; 24 | #X obj 225 91 inlet; 25 | #X obj 225 144 f \$1; 26 | #X obj 270 91 loadbang; 27 | #X obj 45 422 max; 28 | #X obj 45 445 min; 29 | #X text 52 396 clip the result; 30 | #X obj 74 422 * -1; 31 | #X obj 226 381 t a a; 32 | #X msg 225 202 1e+30; 33 | #X obj 225 171 select 0; 34 | #X connect 0 0 11 0; 35 | #X connect 2 0 4 1; 36 | #X connect 3 0 4 0; 37 | #X connect 4 0 17 0; 38 | #X connect 5 0 6 0; 39 | #X connect 6 0 7 0; 40 | #X connect 7 0 8 0; 41 | #X connect 8 0 9 1; 42 | #X connect 9 0 24 0; 43 | #X connect 11 0 13 0; 44 | #X connect 11 1 16 0; 45 | #X connect 13 0 14 0; 46 | #X connect 14 0 20 0; 47 | #X connect 14 1 3 0; 48 | #X connect 14 2 3 1; 49 | #X connect 15 0 2 0; 50 | #X connect 15 1 2 1; 51 | #X connect 16 0 15 0; 52 | #X connect 17 0 5 0; 53 | #X connect 17 1 6 1; 54 | #X connect 19 0 9 0; 55 | #X connect 20 0 19 0; 56 | #X connect 21 0 22 0; 57 | #X connect 22 0 30 0; 58 | #X connect 23 0 22 0; 59 | #X connect 24 0 25 0; 60 | #X connect 25 0 10 0; 61 | #X connect 27 0 24 1; 62 | #X connect 28 0 27 0; 63 | #X connect 28 1 25 1; 64 | #X connect 29 0 28 0; 65 | #X connect 30 0 29 0; 66 | #X connect 30 1 28 0; 67 | -------------------------------------------------------------------------------- /note_basic.pd: -------------------------------------------------------------------------------- 1 | #N canvas 26 39 330 259 10; 2 | #X obj 68 129 osc~; 3 | #X obj 68 179 *~; 4 | #X obj 137 129 vline~; 5 | #X obj 68 53 t a b; 6 | #X text 142 88 attack+decay; 7 | #X text 140 147 volume envelope; 8 | #X text 30 130 sine; 9 | #X obj 68 27 inlet; 10 | #X obj 68 207 outlet~; 11 | #X obj 68 105 mtof; 12 | #X text 120 27 MIDI note in; 13 | #X msg 136 105 1 20 \, 0 800 20; 14 | #X connect 0 0 1 0; 15 | #X connect 1 0 8 0; 16 | #X connect 2 0 1 1; 17 | #X connect 3 0 9 0; 18 | #X connect 3 1 11 0; 19 | #X connect 7 0 3 0; 20 | #X connect 9 0 0 0; 21 | #X connect 11 0 2 0; 22 | -------------------------------------------------------------------------------- /note_busvoldur.pd: -------------------------------------------------------------------------------- 1 | #N canvas 518 289 532 439 10; 2 | #X obj 67 35 inlet; 3 | #X obj 66 377 outlet; 4 | #X obj 66 264 delay; 5 | #X text 58 207 total duration; 6 | #X text 46 395 bang when ready; 7 | #X obj 191 179 cnv 15 300 200 empty empty empty 20 12 0 14 -233017 8 | -66577 0; 9 | #X obj 263 228 osc~; 10 | #X obj 263 299 *~; 11 | #X obj 332 249 vline~; 12 | #X text 335 267 volume envelope; 13 | #X text 229 226 sine; 14 | #X obj 263 204 mtof; 15 | #X text 257 348 audio out; 16 | #X msg 331 212 \$2 \$3 \, 0 \$4 \$3; 17 | #X obj 105 84 t b a a; 18 | #X obj 129 113 unpack 0 0 0 0; 19 | #X obj 105 191 +; 20 | #X obj 66 191 f; 21 | #X text 66 14 bus midinote volume attack decay; 22 | #X obj 67 59 list split 1; 23 | #X msg 211 300 set \$1; 24 | #X obj 263 327 throw~ \$0-dummy; 25 | #X obj 263 390 catch~ \$0-dummy; 26 | #X text 333 194 volume \, attack+decay; 27 | #X obj 331 39 inlet; 28 | #X text 327 16 mod dummy; 29 | #X text 421 13 grrrr.org 2012; 30 | #X connect 0 0 19 0; 31 | #X connect 2 0 1 0; 32 | #X connect 6 0 7 0; 33 | #X connect 7 0 21 0; 34 | #X connect 8 0 7 1; 35 | #X connect 11 0 6 0; 36 | #X connect 13 0 8 0; 37 | #X connect 14 0 17 0; 38 | #X connect 14 1 15 0; 39 | #X connect 14 2 13 0; 40 | #X connect 15 0 11 0; 41 | #X connect 15 2 16 0; 42 | #X connect 15 3 16 1; 43 | #X connect 16 0 17 1; 44 | #X connect 17 0 2 0; 45 | #X connect 19 0 20 0; 46 | #X connect 19 1 14 0; 47 | #X connect 20 0 21 0; 48 | -------------------------------------------------------------------------------- /note_off.pd: -------------------------------------------------------------------------------- 1 | #N canvas 17 23 602 485 10; 2 | #X obj 226 44 inlet; 3 | #X obj 67 404 outlet; 4 | #X obj 175 252 cnv 15 350 200 empty empty empty 20 12 0 14 -233017 5 | -66577 0; 6 | #X obj 249 286 osc~; 7 | #X obj 249 378 *~; 8 | #X obj 371 342 vline~; 9 | #X text 368 360 volume envelope; 10 | #X text 215 284 sine; 11 | #X obj 249 265 mtof; 12 | #X text 246 425 audio out; 13 | #X obj 226 120 t b a a; 14 | #X obj 441 40 inlet; 15 | #X obj 441 207 f; 16 | #X obj 441 164 t b; 17 | #X msg 478 304 0 \$1; 18 | #X text 439 22 mod msg; 19 | #X obj 371 303 pack 0 0 0; 20 | #X obj 371 275 *; 21 | #X msg 319 303 \$2 \$3; 22 | #X obj 249 164 unpack 0 0 0 0 0 0; 23 | #X text 75 278 only once!; 24 | #X obj 441 70 list split 1; 25 | #X text 415 70 tag; 26 | #X obj 249 404 outlet~; 27 | #X text 61 20 tag=midinote volume A(ms) D(ms) S(gain) R(ms); 28 | #X text 49 424 output delay time; 29 | #X obj 67 260 upp.once; 30 | #X obj 67 378 upp.ms2s; 31 | #X connect 0 0 10 0; 32 | #X connect 3 0 4 0; 33 | #X connect 4 0 23 0; 34 | #X connect 5 0 4 1; 35 | #X connect 8 0 3 0; 36 | #X connect 10 0 26 1; 37 | #X connect 10 1 19 0; 38 | #X connect 10 2 18 0; 39 | #X connect 11 0 21 0; 40 | #X connect 12 0 14 0; 41 | #X connect 12 0 26 0; 42 | #X connect 13 0 12 0; 43 | #X connect 14 0 5 0; 44 | #X connect 16 0 5 0; 45 | #X connect 17 0 16 0; 46 | #X connect 18 0 5 0; 47 | #X connect 19 0 8 0; 48 | #X connect 19 1 17 0; 49 | #X connect 19 2 16 2; 50 | #X connect 19 3 16 1; 51 | #X connect 19 4 17 1; 52 | #X connect 19 5 12 1; 53 | #X connect 21 0 13 0; 54 | #X connect 26 0 27 0; 55 | #X connect 27 0 1 0; 56 | -------------------------------------------------------------------------------- /pan-stereo.pd: -------------------------------------------------------------------------------- 1 | #N canvas 75 404 623 365 10; 2 | #X obj 53 67 inlet~; 3 | #X obj 206 66 inlet; 4 | #X obj 52 306 outlet~; 5 | #X obj 148 305 outlet~; 6 | #X obj 52 266 *~ 0; 7 | #X obj 147 266 *~ 0; 8 | #X text 200 50 -1...+1; 9 | #X obj 358 57 loadbang; 10 | #X obj 358 78 expr asin(1)/2; 11 | #X text 453 75 pi/4; 12 | #X obj 188 210 expr sin((1-$f1)*$f2); 13 | #X obj 359 209 expr sin((1+$f1)*$f2); 14 | #X text 417 27 grrrr.org 2012; 15 | #X obj 546 77 inlet; 16 | #X text 547 60 gain; 17 | #X obj 358 155 * 1; 18 | #X obj 430 157 t b a; 19 | #X connect 0 0 4 0; 20 | #X connect 0 0 5 0; 21 | #X connect 1 0 10 0; 22 | #X connect 1 0 11 0; 23 | #X connect 4 0 2 0; 24 | #X connect 5 0 3 0; 25 | #X connect 7 0 8 0; 26 | #X connect 8 0 15 0; 27 | #X connect 10 0 4 1; 28 | #X connect 11 0 5 1; 29 | #X connect 13 0 16 0; 30 | #X connect 15 0 10 1; 31 | #X connect 15 0 11 1; 32 | #X connect 16 0 15 0; 33 | #X connect 16 1 15 1; 34 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | (c) 2012-22 grrrr.org 2 | http://grrrr.org/research/software/upp/ 3 | 4 | License: CC-BY-SA 5 | 6 | The Universal Polyphonic Player (short UPP) is an infrastructure for all kinds of polyphonic events – be it note-like events, other generated sounds or short grains in granular synthesis. The strengths of the system are a modular, easily extendible design, almost unlimited polyphony, ease of control, DSP load scaling and sample-accurate timing. 7 | 8 | Please refer to the tutorials folder and the UPP web page for how to get started. 9 | -------------------------------------------------------------------------------- /spat-invd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 88 71 570 296 10; 2 | #X obj 47 34 inlet; 3 | #X obj 47 242 outlet; 4 | #X obj 208 33 inlet; 5 | #X obj 289 140 route float; 6 | #X obj 47 74 upp._extract 5; 7 | #X obj 208 77 upp._extract 5; 8 | #X obj 47 169 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 9 | #X obj 289 116 list split 1; 10 | #X obj 289 164 list append; 11 | #X obj 188 244 upp._spat upp._spat.invd \$1 \$2; 12 | #X text 54 150 synth abstraction; 13 | #X text 293 98 modifying messages must start with float; 14 | #X text 276 224 x y z bias power; 15 | #X connect 0 0 4 0; 16 | #X connect 2 0 5 0; 17 | #X connect 3 0 8 0; 18 | #X connect 4 0 6 0; 19 | #X connect 4 1 9 1; 20 | #X connect 5 0 6 1; 21 | #X connect 5 1 7 0; 22 | #X connect 6 0 1 0; 23 | #X connect 6 1 9 0; 24 | #X connect 7 0 3 0; 25 | #X connect 7 1 8 1; 26 | #X connect 8 0 9 1; 27 | -------------------------------------------------------------------------------- /spat-mono.pd: -------------------------------------------------------------------------------- 1 | #N canvas 191 160 384 203 10; 2 | #X obj 39 23 inlet; 3 | #X obj 39 143 outlet; 4 | #X obj 197 144 throw~ \$1; 5 | #X obj 174 23 inlet; 6 | #X text 38 159 release; 7 | #X obj 39 77 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 8 | #X connect 0 0 5 0; 9 | #X connect 3 0 5 1; 10 | #X connect 5 0 1 0; 11 | #X connect 5 1 2 0; 12 | -------------------------------------------------------------------------------- /spat-multi.pd: -------------------------------------------------------------------------------- 1 | #N canvas 21 28 535 417 10; 2 | #X obj 217 255 int; 3 | #X obj 249 255 + 1; 4 | #X obj 183 254 -; 5 | #X obj 183 292 expr cos($f1*1.5708); 6 | #X obj 315 292 expr sin($f1*1.5708); 7 | #X obj 402 366 catch~ \$0-dummy; 8 | #X obj 282 367 throw~ \$0-dummy; 9 | #X obj 162 367 throw~ \$0-dummy; 10 | #X obj 186 65 inlet; 11 | #X obj 162 344 *~ 0; 12 | #X obj 282 344 *~ 0; 13 | #X msg 197 345 set \$2-\$1; 14 | #X msg 317 344 set \$2-\$1; 15 | #X obj 198 190 min; 16 | #X obj 379 62 loadbang; 17 | #X obj 379 85 f \$2; 18 | #X obj 379 107 - 0.001; 19 | #X text 46 18 multi-pan \$1... bus-basename \, \$2...number of speakers 20 | ; 21 | #X obj 198 165 max 1; 22 | #X obj 45 67 inlet; 23 | #X obj 45 94 upp._extract 1; 24 | #X obj 45 143 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 25 | #X obj 45 362 outlet; 26 | #X obj 198 139 route float; 27 | #X obj 186 92 upp._extract 1; 28 | #X obj 198 214 t a a; 29 | #X obj 197 325 list append \$1; 30 | #X obj 317 324 list append \$1; 31 | #X connect 0 0 2 1; 32 | #X connect 0 0 1 0; 33 | #X connect 0 0 26 0; 34 | #X connect 1 0 27 0; 35 | #X connect 2 0 3 0; 36 | #X connect 2 0 4 0; 37 | #X connect 3 0 9 1; 38 | #X connect 4 0 10 1; 39 | #X connect 8 0 24 0; 40 | #X connect 9 0 7 0; 41 | #X connect 10 0 6 0; 42 | #X connect 11 0 7 0; 43 | #X connect 12 0 6 0; 44 | #X connect 13 0 25 0; 45 | #X connect 14 0 15 0; 46 | #X connect 15 0 16 0; 47 | #X connect 16 0 13 1; 48 | #X connect 18 0 13 0; 49 | #X connect 19 0 20 0; 50 | #X connect 20 0 21 0; 51 | #X connect 20 1 23 0; 52 | #X connect 21 0 22 0; 53 | #X connect 23 0 18 0; 54 | #X connect 24 0 21 1; 55 | #X connect 24 1 23 0; 56 | #X connect 25 0 2 0; 57 | #X connect 25 1 0 0; 58 | #X connect 26 0 11 0; 59 | #X connect 27 0 12 0; 60 | -------------------------------------------------------------------------------- /spat-quad.pd: -------------------------------------------------------------------------------- 1 | #N canvas 242 387 435 422 10; 2 | #X obj 47 34 inlet; 3 | #X obj 47 357 outlet; 4 | #X obj 208 33 inlet; 5 | #X obj 47 169 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 6 | #X obj 206 238 pan-stereo; 7 | #X obj 263 214 unpack; 8 | #X obj 292 334 throw~ \$1-2; 9 | #X obj 180 337 throw~ \$1-1; 10 | #X obj 206 287 pan-stereo; 11 | #X obj 293 288 pan-stereo; 12 | #X obj 205 362 throw~ \$1-3; 13 | #X obj 320 365 throw~ \$1-4; 14 | #X obj 263 111 unpack; 15 | #X obj 263 133 route float; 16 | #X obj 263 154 pack; 17 | #X obj 47 74 upp._extract 2; 18 | #X obj 208 77 upp._extract 2; 19 | #X connect 0 0 15 0; 20 | #X connect 2 0 16 0; 21 | #X connect 3 0 1 0; 22 | #X connect 3 1 4 0; 23 | #X connect 4 0 8 0; 24 | #X connect 4 1 9 0; 25 | #X connect 5 0 4 1; 26 | #X connect 5 1 8 1; 27 | #X connect 5 1 9 1; 28 | #X connect 8 0 7 0; 29 | #X connect 8 1 10 0; 30 | #X connect 9 0 6 0; 31 | #X connect 9 1 11 0; 32 | #X connect 12 0 13 0; 33 | #X connect 12 1 14 1; 34 | #X connect 13 0 14 0; 35 | #X connect 14 0 5 0; 36 | #X connect 15 0 3 0; 37 | #X connect 15 1 5 0; 38 | #X connect 16 0 3 1; 39 | #X connect 16 1 12 0; 40 | -------------------------------------------------------------------------------- /spat-stereo.pd: -------------------------------------------------------------------------------- 1 | #N canvas 288 318 447 260 10; 2 | #X obj 51 30 inlet; 3 | #X obj 51 209 outlet; 4 | #X obj 208 29 inlet; 5 | #X obj 51 123 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 6 | #X obj 291 209 throw~ \$1-2; 7 | #X obj 204 208 throw~ \$1-1; 8 | #X obj 204 159 pan-stereo; 9 | #X text 310 25 grrrr.org 2012; 10 | #X obj 261 105 route float; 11 | #X text 257 124 any non-float is ignored; 12 | #X obj 51 60 upp._extract 1; 13 | #X obj 208 61 upp._extract 1; 14 | #X connect 0 0 10 0; 15 | #X connect 2 0 11 0; 16 | #X connect 3 0 1 0; 17 | #X connect 3 1 6 0; 18 | #X connect 6 0 5 0; 19 | #X connect 6 1 4 0; 20 | #X connect 8 0 6 1; 21 | #X connect 10 0 3 0; 22 | #X connect 10 1 6 1; 23 | #X connect 11 0 3 1; 24 | #X connect 11 1 8 0; 25 | -------------------------------------------------------------------------------- /spat-varbus.pd: -------------------------------------------------------------------------------- 1 | #N canvas 244 267 445 257 10; 2 | #X obj 51 30 inlet; 3 | #X obj 51 204 outlet; 4 | #X obj 204 29 inlet; 5 | #X text 310 25 grrrr.org 2012; 6 | #X obj 257 102 route symbol; 7 | #X text 253 121 any non-symbol is ignored; 8 | #X msg 257 155 set \$1; 9 | #X obj 313 205 catch~ \$0-dummy; 10 | #X obj 204 205 throw~ \$0-dummy; 11 | #X obj 51 141 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 12 | #X obj 51 59 upp._extract 1; 13 | #X obj 204 60 upp._extract 1; 14 | #X connect 0 0 10 0; 15 | #X connect 2 0 11 0; 16 | #X connect 4 0 6 0; 17 | #X connect 6 0 8 0; 18 | #X connect 9 0 1 0; 19 | #X connect 9 1 8 0; 20 | #X connect 10 0 9 0; 21 | #X connect 10 1 6 0; 22 | #X connect 11 0 9 1; 23 | #X connect 11 1 4 0; 24 | -------------------------------------------------------------------------------- /spat-vbap.pd: -------------------------------------------------------------------------------- 1 | #N canvas 88 71 402 288 10; 2 | #X obj 47 34 inlet; 3 | #X obj 47 242 outlet; 4 | #X obj 208 33 inlet; 5 | #X obj 289 142 route float; 6 | #X obj 47 74 upp._extract 3; 7 | #X text 204 223 azimuth elevation spread; 8 | #X obj 47 169 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 9 | #X obj 289 118 list split 1; 10 | #X obj 289 166 list append; 11 | #X text 54 150 synth abstraction; 12 | #X obj 164 242 upp._spat upp._spat.vbap \$1 \$2; 13 | #X obj 208 77 upp._extract 3; 14 | #X connect 0 0 4 0; 15 | #X connect 2 0 11 0; 16 | #X connect 3 0 8 0; 17 | #X connect 4 0 6 0; 18 | #X connect 4 1 10 1; 19 | #X connect 6 0 1 0; 20 | #X connect 6 1 10 0; 21 | #X connect 7 0 3 0; 22 | #X connect 7 1 8 1; 23 | #X connect 8 0 10 1; 24 | #X connect 11 0 6 1; 25 | #X connect 11 1 7 0; 26 | -------------------------------------------------------------------------------- /syn-dirac.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 23 459 396 10; 2 | #X obj 37 41 inlet; 3 | #X obj 72 302 outlet~; 4 | #X obj 37 87 list split 1; 5 | #X obj 52 124 cnv 15 120 150 empty empty play_dirac 20 12 0 14 -233017 6 | -66577 0; 7 | #X obj 313 43 inlet; 8 | #X obj 316 298 outlet; 9 | #X text 317 18 grrrr.org 2018; 10 | #X text 36 20 tag volume; 11 | #X obj 72 193 upp.dirac~; 12 | #X obj 71 156 t b a; 13 | #X msg 315 274 1; 14 | #X connect 0 0 2 0; 15 | #X connect 2 1 9 0; 16 | #X connect 8 0 1 0; 17 | #X connect 9 0 10 0; 18 | #X connect 9 1 8 0; 19 | #X connect 10 0 5 0; 20 | -------------------------------------------------------------------------------- /syn-grain.pd: -------------------------------------------------------------------------------- 1 | #N canvas 95 98 617 430 10; 2 | #X obj 76 62 inlet; 3 | #X obj 227 389 outlet~; 4 | #X obj 227 364 *~; 5 | #X obj 63 389 outlet; 6 | #X obj 304 83 unpack 0 0 0 0; 7 | #X obj 76 89 list split 1; 8 | #X obj 76 118 t b b b a; 9 | #X obj 218 204 cnv 15 120 150 empty empty play_sample 20 12 0 14 -233017 10 | -66577 0; 11 | #X obj 227 324 tabplay~; 12 | #X msg 270 287 set \$1; 13 | #X obj 227 287 f; 14 | #X obj 386 195 cnv 15 180 150 empty empty play_envelope 20 12 0 14 15 | -233017 -66577 0; 16 | #X obj 473 252 pack 0 0 0; 17 | #X text 400 237 attack; 18 | #X text 477 237 release; 19 | #X obj 337 146 +; 20 | #X obj 63 220 +; 21 | #X text 58 243 total duration; 22 | #X text 328 63 L<<<< frequency; 98 | #X text 13 267 gain; 99 | #X text 31 280 ^; 100 | #X text 31 285 |; 101 | #X text 31 298 |; 102 | #X obj 375 406 catch~ \$0-bus; 103 | #N canvas 0 22 1314 340 50voices 0; 104 | #X obj 26 21 inlet; 105 | #X obj 1046 293 outlet; 106 | #X obj 25 56 upp.flow spat-mono \$0-bus note_alt_vol; 107 | #X obj 25 78 upp.flow spat-mono \$0-bus note_alt_vol; 108 | #X obj 25 100 upp.flow spat-mono \$0-bus note_alt_vol; 109 | #X obj 25 122 upp.flow spat-mono \$0-bus note_alt_vol; 110 | #X obj 25 144 upp.flow spat-mono \$0-bus note_alt_vol; 111 | #X obj 25 166 upp.flow spat-mono \$0-bus note_alt_vol; 112 | #X obj 25 188 upp.flow spat-mono \$0-bus note_alt_vol; 113 | #X obj 25 210 upp.flow spat-mono \$0-bus note_alt_vol; 114 | #X obj 25 232 upp.flow spat-mono \$0-bus note_alt_vol; 115 | #X obj 25 254 upp.flow spat-mono \$0-bus note_alt_vol; 116 | #X obj 278 56 upp.flow spat-mono \$0-bus note_alt_vol; 117 | #X obj 278 78 upp.flow spat-mono \$0-bus note_alt_vol; 118 | #X obj 278 100 upp.flow spat-mono \$0-bus note_alt_vol; 119 | #X obj 278 122 upp.flow spat-mono \$0-bus note_alt_vol; 120 | #X obj 278 144 upp.flow spat-mono \$0-bus note_alt_vol; 121 | #X obj 278 166 upp.flow spat-mono \$0-bus note_alt_vol; 122 | #X obj 278 188 upp.flow spat-mono \$0-bus note_alt_vol; 123 | #X obj 278 210 upp.flow spat-mono \$0-bus note_alt_vol; 124 | #X obj 278 232 upp.flow spat-mono \$0-bus note_alt_vol; 125 | #X obj 278 254 upp.flow spat-mono \$0-bus note_alt_vol; 126 | #X obj 1046 54 upp.flow spat-mono \$0-bus note_alt_vol; 127 | #X obj 1046 76 upp.flow spat-mono \$0-bus note_alt_vol; 128 | #X obj 1046 98 upp.flow spat-mono \$0-bus note_alt_vol; 129 | #X obj 1046 120 upp.flow spat-mono \$0-bus note_alt_vol; 130 | #X obj 1046 142 upp.flow spat-mono \$0-bus note_alt_vol; 131 | #X obj 1046 164 upp.flow spat-mono \$0-bus note_alt_vol; 132 | #X obj 1046 186 upp.flow spat-mono \$0-bus note_alt_vol; 133 | #X obj 1046 208 upp.flow spat-mono \$0-bus note_alt_vol; 134 | #X obj 1046 230 upp.flow spat-mono \$0-bus note_alt_vol; 135 | #X obj 1046 252 upp.flow spat-mono \$0-bus note_alt_vol; 136 | #X text 74 20 message; 137 | #X obj 533 55 upp.flow spat-mono \$0-bus note_alt_vol; 138 | #X obj 533 77 upp.flow spat-mono \$0-bus note_alt_vol; 139 | #X obj 533 99 upp.flow spat-mono \$0-bus note_alt_vol; 140 | #X obj 533 121 upp.flow spat-mono \$0-bus note_alt_vol; 141 | #X obj 533 143 upp.flow spat-mono \$0-bus note_alt_vol; 142 | #X obj 533 165 upp.flow spat-mono \$0-bus note_alt_vol; 143 | #X obj 533 187 upp.flow spat-mono \$0-bus note_alt_vol; 144 | #X obj 533 209 upp.flow spat-mono \$0-bus note_alt_vol; 145 | #X obj 533 231 upp.flow spat-mono \$0-bus note_alt_vol; 146 | #X obj 533 253 upp.flow spat-mono \$0-bus note_alt_vol; 147 | #X obj 788 54 upp.flow spat-mono \$0-bus note_alt_vol; 148 | #X obj 788 76 upp.flow spat-mono \$0-bus note_alt_vol; 149 | #X obj 788 98 upp.flow spat-mono \$0-bus note_alt_vol; 150 | #X obj 788 120 upp.flow spat-mono \$0-bus note_alt_vol; 151 | #X obj 788 142 upp.flow spat-mono \$0-bus note_alt_vol; 152 | #X obj 788 164 upp.flow spat-mono \$0-bus note_alt_vol; 153 | #X obj 788 186 upp.flow spat-mono \$0-bus note_alt_vol; 154 | #X obj 788 208 upp.flow spat-mono \$0-bus note_alt_vol; 155 | #X obj 788 230 upp.flow spat-mono \$0-bus note_alt_vol; 156 | #X obj 788 252 upp.flow spat-mono \$0-bus note_alt_vol; 157 | #X text 1100 294 overflow; 158 | #X text 1198 15 grrrr.org 2012; 159 | #X connect 0 0 2 0; 160 | #X connect 2 0 3 0; 161 | #X connect 3 0 4 0; 162 | #X connect 4 0 5 0; 163 | #X connect 5 0 6 0; 164 | #X connect 6 0 7 0; 165 | #X connect 7 0 8 0; 166 | #X connect 8 0 9 0; 167 | #X connect 9 0 10 0; 168 | #X connect 10 0 11 0; 169 | #X connect 11 0 12 0; 170 | #X connect 12 0 13 0; 171 | #X connect 13 0 14 0; 172 | #X connect 14 0 15 0; 173 | #X connect 15 0 16 0; 174 | #X connect 16 0 17 0; 175 | #X connect 17 0 18 0; 176 | #X connect 18 0 19 0; 177 | #X connect 19 0 20 0; 178 | #X connect 20 0 21 0; 179 | #X connect 21 0 33 0; 180 | #X connect 22 0 23 0; 181 | #X connect 23 0 24 0; 182 | #X connect 24 0 25 0; 183 | #X connect 25 0 26 0; 184 | #X connect 26 0 27 0; 185 | #X connect 27 0 28 0; 186 | #X connect 28 0 29 0; 187 | #X connect 29 0 30 0; 188 | #X connect 30 0 31 0; 189 | #X connect 31 0 1 0; 190 | #X connect 33 0 34 0; 191 | #X connect 34 0 35 0; 192 | #X connect 35 0 36 0; 193 | #X connect 36 0 37 0; 194 | #X connect 37 0 38 0; 195 | #X connect 38 0 39 0; 196 | #X connect 39 0 40 0; 197 | #X connect 40 0 41 0; 198 | #X connect 41 0 42 0; 199 | #X connect 42 0 43 0; 200 | #X connect 43 0 44 0; 201 | #X connect 44 0 45 0; 202 | #X connect 45 0 46 0; 203 | #X connect 46 0 47 0; 204 | #X connect 47 0 48 0; 205 | #X connect 48 0 49 0; 206 | #X connect 49 0 50 0; 207 | #X connect 50 0 51 0; 208 | #X connect 51 0 52 0; 209 | #X connect 52 0 22 0; 210 | #X restore 47 429 pd 50voices; 211 | #X connect 5 0 10 0; 212 | #X connect 6 0 11 0; 213 | #X connect 9 0 20 0; 214 | #X connect 10 0 9 0; 215 | #X connect 11 0 12 0; 216 | #X connect 11 1 12 1; 217 | #X connect 12 0 5 0; 218 | #X connect 19 0 13 0; 219 | #X connect 20 0 7 0; 220 | -------------------------------------------------------------------------------- /tutorials/5a-chained.pd: -------------------------------------------------------------------------------- 1 | #N canvas 14 28 551 520 10; 2 | #X declare -path .. -path .; 3 | #X obj 27 11 cnv 15 500 40 empty empty Universal_Polyphonic_Player 4 | 10 10 0 14 -233017 -66577 0; 5 | #X text 34 34 playing notes with a formant-defined timbre; 6 | #X text 406 98 to find voice patch; 7 | #X obj 380 78 declare -path .. -path .; 8 | #X text 410 14 grrrr.org \, 2012-15; 9 | #X floatatom 66 169 5 0 0 1 MIDI_note - -, f 5; 10 | #X obj 66 459 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 11 | -1 -1; 12 | #X text 140 205 partials; 13 | #X obj 66 204 pack 0 8; 14 | #X text 70 401 midinote volume; 15 | #X obj 66 123 unpack; 16 | #X obj 66 143 spigot; 17 | #X obj 66 85 kbd; 18 | #X obj 368 453 out-mono; 19 | #N canvas 812 212 637 584 timbre 0; 20 | #X obj 90 28 inlet; 21 | #X obj 82 538 outlet; 22 | #N canvas 0 22 450 300 (subpatch) 0; 23 | #X array timbre 150 float 1; 24 | #A 0 87.6777 88.9635 89.6064 90.035 90.2493 90.8921 91.9636 92.6065 25 | 90.6779 90.8921 91.1064 91.3207 91.535 91.6064 91.6778 91.7493 91.7493 26 | 91.8564 91.9635 91.9635 92.1778 92.6064 93.0349 93.0349 89.1779 89.3922 27 | 89.8207 91.535 93.0349 93.2492 93.0349 92.6064 89.8207 88.9636 88.1065 28 | 87.2494 86.3923 85.9637 85.9637 85.9637 85.9637 85.9637 86.178 86.3923 29 | 86.6066 86.8208 87.0351 87.3029 87.5708 87.8386 88.1065 88.3743 88.6422 30 | 88.91 89.1779 89.484 89.7901 90.0962 90.4024 90.7085 91.0146 91.3207 31 | 89.3922 89.6065 90.4636 91.3207 91.535 92.8206 92.1778 92.1778 92.1778 32 | 92.1778 92.1778 92.3064 92.4349 92.5635 92.6921 92.3921 92.3921 92.6064 33 | 92.8206 93.2492 93.6778 94.642 95.6063 95.6063 92.8206 90.6779 90.4636 34 | 90.6064 90.7493 90.8921 91.3207 92.1778 88.5351 88.5351 88.5351 88.3208 35 | 88.2136 88.1065 87.7851 87.4637 87.0351 86.6066 85.5352 85.5352 85.7494 36 | 86.3923 86.8208 86.9637 87.1065 87.2494 87.2494 87.2494 87.6779 88.5351 37 | 88.9636 89.9279 90.8921 91.7493 85.1066 84.4638 84.4638 83.8209 83.8209 38 | 83.6066 83.6066 83.5352 83.4638 83.3924 83.3924 83.3209 83.2495 83.1781 39 | 83.1781 83.1781 84.0352 84.678 85.3209 85.9637 86.6066 87.2494 87.8922 40 | 88.5351 88.8208 89.1065 89.3922 89.9279 90.4636 90.6779; 41 | #X coords 0 100 149 70 300 140 1; 42 | #X restore 280 35 graph; 43 | #X floatatom 53 137 5 0 0 0 - - -, f 5; 44 | #X floatatom 171 135 5 0 0 0 - - -, f 5; 45 | #X obj 54 247 until; 46 | #X obj 54 203 f; 47 | #X obj 53 224 t a b; 48 | #X obj 52 280 f; 49 | #X obj 86 279 + 1; 50 | #X obj 67 167 t b a; 51 | #X obj 84 328 *; 52 | #X msg 108 249 1; 53 | #X obj 83 399 t a a; 54 | #X obj 83 511 pack; 55 | #X obj 115 448 dbtopow; 56 | #X obj 91 61 unpack; 57 | #X text 171 116 partials; 58 | #X text 223 35 dB; 59 | #X text 458 178 MIDI note 0...150; 60 | #X text 116 281 count partials; 61 | #X text 49 346 partial frequencies; 62 | #X text 226 424 fetch gain from table; 63 | #X obj 53 94 mtof; 64 | #X text 24 117 fundamental frq; 65 | #X obj 83 372 ftom; 66 | #X text 45 491 midinote volume; 67 | #X obj 115 425 tabread timbre; 68 | #X msg 469 222 \; timbre const 80; 69 | #X obj 565 20 bng 15 250 50 0 empty empty clear -35 7 0 10 -204786 70 | -1 -1; 71 | #X text 222 52 70..100; 72 | #X connect 0 0 16 0; 73 | #X connect 3 0 10 0; 74 | #X connect 4 0 6 1; 75 | #X connect 5 0 8 0; 76 | #X connect 6 0 7 0; 77 | #X connect 7 0 5 0; 78 | #X connect 7 1 12 0; 79 | #X connect 8 0 9 0; 80 | #X connect 8 0 11 0; 81 | #X connect 9 0 8 1; 82 | #X connect 10 0 6 0; 83 | #X connect 10 1 11 1; 84 | #X connect 11 0 25 0; 85 | #X connect 12 0 8 1; 86 | #X connect 13 0 14 0; 87 | #X connect 13 1 27 0; 88 | #X connect 14 0 1 0; 89 | #X connect 15 0 14 1; 90 | #X connect 16 0 23 0; 91 | #X connect 16 1 4 0; 92 | #X connect 23 0 3 0; 93 | #X connect 25 0 13 0; 94 | #X connect 27 0 15 0; 95 | #X connect 29 0 28 0; 96 | #X coords 0 -1 1 1 300 155 2 280 20; 97 | #X restore 66 229 pd timbre; 98 | #X text 267 387 ---> frequency; 99 | #X text 32 245 gain; 100 | #X text 50 258 ^; 101 | #X text 50 263 |; 102 | #X text 50 276 |; 103 | #X floatatom 297 458 5 0 0 0 voices_active - -, f 5; 104 | #X obj 368 429 catch~ \$0-bus; 105 | #X obj 66 431 upp.xc 50 spat-mono \$0-bus note_alt_vol; 106 | #X connect 5 0 8 0; 107 | #X connect 8 0 14 0; 108 | #X connect 10 0 11 0; 109 | #X connect 10 1 11 1; 110 | #X connect 11 0 5 0; 111 | #X connect 12 0 10 0; 112 | #X connect 14 0 22 0; 113 | #X connect 21 0 13 0; 114 | #X connect 22 0 6 0; 115 | #X connect 22 2 20 0; 116 | -------------------------------------------------------------------------------- /tutorials/5b-2level.pd: -------------------------------------------------------------------------------- 1 | #N canvas 6 22 559 693 10; 2 | #X declare -path .. -path .; 3 | #X obj 27 11 cnv 15 500 40 empty empty Universal_Polyphonic_Player 4 | 10 10 0 14 -233017 -66577 0; 5 | #X text 34 34 playing notes with note-dependent timbre and decay; 6 | #X text 405 98 to find voice patch; 7 | #X text 411 14 grrrr.org \, 2012-15; 8 | #X obj 378 78 declare -path .. -path .; 9 | #X floatatom 44 164 5 0 0 1 MIDI_note - -, f 5; 10 | #X obj 44 80 kbd; 11 | #X obj 44 640 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 12 | -1 -1; 13 | #X text 118 200 partials; 14 | #N canvas 621 281 755 641 timbre+dur 0; 15 | #X obj 90 28 inlet; 16 | #X obj 83 590 outlet; 17 | #N canvas 0 22 450 300 (subpatch) 0; 18 | #X array timbre 150 float 1; 19 | #A 0 89.107 89.3213 89.5356 89.7499 89.9642 89.9642 89.9642 90.3928 20 | 90.4642 90.5357 90.6071 90.8214 91.0357 91.0357 91.3571 91.6786 91.7322 21 | 91.7857 91.8393 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 22 | 90.8214 90.6071 89.5356 88.8928 88.8928 88.8928 88.8928 89.2499 89.6071 23 | 89.9642 90.3214 90.6785 91.0357 91.25 91.4643 91.6786 91.8929 91.8929 24 | 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 92.1072 25 | 92.8215 93.5358 94.2501 95.5359 96.1788 97.2502 97.8931 97.8931 98.1074 26 | 98.4289 98.7503 99.1789 100.036 98.3217 94.2501 89.107 89.4285 89.7499 27 | 90.1785 90.6071 90.875 91.1428 91.4107 91.6786 92 92.3215 92.5358 92.9643 28 | 93.3929 93.8215 94.143 94.4644 94.893 95.1073 95.3216 95.643 96.1788 29 | 96.5359 96.8931 97.0359 94.2501 93.6072 90.8214 90.8214 91.25 91.6786 30 | 91.8929 92.1072 92.3215 92.5358 92.5358 92.9643 92.9643 92.9643 92.9643 31 | 92.9643 92.9643 92.9643 93.1786 93.3929 93.6072 93.8215 93.6072 92.7501 32 | 91.6786 89.9642 88.4642 88.0356 86.3212 85.8926 85.2497 84.6069 83.964 33 | 83.3211 82.8925 81.6067 80.8567 80.1067 79.4638 79.4638 79.4638 79.4638 34 | 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 35 | 79.4638 79.4638 79.4638 78.8209 78.8209 79.0352; 36 | #X coords 0 100 149 70 400 140 1; 37 | #X restore 300 47 graph; 38 | #X floatatom 53 137 5 0 0 0 - - -, f 5; 39 | #X floatatom 171 135 5 0 0 0 - - -, f 5; 40 | #X obj 54 247 until; 41 | #X obj 54 203 f; 42 | #X obj 53 224 t a b; 43 | #X obj 52 280 f; 44 | #X obj 86 279 + 1; 45 | #X obj 67 167 t b a; 46 | #X obj 84 328 *; 47 | #X msg 108 249 1; 48 | #X obj 116 500 dbtopow; 49 | #X obj 91 61 unpack; 50 | #X text 171 116 partials; 51 | #X text 116 281 count partials; 52 | #X text 49 346 partial frequencies; 53 | #X text 229 478 fetch gain from table; 54 | #X obj 53 94 mtof; 55 | #X text 24 117 fundamental frq; 56 | #X obj 83 372 ftom; 57 | #N canvas 0 22 450 300 (subpatch) 0; 58 | #X array decay 150 float 1; 59 | #A 0 967.852 967.852 967.852 967.852 967.852 967.852 967.852 967.852 60 | 964.281 960.71 953.567 953.567 953.567 953.567 953.567 939.281 939.281 61 | 939.281 935.709 932.138 924.995 924.995 924.995 917.852 917.852 910.709 62 | 910.709 896.422 889.279 889.279 882.136 878.565 860.707 860.707 860.707 63 | 851.183 841.659 832.135 828.563 824.992 817.849 810.706 799.991 789.276 64 | 778.562 767.847 746.418 742.847 739.275 724.989 717.846 710.703 703.56 65 | 689.274 682.13 660.701 653.558 646.415 635.701 624.986 610.7 607.128 66 | 589.271 585.699 582.128 567.841 560.698 546.412 539.269 524.983 517.84 67 | 503.554 489.268 482.125 460.695 453.552 446.409 439.266 428.552 417.837 68 | 396.408 389.265 382.122 367.836 360.693 339.263 332.12 317.834 310.691 69 | 296.405 289.262 285.69 282.119 274.976 267.833 267.833 260.69 253.547 70 | 246.403 242.832 239.26 232.117 217.831 210.688 203.545 196.402 189.259 71 | 182.116 174.973 174.973 160.687 153.544 146.401 146.401 139.257 139.257 72 | 139.257 132.114 132.114 132.114 124.971 117.828 117.828 117.828 117.828 73 | 110.685 110.685 110.685 103.542 103.542 96.399 96.399 89.256 89.256 74 | 74.9698 74.9698 74.9698 67.8268 67.8268 60.6837 60.6837 60.6837 60.6837 75 | 60.6837 53.5406 53.5406 53.5406 53.5406 46.3976 46.3976; 76 | #X coords 0 1000 149 0 400 140 1; 77 | #X restore 300 205 graph; 78 | #X obj 83 399 t a a a; 79 | #X text 46 543 midinote volume attack decay; 80 | #X obj 84 563 pack 0 0 20 0; 81 | #X text 239 224 0..1000; 82 | #X text 230 206 decay(ms); 83 | #X text 239 38 gain(dB); 84 | #X obj 116 477 tabread timbre; 85 | #X msg 300 364 \; timbre const 80; 86 | #X text 581 350 MIDI note 0...150; 87 | #X obj 684 30 bng 15 250 50 0 empty empty clear -35 7 0 10 -204786 88 | -1 -1; 89 | #X msg 430 364 \; decay const 500; 90 | #X obj 150 446 tabread decay; 91 | #X text 270 445 fetch decay time from table; 92 | #X text 243 56 70..100; 93 | #X connect 0 0 14 0; 94 | #X connect 3 0 10 0; 95 | #X connect 4 0 6 1; 96 | #X connect 5 0 8 0; 97 | #X connect 6 0 7 0; 98 | #X connect 7 0 5 0; 99 | #X connect 7 1 12 0; 100 | #X connect 8 0 9 0; 101 | #X connect 8 0 11 0; 102 | #X connect 9 0 8 1; 103 | #X connect 10 0 6 0; 104 | #X connect 10 1 11 1; 105 | #X connect 11 0 21 0; 106 | #X connect 12 0 8 1; 107 | #X connect 13 0 25 1; 108 | #X connect 14 0 19 0; 109 | #X connect 14 1 4 0; 110 | #X connect 19 0 3 0; 111 | #X connect 21 0 23 0; 112 | #X connect 23 0 25 0; 113 | #X connect 23 1 29 0; 114 | #X connect 23 2 34 0; 115 | #X connect 25 0 1 0; 116 | #X connect 29 0 13 0; 117 | #X connect 32 0 30 0; 118 | #X connect 32 0 33 0; 119 | #X connect 34 0 25 3; 120 | #X coords 0 -1 1 1 400 320 2 300 25; 121 | #X restore 44 227 pd timbre+dur; 122 | #X text 49 595 bus midinote volume attack decay; 123 | #X obj 44 117 unpack; 124 | #X obj 44 138 spigot; 125 | #X floatatom 210 640 5 0 0 0 voices_active - -, f 5; 126 | #X obj 305 616 out-mono; 127 | #X obj 44 199 pack 0 15; 128 | #X obj 305 592 catch~ \$0-bus; 129 | #X obj 44 562 list prepend \$0-bus; 130 | #X obj 44 613 upp.x2 100 note_busvoldur; 131 | #X connect 5 0 15 0; 132 | #X connect 6 0 11 0; 133 | #X connect 9 0 17 0; 134 | #X connect 11 0 12 0; 135 | #X connect 11 1 12 1; 136 | #X connect 12 0 5 0; 137 | #X connect 15 0 9 0; 138 | #X connect 16 0 14 0; 139 | #X connect 17 0 18 0; 140 | #X connect 18 0 7 0; 141 | #X connect 18 2 13 0; 142 | -------------------------------------------------------------------------------- /tutorials/5c-table.pd: -------------------------------------------------------------------------------- 1 | #N canvas 25 41 555 714 10; 2 | #X declare -path .. -path .; 3 | #X obj 27 11 cnv 15 500 40 empty empty Universal_Polyphonic_Player 4 | 10 10 0 14 -233017 -66577 0; 5 | #X text 34 34 playing notes with note-dependent timbre and decay; 6 | #X text 406 100 to find voice patch; 7 | #X text 411 14 grrrr.org \, 2012-15; 8 | #X obj 379 79 declare -path .. -path .; 9 | #X floatatom 68 162 5 0 0 1 MIDI_note - -, f 5; 10 | #X obj 68 83 kbd; 11 | #X obj 68 664 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 12 | -1 -1; 13 | #X text 142 206 partials; 14 | #N canvas 621 281 755 641 timbre+dur 0; 15 | #X obj 90 28 inlet; 16 | #X obj 83 590 outlet; 17 | #N canvas 0 22 450 300 (subpatch) 0; 18 | #X array timbre 150 float 1; 19 | #A 0 89.107 89.3213 89.5356 89.7499 89.9642 89.9642 89.9642 90.3928 20 | 90.4642 90.5357 90.6071 90.8214 91.0357 91.0357 91.3571 91.6786 91.7322 21 | 91.7857 91.8393 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 22 | 90.8214 90.6071 89.5356 88.8928 88.8928 88.8928 88.8928 89.2499 89.6071 23 | 89.9642 90.3214 90.6785 91.0357 91.25 91.4643 91.6786 91.8929 91.8929 24 | 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 91.8929 92.1072 25 | 92.8215 93.5358 94.2501 95.5359 96.1788 97.2502 97.8931 97.8931 98.1074 26 | 98.4289 98.7503 99.1789 100.036 98.3217 94.2501 89.107 89.4285 89.7499 27 | 90.1785 90.6071 90.875 91.1428 91.4107 91.6786 92 92.3215 92.5358 92.9643 28 | 93.3929 93.8215 94.143 94.4644 94.893 95.1073 95.3216 95.643 96.1788 29 | 96.5359 96.8931 97.0359 94.2501 93.6072 90.8214 90.8214 91.25 91.6786 30 | 91.8929 92.1072 92.3215 92.5358 92.5358 92.9643 92.9643 92.9643 92.9643 31 | 92.9643 92.9643 92.9643 93.1786 93.3929 93.6072 93.8215 93.6072 92.7501 32 | 91.6786 89.9642 88.4642 88.0356 86.3212 85.8926 85.2497 84.6069 83.964 33 | 83.3211 82.8925 81.6067 80.8567 80.1067 79.4638 79.4638 79.4638 79.4638 34 | 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 79.4638 35 | 79.4638 79.4638 79.4638 78.8209 78.8209 79.0352; 36 | #X coords 0 100 149 70 400 140 1; 37 | #X restore 300 47 graph; 38 | #X floatatom 53 137 5 0 0 0 - - -, f 5; 39 | #X floatatom 171 135 5 0 0 0 - - -, f 5; 40 | #X obj 54 247 until; 41 | #X obj 54 203 f; 42 | #X obj 53 224 t a b; 43 | #X obj 52 280 f; 44 | #X obj 86 279 + 1; 45 | #X obj 67 167 t b a; 46 | #X obj 84 328 *; 47 | #X msg 108 249 1; 48 | #X obj 116 500 dbtopow; 49 | #X obj 91 61 unpack; 50 | #X text 171 116 partials; 51 | #X text 116 281 count partials; 52 | #X text 49 346 partial frequencies; 53 | #X text 229 478 fetch gain from table; 54 | #X obj 53 94 mtof; 55 | #X text 24 117 fundamental frq; 56 | #X obj 83 372 ftom; 57 | #N canvas 0 22 450 300 (subpatch) 0; 58 | #X array decay 150 float 1; 59 | #A 0 967.852 967.852 967.852 967.852 967.852 967.852 967.852 967.852 60 | 964.281 960.71 953.567 953.567 953.567 953.567 953.567 939.281 939.281 61 | 939.281 935.709 932.138 924.995 924.995 924.995 917.852 917.852 910.709 62 | 910.709 896.422 889.279 889.279 882.136 878.565 860.707 860.707 860.707 63 | 851.183 841.659 832.135 828.563 824.992 817.849 810.706 799.991 789.276 64 | 778.562 767.847 746.418 742.847 739.275 724.989 717.846 710.703 703.56 65 | 689.274 682.13 660.701 653.558 646.415 635.701 624.986 610.7 607.128 66 | 589.271 585.699 582.128 567.841 560.698 546.412 539.269 524.983 517.84 67 | 503.554 489.268 482.125 460.695 453.552 446.409 439.266 428.552 417.837 68 | 396.408 389.265 382.122 367.836 360.693 339.263 332.12 317.834 310.691 69 | 296.405 289.262 285.69 282.119 274.976 267.833 267.833 260.69 253.547 70 | 246.403 242.832 239.26 232.117 217.831 210.688 203.545 196.402 189.259 71 | 182.116 174.973 174.973 160.687 153.544 146.401 146.401 139.257 139.257 72 | 139.257 132.114 132.114 132.114 124.971 117.828 117.828 117.828 117.828 73 | 110.685 110.685 110.685 103.542 103.542 96.399 96.399 89.256 89.256 74 | 74.9698 74.9698 74.9698 67.8268 67.8268 60.6837 60.6837 60.6837 60.6837 75 | 60.6837 53.5406 53.5406 53.5406 53.5406 46.3976 46.3976; 76 | #X coords 0 1000 149 0 400 140 1; 77 | #X restore 300 205 graph; 78 | #X obj 83 399 t a a a; 79 | #X text 46 543 midinote volume attack decay; 80 | #X obj 84 563 pack 0 0 20 0; 81 | #X text 239 224 0..1000; 82 | #X text 230 206 decay(ms); 83 | #X text 239 38 gain(dB); 84 | #X obj 116 477 tabread timbre; 85 | #X msg 300 364 \; timbre const 80; 86 | #X text 581 350 MIDI note 0...150; 87 | #X obj 684 30 bng 15 250 50 0 empty empty clear -35 7 0 10 -204786 88 | -1 -1; 89 | #X msg 430 364 \; decay const 500; 90 | #X obj 150 446 tabread decay; 91 | #X text 270 445 fetch decay time from table; 92 | #X text 243 56 70..100; 93 | #X connect 0 0 14 0; 94 | #X connect 3 0 10 0; 95 | #X connect 4 0 6 1; 96 | #X connect 5 0 8 0; 97 | #X connect 6 0 7 0; 98 | #X connect 7 0 5 0; 99 | #X connect 7 1 12 0; 100 | #X connect 8 0 9 0; 101 | #X connect 8 0 11 0; 102 | #X connect 9 0 8 1; 103 | #X connect 10 0 6 0; 104 | #X connect 10 1 11 1; 105 | #X connect 11 0 21 0; 106 | #X connect 12 0 8 1; 107 | #X connect 13 0 25 1; 108 | #X connect 14 0 19 0; 109 | #X connect 14 1 4 0; 110 | #X connect 19 0 3 0; 111 | #X connect 21 0 23 0; 112 | #X connect 23 0 25 0; 113 | #X connect 23 1 29 0; 114 | #X connect 23 2 34 0; 115 | #X connect 25 0 1 0; 116 | #X connect 29 0 13 0; 117 | #X connect 32 0 30 0; 118 | #X connect 32 0 33 0; 119 | #X connect 34 0 25 3; 120 | #X coords 0 -1 1 1 400 320 2 300 25; 121 | #X restore 68 230 pd timbre+dur; 122 | #X text 73 606 bus midinote volume attack decay; 123 | #X obj 68 120 unpack; 124 | #X obj 68 141 spigot; 125 | #X floatatom 261 664 5 0 0 0 voices_active - -, f 5; 126 | #X obj 365 643 out-mono; 127 | #X obj 365 619 catch~ \$0-bus; 128 | #X obj 68 565 list prepend \$0-bus; 129 | #X obj 68 205 pack 0 15; 130 | #X obj 68 624 upp.xf 100 note_busvoldur; 131 | #X connect 5 0 17 0; 132 | #X connect 6 0 11 0; 133 | #X connect 9 0 16 0; 134 | #X connect 11 0 12 0; 135 | #X connect 11 1 12 1; 136 | #X connect 12 0 5 0; 137 | #X connect 15 0 14 0; 138 | #X connect 16 0 18 0; 139 | #X connect 17 0 9 0; 140 | #X connect 18 0 7 0; 141 | #X connect 18 2 13 0; 142 | -------------------------------------------------------------------------------- /tutorials/6-granular.pd: -------------------------------------------------------------------------------- 1 | #N canvas 380 -859 621 428 10; 2 | #X declare -path .. -path .; 3 | #X obj 27 11 cnv 15 550 40 empty empty Universal_Polyphonic_Player 4 | 10 10 0 14 -233017 -66577 0; 5 | #X text 34 34 granular scrubbing through audio buffer; 6 | #X text 458 87 to find voice patch; 7 | #X text 459 15 grrrr.org \, 2012-15; 8 | #X obj 429 63 declare -path .. -path .; 9 | #X obj 39 385 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 10 | -1 -1; 11 | #X obj 42 95 hsl 250 30 0 1 0 0 empty empty scrub -2 -8 0 10 -257985 12 | -1 -1 7100 1; 13 | #X obj 39 173 *; 14 | #X text 142 195 position in buffer(ms); 15 | #X text 161 279 attack sustain decay; 16 | #X text 418 244 half window for one grain; 17 | #X floatatom 117 242 5 0 0 0 - - -; 18 | #X text 299 102 0...1; 19 | #X obj 39 195 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 20 | -262144 -1 -1 53043.8 256; 21 | #X obj 421 361 out-mono; 22 | #X obj 327 141 sample \$0-sample; 23 | #X obj 39 316 list prepend \$0-sample; 24 | #X text 160 241 change attack+decay; 25 | #X floatatom 294 382 5 0 0 0 voices_active - -; 26 | #X obj 421 263 wnd-sin \$0-wnd 1024; 27 | #X obj 421 337 catch~ \$0-bus; 28 | #X obj 39 217 upp.ms2s; 29 | #X obj 39 280 pack 0 5000 0 5000; 30 | #X obj 39 352 upp 20 spat-mono \$0-bus syn-grain \$0-wnd; 31 | #X connect 6 0 7 0; 32 | #X connect 7 0 13 0; 33 | #X connect 11 0 22 1; 34 | #X connect 11 0 22 3; 35 | #X connect 13 0 21 0; 36 | #X connect 15 0 7 1; 37 | #X connect 16 0 23 0; 38 | #X connect 20 0 14 0; 39 | #X connect 21 0 22 0; 40 | #X connect 22 0 16 0; 41 | #X connect 23 0 5 0; 42 | #X connect 23 2 18 0; 43 | -------------------------------------------------------------------------------- /tutorials/6a-granular-play.pd: -------------------------------------------------------------------------------- 1 | #N canvas 245 -980 633 510 10; 2 | #X declare -path .. -path .; 3 | #X obj 37 21 cnv 15 550 40 empty empty Universal_Polyphonic_Player 4 | 10 10 0 14 -233017 -66577 0; 5 | #X text 44 44 synchronous granular playing through audio buffer; 6 | #X text 471 107 to find voice patch; 7 | #X text 465 24 grrrr.org \, 2012-15; 8 | #X obj 440 85 declare -path .. -path .; 9 | #X obj 189 134 nbx 5 14 0.01 10 1 0 empty empty empty 0 -8 0 10 -204786 10 | -1 -1 1.07522 256; 11 | #X obj 192 116 hsl 128 15 0.01 10 1 1 empty empty speed -2 -8 0 10 12 | -204786 -1 -1 8668 1; 13 | #X obj 110 118 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0 14 | 10 -204786 -1 -1 100 256; 15 | #X obj 110 138 / 2; 16 | #X msg 68 189 0; 17 | #N canvas 762 55 588 464 play 0; 18 | #X obj 168 388 outlet; 19 | #X text 257 150 attack+sustain; 20 | #X obj 63 60 inlet; 21 | #X obj 496 62 inlet; 22 | #X text 62 43 play 0/1; 23 | #X text 494 44 speed; 24 | #X text 165 409 trigger new grain; 25 | #X obj 257 61 inlet; 26 | #X obj 336 61 inlet; 27 | #X obj 424 62 inlet; 28 | #X text 257 40 attack; 29 | #X text 337 41 sustain; 30 | #X text 420 42 release; 31 | #X obj 337 86 t b a; 32 | #X obj 169 60 inlet; 33 | #X obj 288 129 + 0; 34 | #X text 166 41 set pos; 35 | #X obj 385 200 * 1; 36 | #X obj 495 102 t b a; 37 | #X text 383 217 playpos increment; 38 | #X obj 140 277 +; 39 | #X obj 63 300 t a a; 40 | #X obj 168 358 pack 0 0 0 0; 41 | #X obj 63 216 upp.onward; 42 | #X obj 63 261 f; 43 | #X connect 2 0 23 0; 44 | #X connect 3 0 18 0; 45 | #X connect 7 0 15 0; 46 | #X connect 7 0 22 1; 47 | #X connect 8 0 13 0; 48 | #X connect 9 0 22 3; 49 | #X connect 13 0 15 0; 50 | #X connect 13 1 15 1; 51 | #X connect 13 1 22 2; 52 | #X connect 14 0 24 1; 53 | #X connect 15 0 17 0; 54 | #X connect 15 0 23 1; 55 | #X connect 17 0 20 1; 56 | #X connect 18 0 17 0; 57 | #X connect 18 1 17 1; 58 | #X connect 20 0 24 1; 59 | #X connect 21 0 22 0; 60 | #X connect 21 1 20 0; 61 | #X connect 22 0 0 0; 62 | #X connect 23 0 24 0; 63 | #X connect 24 0 21 0; 64 | #X restore 45 211 pd play ___________; 65 | #X text 419 275 half window for one grain; 66 | #X obj 106 357 moses; 67 | #X obj 154 357 spigot; 68 | #X obj 349 116 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 0 69 | 1; 70 | #X obj 446 435 out-mono; 71 | #X obj 341 187 sample \$0-sample; 72 | #X obj 45 449 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 73 | -1 -1; 74 | #X floatatom 299 449 5 0 0 0 voices_active - -; 75 | #X obj 45 398 list prepend \$0-sample; 76 | #X obj 46 118 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 0 1 77 | ; 78 | #X obj 446 413 catch~ \$0-bus; 79 | #X obj 45 299 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(samps) 80 | 0 -8 0 10 -262144 -1 -1 0 256; 81 | #X text 192 399 tag; 82 | #X obj 45 240 t a a; 83 | #X obj 454 299 wnd-lin \$0-wnd 1024; 84 | #X obj 103 187 upp.ms2s; 85 | #X obj 341 250 upp.ms2s; 86 | #X obj 45 423 upp.xc 10 spat-mono \$0-bus syn-grain \$0-wnd; 87 | #X connect 5 0 10 5; 88 | #X connect 6 0 5 0; 89 | #X connect 7 0 8 0; 90 | #X connect 8 0 26 0; 91 | #X connect 9 0 10 1; 92 | #X connect 10 0 24 0; 93 | #X connect 12 1 13 0; 94 | #X connect 13 0 9 0; 95 | #X connect 14 0 13 1; 96 | #X connect 16 0 27 0; 97 | #X connect 19 0 28 0; 98 | #X connect 20 0 10 0; 99 | #X connect 21 0 15 0; 100 | #X connect 22 0 12 0; 101 | #X connect 24 0 22 0; 102 | #X connect 24 1 19 0; 103 | #X connect 26 0 10 4; 104 | #X connect 26 0 10 2; 105 | #X connect 27 0 12 1; 106 | #X connect 28 0 17 0; 107 | #X connect 28 2 18 0; 108 | -------------------------------------------------------------------------------- /tutorials/6b-granular-play.pd: -------------------------------------------------------------------------------- 1 | #N canvas 11 29 622 509 10; 2 | #X declare -path .. -path .; 3 | #X text 399 268 half window for one grain; 4 | #X obj 96 347 moses; 5 | #X obj 144 347 spigot; 6 | #X obj 339 106 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 0 7 | 1; 8 | #X obj 473 455 out-mono; 9 | #X obj 327 180 sample \$0-sample; 10 | #X obj 35 452 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 11 | -1 -1; 12 | #X floatatom 295 449 5 0 0 0 voices_active - -, f 5; 13 | #X obj 35 396 list prepend \$0-sample; 14 | #X obj 27 11 cnv 15 550 40 empty empty Universal_Polyphonic_Player 15 | 10 10 0 14 -233017 -66577 0; 16 | #X obj 35 108 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 0 1 17 | ; 18 | #X obj 179 125 nbx 5 14 0.01 10 1 0 empty empty empty 0 -8 0 10 -204786 19 | -1 -1 0.913335 256; 20 | #X text 34 34 synchronous granular playing through audio buffer; 21 | #X obj 182 107 hsl 128 15 0.01 10 1 1 empty empty speed -2 -8 0 10 22 | -204786 -1 -1 8368 1; 23 | #X obj 473 433 catch~ \$0-bus; 24 | #X obj 214 397 list prepend \$0-sample; 25 | #X obj 100 109 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0 26 | 10 -204786 -1 -1 106.499 256; 27 | #X obj 100 129 / 2; 28 | #X msg 57 179 0; 29 | #X obj 35 289 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(samps) 30 | 0 -8 0 10 -262144 -1 -1 0 256; 31 | #X text 182 397 tag; 32 | #N canvas 472 176 603 538 play 0; 33 | #X obj 63 448 outlet; 34 | #X text 257 150 attack+sustain; 35 | #X obj 63 60 inlet; 36 | #X obj 496 62 inlet; 37 | #X text 62 43 play 0/1; 38 | #X text 494 44 speed; 39 | #X obj 409 454 outlet; 40 | #X obj 409 425 f; 41 | #X text 407 474 release old grain; 42 | #X text 60 469 trigger new grain; 43 | #X obj 63 418 pack 0 0; 44 | #X obj 257 61 inlet; 45 | #X obj 336 61 inlet; 46 | #X obj 424 62 inlet; 47 | #X text 257 40 attack; 48 | #X text 337 41 sustain; 49 | #X text 420 42 release; 50 | #X obj 337 86 t b a; 51 | #X obj 169 60 inlet; 52 | #X obj 288 129 + 0; 53 | #X text 166 41 set pos; 54 | #X obj 289 272 * 1; 55 | #X obj 495 102 t b a; 56 | #X text 287 289 playpos increment; 57 | #X obj 204 337 +; 58 | #X obj 63 295 upp.onward; 59 | #X obj 78 103 sel 0; 60 | #X obj 63 359 t a a b; 61 | #X obj 63 325 f; 62 | #X connect 2 0 25 0; 63 | #X connect 2 0 26 0; 64 | #X connect 3 0 22 0; 65 | #X connect 7 0 6 0; 66 | #X connect 10 0 0 0; 67 | #X connect 11 0 19 0; 68 | #X connect 11 0 10 1; 69 | #X connect 12 0 17 0; 70 | #X connect 13 0 7 1; 71 | #X connect 17 0 19 0; 72 | #X connect 17 1 19 1; 73 | #X connect 18 0 28 1; 74 | #X connect 19 0 21 0; 75 | #X connect 19 0 25 1; 76 | #X connect 21 0 24 1; 77 | #X connect 22 0 21 0; 78 | #X connect 22 1 21 1; 79 | #X connect 24 0 28 1; 80 | #X connect 25 0 28 0; 81 | #X connect 26 0 7 0; 82 | #X connect 27 0 10 0; 83 | #X connect 27 1 24 0; 84 | #X connect 27 2 7 0; 85 | #X connect 28 0 27 0; 86 | #X restore 35 202 pd play ___________; 87 | #X obj 35 230 t a a; 88 | #X obj 399 287 wnd-lin \$0-wnd 1024; 89 | #X text 461 114 to find voice patch; 90 | #X obj 431 91 declare -path .. -path .; 91 | #X text 459 13 grrrr.org \, 2012-15; 92 | #X obj 93 179 upp.ms2s; 93 | #X obj 327 244 upp.ms2s; 94 | #X obj 35 425 upp.xc 10 spat-mono \$0-bus syn-sample \$0-wnd; 95 | #X connect 1 1 2 0; 96 | #X connect 2 0 18 0; 97 | #X connect 3 0 2 1; 98 | #X connect 5 0 28 0; 99 | #X connect 8 0 29 0; 100 | #X connect 10 0 21 0; 101 | #X connect 11 0 21 5; 102 | #X connect 13 0 11 0; 103 | #X connect 14 0 4 0; 104 | #X connect 15 0 29 1; 105 | #X connect 16 0 17 0; 106 | #X connect 17 0 27 0; 107 | #X connect 18 0 21 1; 108 | #X connect 19 0 1 0; 109 | #X connect 21 0 22 0; 110 | #X connect 21 1 15 0; 111 | #X connect 22 0 19 0; 112 | #X connect 22 1 8 0; 113 | #X connect 27 0 21 4; 114 | #X connect 27 0 21 2; 115 | #X connect 28 0 1 1; 116 | #X connect 29 0 6 0; 117 | #X connect 29 2 7 0; 118 | -------------------------------------------------------------------------------- /tutorials/6c-granular-repitch.pd: -------------------------------------------------------------------------------- 1 | #N canvas 389 -870 621 497 10; 2 | #X declare -path .. -path .; 3 | #X text 424 269 half window for one grain; 4 | #X obj 96 323 moses; 5 | #X obj 144 323 spigot; 6 | #X obj 340 106 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 1 7 | 1; 8 | #X obj 440 427 out-mono; 9 | #X obj 327 180 sample \$0-sample; 10 | #X obj 35 451 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 11 | -1 -1; 12 | #X floatatom 320 454 5 0 0 0 voices_active - -; 13 | #X obj 35 393 list prepend \$0-sample; 14 | #X obj 27 11 cnv 15 550 40 empty empty Universal_Polyphonic_Player 15 | 10 10 0 14 -233017 -66577 0; 16 | #X obj 35 108 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 0 1 17 | ; 18 | #X obj 179 125 nbx 5 14 0.01 10 1 0 empty empty empty 0 -8 0 10 -204786 19 | -1 -1 0.307744 256; 20 | #X text 34 34 synchronous granular playing through audio buffer; 21 | #X obj 182 107 hsl 128 15 0.01 10 1 1 empty empty speed -2 -8 0 10 22 | -204786 -1 -1 6368 1; 23 | #X obj 440 403 catch~ \$0-bus; 24 | #X obj 214 394 list prepend \$0-sample; 25 | #X obj 94 109 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0 10 26 | -204786 -1 -1 100 256; 27 | #X obj 94 129 / 2; 28 | #X msg 58 180 0; 29 | #X obj 35 289 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(samps) 30 | 0 -8 0 10 -262144 -1 -1 259216 256; 31 | #X text 182 394 tag; 32 | #N canvas 336 -826 603 538 play 0; 33 | #X obj 63 448 outlet; 34 | #X text 257 150 attack+sustain; 35 | #X obj 63 60 inlet; 36 | #X obj 496 62 inlet; 37 | #X text 62 43 play 0/1; 38 | #X text 494 44 speed; 39 | #X obj 409 454 outlet; 40 | #X obj 409 428 f; 41 | #X text 407 474 release old grain; 42 | #X text 60 469 trigger new grain; 43 | #X obj 63 418 pack 0 0; 44 | #X obj 257 61 inlet; 45 | #X obj 336 61 inlet; 46 | #X obj 424 62 inlet; 47 | #X text 257 40 attack; 48 | #X text 337 41 sustain; 49 | #X text 420 42 release; 50 | #X obj 337 86 t b a; 51 | #X obj 169 60 inlet; 52 | #X obj 288 129 + 0; 53 | #X text 166 41 set pos; 54 | #X obj 289 272 * 1; 55 | #X obj 495 102 t b a; 56 | #X text 287 289 playpos increment; 57 | #X obj 188 337 +; 58 | #X obj 63 295 upp.onward; 59 | #X obj 73 103 sel 0; 60 | #X obj 63 354 t a a b; 61 | #X obj 63 325 f; 62 | #X connect 2 0 25 0; 63 | #X connect 2 0 26 0; 64 | #X connect 3 0 22 0; 65 | #X connect 7 0 6 0; 66 | #X connect 10 0 0 0; 67 | #X connect 11 0 19 0; 68 | #X connect 11 0 10 1; 69 | #X connect 12 0 17 0; 70 | #X connect 13 0 7 1; 71 | #X connect 17 0 19 0; 72 | #X connect 17 1 19 1; 73 | #X connect 18 0 28 1; 74 | #X connect 19 0 21 0; 75 | #X connect 19 0 25 1; 76 | #X connect 21 0 24 1; 77 | #X connect 22 0 21 0; 78 | #X connect 22 1 21 1; 79 | #X connect 24 0 28 1; 80 | #X connect 25 0 28 0; 81 | #X connect 26 0 7 0; 82 | #X connect 27 0 10 0; 83 | #X connect 27 1 24 0; 84 | #X connect 27 2 7 0; 85 | #X connect 28 0 27 0; 86 | #X restore 35 202 pd play ___________; 87 | #X obj 35 230 t a a; 88 | #X obj 180 166 nbx 5 14 -1e+37 1e+37 0 0 empty empty pitch-shift_(halftones) 89 | 0 -8 0 10 -204786 -1 -1 0 256; 90 | #X obj 234 362 expr pow(2 \, $f1/12); 91 | #X obj 35 364 list append 1; 92 | #X obj 424 288 wnd-lin \$0-wnd 1024; 93 | #X text 458 120 to find voice patch; 94 | #X obj 428 100 declare -path .. -path .; 95 | #X text 456 14 grrrr.org \, 2012-15; 96 | #X obj 328 245 upp.ms2s; 97 | #X obj 94 179 upp.ms2s; 98 | #X obj 35 427 upp 10 spat-mono \$0-bus syn-sample-var \$0-wnd; 99 | #X connect 1 1 2 0; 100 | #X connect 2 0 18 0; 101 | #X connect 3 0 2 1; 102 | #X connect 5 0 30 0; 103 | #X connect 8 0 32 0; 104 | #X connect 10 0 21 0; 105 | #X connect 11 0 21 5; 106 | #X connect 13 0 11 0; 107 | #X connect 14 0 4 0; 108 | #X connect 15 0 32 1; 109 | #X connect 16 0 17 0; 110 | #X connect 17 0 31 0; 111 | #X connect 18 0 21 1; 112 | #X connect 19 0 1 0; 113 | #X connect 21 0 22 0; 114 | #X connect 21 1 15 0; 115 | #X connect 22 0 19 0; 116 | #X connect 22 1 25 0; 117 | #X connect 23 0 24 0; 118 | #X connect 24 0 25 1; 119 | #X connect 25 0 8 0; 120 | #X connect 30 0 1 1; 121 | #X connect 31 0 21 4; 122 | #X connect 31 0 21 2; 123 | #X connect 32 0 6 0; 124 | #X connect 32 2 7 0; 125 | -------------------------------------------------------------------------------- /tutorials/7-granular-tcorr.pd: -------------------------------------------------------------------------------- 1 | #N canvas 75 118 600 529 10; 2 | #X declare -path .. -path .; 3 | #X obj 27 11 cnv 15 550 40 empty empty Universal_Polyphonic_Player 4 | 10 10 0 14 -233017 -66577 0; 5 | #X text 34 34 synchronous granular playing through audio buffer; 6 | #X text 441 121 to find voice patch; 7 | #X obj 412 100 declare -path .. -path .; 8 | #X text 455 14 grrrr.org \, 2012-15; 9 | #X text 405 276 half window for one grain; 10 | #X obj 96 321 moses; 11 | #X obj 158 321 spigot; 12 | #X obj 340 106 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 0 13 | 1; 14 | #X obj 308 185 sample \$0-sample; 15 | #X obj 35 478 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 16 | -1 -1; 17 | #X floatatom 326 480 5 0 0 0 voices_active - -, f 5; 18 | #X obj 35 108 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 0 1 19 | ; 20 | #X obj 179 125 nbx 5 14 0.01 10 1 0 empty empty empty 0 -8 0 10 -204786 21 | -1 -1 0.964388 256; 22 | #X obj 182 107 hsl 128 15 0.01 10 1 1 empty empty speed -2 -8 0 10 23 | -204786 -1 -1 8467 1; 24 | #X obj 100 109 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0 25 | 10 -204786 -1 -1 100 256; 26 | #X obj 100 129 / 2; 27 | #X msg 58 180 0; 28 | #X obj 35 289 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(ms) 0 29 | -8 0 10 -262144 -1 -1 0 256; 30 | #X text 189 410 tag; 31 | #N canvas 190 125 603 538 play 0; 32 | #X obj 63 448 outlet; 33 | #X text 257 150 attack+sustain; 34 | #X obj 63 60 inlet; 35 | #X obj 496 62 inlet; 36 | #X text 62 43 play 0/1; 37 | #X text 494 44 speed; 38 | #X obj 409 454 outlet; 39 | #X text 407 474 release old grain; 40 | #X text 60 469 trigger new grain; 41 | #X obj 257 61 inlet; 42 | #X obj 336 61 inlet; 43 | #X obj 424 62 inlet; 44 | #X text 257 40 attack; 45 | #X text 337 41 sustain; 46 | #X text 420 42 release; 47 | #X obj 337 86 t b a; 48 | #X obj 169 60 inlet; 49 | #X obj 288 129 + 0; 50 | #X text 166 41 set pos; 51 | #X obj 289 256 * 1; 52 | #X obj 495 102 t b a; 53 | #X text 287 273 playpos increment; 54 | #X obj 169 344 +; 55 | #X obj 63 276 upp.onward; 56 | #X obj 73 103 sel 0; 57 | #X obj 63 418 pack 0 0 0; 58 | #X msg 409 403 0; 59 | #X obj 409 426 pack 0 0; 60 | #X obj 63 371 t a a; 61 | #X obj 63 322 f; 62 | #X connect 2 0 23 0; 63 | #X connect 2 0 24 0; 64 | #X connect 3 0 20 0; 65 | #X connect 9 0 17 0; 66 | #X connect 9 0 25 2; 67 | #X connect 10 0 15 0; 68 | #X connect 11 0 27 1; 69 | #X connect 15 0 17 0; 70 | #X connect 15 1 17 1; 71 | #X connect 16 0 29 1; 72 | #X connect 17 0 19 0; 73 | #X connect 17 0 23 1; 74 | #X connect 19 0 22 1; 75 | #X connect 20 0 19 0; 76 | #X connect 20 1 19 1; 77 | #X connect 22 0 29 1; 78 | #X connect 23 0 29 0; 79 | #X connect 23 1 25 1; 80 | #X connect 23 1 27 0; 81 | #X connect 24 0 26 0; 82 | #X connect 25 0 0 0; 83 | #X connect 26 0 27 0; 84 | #X connect 27 0 6 0; 85 | #X connect 28 0 25 0; 86 | #X connect 28 1 22 0; 87 | #X connect 29 0 28 0; 88 | #X restore 35 202 pd play ___________; 89 | #X obj 180 166 nbx 5 14 -1e+37 1e+37 0 0 empty empty pitch-shift_(halftones) 90 | 0 -8 0 10 -204786 -1 -1 0 256; 91 | #X obj 134 370 expr pow(2 \, $f1/12); 92 | #X obj 35 371 list append 1; 93 | #X obj 35 411 list prepend \$0-sample; 94 | #X obj 241 412 list prepend \$0-sample; 95 | #X obj 35 230 t a a; 96 | #X obj 427 431 catch~ \$0-bus; 97 | #X obj 427 457 out-mono; 98 | #X obj 100 179 upp.ms2s; 99 | #X obj 308 248 upp.ms2s; 100 | #X obj 440 295 wnd-lin \$0-wnd 1024; 101 | #X obj 35 452 upp 10 spat-mono \$0-bus syn-sample-varcorr \$0-wnd; 102 | #X connect 6 1 7 0; 103 | #X connect 7 0 17 0; 104 | #X connect 8 0 7 1; 105 | #X connect 9 0 30 0; 106 | #X connect 12 0 20 0; 107 | #X connect 13 0 20 5; 108 | #X connect 14 0 13 0; 109 | #X connect 15 0 16 0; 110 | #X connect 16 0 29 0; 111 | #X connect 17 0 20 1; 112 | #X connect 18 0 6 0; 113 | #X connect 20 0 26 0; 114 | #X connect 20 1 25 0; 115 | #X connect 21 0 22 0; 116 | #X connect 22 0 23 1; 117 | #X connect 23 0 24 0; 118 | #X connect 24 0 32 0; 119 | #X connect 25 0 32 1; 120 | #X connect 26 0 18 0; 121 | #X connect 26 1 23 0; 122 | #X connect 27 0 28 0; 123 | #X connect 29 0 20 2; 124 | #X connect 29 0 20 4; 125 | #X connect 30 0 6 1; 126 | #X connect 32 0 10 0; 127 | #X connect 32 2 11 0; 128 | -------------------------------------------------------------------------------- /tutorials/7a-granular-tcenv.pd: -------------------------------------------------------------------------------- 1 | #N canvas 321 68 615 525 10; 2 | #X declare -path .. -path .; 3 | #X text 418 279 half window for one grain; 4 | #X obj 96 321 moses; 5 | #X obj 158 321 spigot; 6 | #X obj 340 106 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 1 7 | 1; 8 | #X obj 324 185 sample \$0-sample; 9 | #X obj 35 479 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 10 | -1 -1; 11 | #X floatatom 350 478 5 0 0 0 voices_active - -, f 5; 12 | #X obj 27 11 cnv 15 550 40 empty empty Universal_Polyphonic_Player 13 | 10 10 0 14 -233017 -66577 0; 14 | #X obj 35 108 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 1 1 15 | ; 16 | #X obj 179 125 nbx 5 14 0.01 10 1 0 empty empty empty 0 -8 0 10 -204786 17 | -1 -1 1.00073 256; 18 | #X text 34 34 synchronous granular playing through audio buffer; 19 | #X obj 182 107 hsl 128 15 0.01 10 1 1 empty empty speed -2 -8 0 10 20 | -204786 -1 -1 8468 1; 21 | #X obj 100 109 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0 22 | 10 -204786 -1 -1 10 256; 23 | #X obj 100 129 / 2; 24 | #X msg 57 180 0; 25 | #X obj 64 291 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(smps) 26 | 0 -8 0 10 -262144 -1 -1 1.34824e+06 256; 27 | #X text 189 410 tag; 28 | #N canvas 296 129 603 538 play 0; 29 | #X obj 92 473 outlet; 30 | #X text 257 150 attack+sustain; 31 | #X obj 63 60 inlet; 32 | #X obj 496 62 inlet; 33 | #X text 62 43 play 0/1; 34 | #X text 494 44 speed; 35 | #X obj 409 475 outlet; 36 | #X text 407 495 release old grain; 37 | #X text 89 494 trigger new grain; 38 | #X obj 257 61 inlet; 39 | #X obj 336 61 inlet; 40 | #X obj 424 62 inlet; 41 | #X text 257 40 attack; 42 | #X text 337 41 sustain; 43 | #X text 420 42 release; 44 | #X obj 337 86 t b a; 45 | #X obj 169 60 inlet; 46 | #X obj 288 129 + 0; 47 | #X text 166 41 set pos; 48 | #X obj 288 216 * 1; 49 | #X obj 495 102 t b a; 50 | #X text 286 233 playpos increment; 51 | #X obj 164 341 +; 52 | #X obj 63 276 upp.onward; 53 | #X obj 73 103 sel 0; 54 | #X obj 92 451 pack 0 0 0; 55 | #X msg 409 348 0; 56 | #X obj 409 451 pack 0 0; 57 | #X obj 63 322 f; 58 | #X obj 409 406 t b a; 59 | #X obj 409 429 f; 60 | #X obj 92 430 f; 61 | #X text 90 507 attack(ms) delay(samples) playpos(ms); 62 | #X text 407 509 release(ms) delay(samples); 63 | #X obj 63 364 t b a a; 64 | #X connect 2 0 23 0; 65 | #X connect 2 0 24 0; 66 | #X connect 3 0 20 0; 67 | #X connect 9 0 17 0; 68 | #X connect 9 0 31 1; 69 | #X connect 10 0 15 0; 70 | #X connect 11 0 30 1; 71 | #X connect 15 0 17 0; 72 | #X connect 15 1 17 1; 73 | #X connect 16 0 28 1; 74 | #X connect 17 0 19 0; 75 | #X connect 17 0 23 1; 76 | #X connect 19 0 22 1; 77 | #X connect 20 0 19 0; 78 | #X connect 20 1 19 1; 79 | #X connect 22 0 28 1; 80 | #X connect 23 0 28 0; 81 | #X connect 23 1 29 0; 82 | #X connect 23 1 25 1; 83 | #X connect 24 0 26 0; 84 | #X connect 25 0 0 0; 85 | #X connect 26 0 29 0; 86 | #X connect 27 0 6 0; 87 | #X connect 28 0 34 0; 88 | #X connect 29 0 30 0; 89 | #X connect 29 1 27 1; 90 | #X connect 30 0 27 0; 91 | #X connect 31 0 25 0; 92 | #X connect 34 0 31 0; 93 | #X connect 34 1 25 2; 94 | #X connect 34 2 22 0; 95 | #X restore 35 202 pd play ___________; 96 | #X obj 180 166 nbx 5 14 -1e+37 1e+37 0 0 empty empty pitch-shift_(halftones) 97 | 0 -8 0 10 -204786 -1 -1 0 256; 98 | #X obj 134 359 expr pow(2 \, $f1/12); 99 | #X obj 35 360 list append 1; 100 | #X obj 35 411 list prepend \$0-sample; 101 | #X obj 453 299 wnd-lin \$0-wnd 1024; 102 | #X obj 241 412 list prepend \$0-sample; 103 | #X obj 427 431 catch~ \$0-bus; 104 | #X obj 427 457 out-mono; 105 | #X obj 35 249 unpack 0 0 0; 106 | #X text 459 118 to find voice patch; 107 | #X obj 430 98 declare -path .. -path .; 108 | #X text 453 14 grrrr.org \, 2012-15; 109 | #X obj 324 248 upp.ms2s; 110 | #X obj 96 179 upp.ms2s; 111 | #X obj 35 384 list append 1; 112 | #X text 121 385 volume; 113 | #X obj 35 453 upp 10 spat-mono \$0-bus tcenv \$0-wnd syn-sample0; 114 | #X obj 35 225 t a a b; 115 | #X connect 1 1 2 0; 116 | #X connect 2 0 14 0; 117 | #X connect 3 0 2 1; 118 | #X connect 4 0 30 0; 119 | #X connect 8 0 17 0; 120 | #X connect 9 0 17 5; 121 | #X connect 11 0 9 0; 122 | #X connect 12 0 13 0; 123 | #X connect 13 0 31 0; 124 | #X connect 14 0 17 1; 125 | #X connect 15 0 1 0; 126 | #X connect 17 0 35 0; 127 | #X connect 17 1 23 0; 128 | #X connect 18 0 19 0; 129 | #X connect 19 0 20 1; 130 | #X connect 20 0 32 0; 131 | #X connect 21 0 34 0; 132 | #X connect 23 0 34 1; 133 | #X connect 24 0 25 0; 134 | #X connect 26 2 15 0; 135 | #X connect 30 0 1 1; 136 | #X connect 31 0 17 4; 137 | #X connect 31 0 17 2; 138 | #X connect 32 0 21 0; 139 | #X connect 34 0 5 0; 140 | #X connect 34 2 6 0; 141 | #X connect 35 0 26 0; 142 | #X connect 35 1 20 0; 143 | -------------------------------------------------------------------------------- /tutorials/7b-granular-tcorr-rnd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 5 23 615 530 10; 2 | #X declare -path .. -path .; 3 | #X text 418 272 half window for one grain; 4 | #X obj 96 342 moses; 5 | #X obj 158 342 spigot; 6 | #X obj 340 106 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 0 7 | 1; 8 | #X obj 321 185 sample \$0-sample; 9 | #X obj 35 477 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 10 | -1 -1; 11 | #X floatatom 325 478 5 0 0 0 voices_active - -, f 5; 12 | #X obj 27 11 cnv 15 550 40 empty empty Universal_Polyphonic_Player 13 | 10 10 0 14 -233017 -66577 0; 14 | #X obj 35 108 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 0 1 15 | ; 16 | #X obj 179 125 nbx 5 14 -1 1 0 0 empty empty empty 0 -8 0 10 -204786 17 | -1 -1 0.968504 256; 18 | #X text 34 34 synchronous granular playing through audio buffer; 19 | #X obj 182 107 hsl 128 15 -1 1 0 1 empty empty speed -2 -8 0 10 -204786 20 | -1 -1 12550 1; 21 | #X obj 100 109 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0 22 | 10 -204786 -1 -1 100 256; 23 | #X obj 100 129 / 2; 24 | #X msg 58 180 0; 25 | #X obj 35 310 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(ms) 0 26 | -8 0 10 -262144 -1 -1 0 256; 27 | #X text 189 410 tag; 28 | #N canvas 622 249 705 532 play 0; 29 | #X obj 63 448 outlet; 30 | #X text 257 150 attack+sustain; 31 | #X obj 63 60 inlet; 32 | #X obj 496 62 inlet; 33 | #X text 62 43 play 0/1; 34 | #X text 494 44 speed; 35 | #X obj 409 454 outlet; 36 | #X text 407 474 release old grain; 37 | #X text 60 469 trigger new grain; 38 | #X obj 257 61 inlet; 39 | #X obj 336 61 inlet; 40 | #X obj 424 62 inlet; 41 | #X text 257 40 attack; 42 | #X text 337 41 sustain; 43 | #X text 420 42 release; 44 | #X obj 337 86 t b a; 45 | #X obj 169 60 inlet; 46 | #X obj 288 129 + 0; 47 | #X text 166 41 set pos; 48 | #X obj 289 256 * 1; 49 | #X obj 495 102 t b a; 50 | #X text 287 273 playpos increment; 51 | #X obj 169 344 +; 52 | #X obj 63 276 upp.onward; 53 | #X obj 73 103 sel 0; 54 | #X obj 63 418 pack 0 0 0; 55 | #X msg 409 403 0; 56 | #X obj 409 426 pack 0 0; 57 | #X obj 63 350 t a a; 58 | #X obj 63 322 f; 59 | #X obj 559 59 inlet; 60 | #X text 559 41 dev; 61 | #N canvas 0 22 218 353 rnd 0; 62 | #X obj 46 41 inlet; 63 | #X obj 117 41 inlet; 64 | #X obj 47 75 t a b; 65 | #X obj 97 230 * 0; 66 | #X obj 44 267 +; 67 | #X obj 43 295 outlet; 68 | #X floatatom 127 261 5 0 0 0 - - -, f 5; 69 | #X obj 72 165 frnd; 70 | #X connect 0 0 2 0; 71 | #X connect 1 0 3 1; 72 | #X connect 2 0 4 0; 73 | #X connect 2 1 7 0; 74 | #X connect 3 0 4 1; 75 | #X connect 3 0 6 0; 76 | #X connect 4 0 5 0; 77 | #X connect 7 0 3 0; 78 | #X restore 63 389 pd rnd; 79 | #X connect 2 0 23 0; 80 | #X connect 2 0 24 0; 81 | #X connect 3 0 20 0; 82 | #X connect 9 0 17 0; 83 | #X connect 9 0 25 2; 84 | #X connect 10 0 15 0; 85 | #X connect 11 0 27 1; 86 | #X connect 15 0 17 0; 87 | #X connect 15 1 17 1; 88 | #X connect 16 0 29 1; 89 | #X connect 17 0 19 0; 90 | #X connect 17 0 23 1; 91 | #X connect 19 0 22 1; 92 | #X connect 20 0 19 0; 93 | #X connect 20 1 19 1; 94 | #X connect 22 0 29 1; 95 | #X connect 23 0 29 0; 96 | #X connect 23 1 25 1; 97 | #X connect 23 1 27 0; 98 | #X connect 24 0 26 0; 99 | #X connect 25 0 0 0; 100 | #X connect 26 0 27 0; 101 | #X connect 27 0 6 0; 102 | #X connect 28 0 32 0; 103 | #X connect 28 1 22 0; 104 | #X connect 29 0 28 0; 105 | #X connect 30 0 32 1; 106 | #X connect 32 0 25 0; 107 | #X restore 35 202 pd play ___________; 108 | #X obj 180 166 nbx 5 14 -1e+37 1e+37 0 0 empty empty pitch-shift_(halftones) 109 | 0 -8 0 10 -204786 -1 -1 0 256; 110 | #X obj 134 370 expr pow(2 \, $f1/12); 111 | #X obj 35 371 list append 1; 112 | #X obj 35 411 list prepend \$0-sample; 113 | #X obj 241 412 list prepend \$0-sample; 114 | #X obj 35 230 t a a; 115 | #X obj 428 429 catch~ \$0-bus; 116 | #X obj 428 453 out-mono; 117 | #X text 454 121 to find voice patch; 118 | #X obj 186 209 nbx 5 14 0.01 1000 1 1 empty empty dev 0 -8 0 10 -204786 119 | -1 -1 10 256; 120 | #X obj 452 292 wnd-lin \$0-wnd 1024; 121 | #X obj 425 102 declare -path .. -path .; 122 | #X text 456 15 grrrr.org \, 2012-15; 123 | #X obj 321 250 upp.ms2s; 124 | #X obj 94 177 upp.ms2s; 125 | #X obj 186 227 upp.ms2s; 126 | #X obj 35 452 upp 10 spat-mono \$0-bus syn-sample-varcorr \$0-wnd; 127 | #X connect 1 1 2 0; 128 | #X connect 2 0 14 0; 129 | #X connect 3 0 2 1; 130 | #X connect 4 0 31 0; 131 | #X connect 8 0 17 0; 132 | #X connect 9 0 17 5; 133 | #X connect 11 0 9 0; 134 | #X connect 12 0 13 0; 135 | #X connect 13 0 32 0; 136 | #X connect 14 0 17 1; 137 | #X connect 15 0 1 0; 138 | #X connect 17 0 23 0; 139 | #X connect 17 1 22 0; 140 | #X connect 18 0 19 0; 141 | #X connect 19 0 20 1; 142 | #X connect 20 0 21 0; 143 | #X connect 21 0 34 0; 144 | #X connect 22 0 34 1; 145 | #X connect 23 0 15 0; 146 | #X connect 23 1 20 0; 147 | #X connect 24 0 25 0; 148 | #X connect 27 0 33 0; 149 | #X connect 31 0 1 1; 150 | #X connect 32 0 17 4; 151 | #X connect 32 0 17 2; 152 | #X connect 33 0 17 6; 153 | #X connect 34 0 5 0; 154 | #X connect 34 2 6 0; 155 | -------------------------------------------------------------------------------- /tutorials/8-bus.pd: -------------------------------------------------------------------------------- 1 | #N canvas 2 23 675 530 10; 2 | #X declare -path .. -path .; 3 | #X obj 39 474 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 4 | -1 -1; 5 | #X obj 42 95 hsl 250 30 0 1 0 0 empty empty scrub -2 -8 0 10 -257985 6 | -1 -1 0 1; 7 | #X obj 39 167 *; 8 | #X text 161 252 attack sustain decay; 9 | #X text 477 255 half window for one grain; 10 | #X floatatom 109 211 5 0 0 0 - - -, f 5; 11 | #X text 299 102 0...1; 12 | #X obj 39 188 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 13 | -262144 -1 -1 0 256; 14 | #X obj 377 142 sample \$0-sample; 15 | #X obj 39 421 list prepend \$0-sample; 16 | #X text 160 222 change attack+decay; 17 | #X obj 27 11 cnv 15 600 40 empty empty Universal_Polyphonic_Player 18 | 10 10 0 14 -233017 -66577 0; 19 | #X text 34 34 granular scrubbing through audio buffer; 20 | #X floatatom 245 473 5 0 0 0 voices_active - -, f 5; 21 | #X obj 507 276 wnd-sin \$0-wnd 1024; 22 | #X obj 442 450 out-stereo; 23 | #X obj 39 292 t a b; 24 | #X obj 402 426 catch~ \$0-bus-1; 25 | #X obj 524 426 catch~ \$0-bus-2; 26 | #X text 159 295 random panning; 27 | #X text 182 421 this is the tag; 28 | #X obj 39 381 list prepend; 29 | #X obj 108 293 random 2; 30 | #X obj 108 336 list prepend \$0; 31 | #X msg 108 358 symbol \$1-bus-\$2; 32 | #X obj 108 315 + 1; 33 | #X text 218 358 \$0-bus-1 or \$0-bus-2; 34 | #X text 122 381 prepend bus name; 35 | #X text 512 96 to find voice patch; 36 | #X text 511 13 grrrr.org \, 2012-15; 37 | #X obj 480 76 declare -path .. -path .; 38 | #X obj 378 206 upp.ms2s; 39 | #X text 137 187 position in buffer(smps); 40 | #X obj 109 228 upp.ms2s; 41 | #X obj 39 253 pack 0 5000 0 5000; 42 | #X obj 39 450 upp 20 spat-varbus syn-grain \$0-wnd; 43 | #X connect 1 0 2 0; 44 | #X connect 2 0 7 0; 45 | #X connect 5 0 33 0; 46 | #X connect 7 0 34 0; 47 | #X connect 8 0 31 0; 48 | #X connect 9 0 35 0; 49 | #X connect 16 0 21 0; 50 | #X connect 16 1 22 0; 51 | #X connect 17 0 15 0; 52 | #X connect 18 0 15 1; 53 | #X connect 21 0 9 0; 54 | #X connect 22 0 25 0; 55 | #X connect 23 0 24 0; 56 | #X connect 24 0 21 1; 57 | #X connect 25 0 23 0; 58 | #X connect 31 0 2 1; 59 | #X connect 33 0 34 3; 60 | #X connect 33 0 34 1; 61 | #X connect 34 0 16 0; 62 | #X connect 35 0 0 0; 63 | #X connect 35 2 13 0; 64 | -------------------------------------------------------------------------------- /tutorials/8a-stereo.pd: -------------------------------------------------------------------------------- 1 | #N canvas 175 -1006 671 474 10; 2 | #X declare -path .. -path .; 3 | #X obj 39 434 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 4 | -1 -1; 5 | #X obj 42 95 hsl 250 30 0 1 0 0 empty empty scrub -2 -8 0 10 -257985 6 | -1 -1 13100 1; 7 | #X obj 39 167 *; 8 | #X text 161 264 attack sustain decay; 9 | #X text 470 256 half window for one grain; 10 | #X floatatom 112 224 5 0 0 0 - - -; 11 | #X text 299 102 0...1; 12 | #X obj 39 188 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 13 | -262144 -1 -1 293220 256; 14 | #X obj 371 150 sample \$0-sample; 15 | #X obj 39 371 list prepend \$0-sample; 16 | #X obj 27 11 cnv 15 600 40 empty empty Universal_Polyphonic_Player 17 | 10 10 0 14 -233017 -66577 0; 18 | #X text 34 34 granular scrubbing through audio buffer; 19 | #X floatatom 287 433 5 0 0 0 voices_active - -; 20 | #X obj 504 273 wnd-sin \$0-wnd 1024; 21 | #X obj 433 405 out-stereo; 22 | #X obj 39 311 t a b; 23 | #X obj 39 337 list prepend 0; 24 | #X obj 402 379 catch~ \$0-bus-1; 25 | #X obj 529 379 catch~ \$0-bus-2; 26 | #N canvas 504 -550 231 244 rnd 0; 27 | #X obj 68 34 inlet; 28 | #X obj 68 163 outlet; 29 | #X obj 68 126 - 1; 30 | #X obj 68 106 * 2; 31 | #X obj 68 83 urnd; 32 | #X connect 0 0 4 0; 33 | #X connect 2 0 1 0; 34 | #X connect 3 0 2 0; 35 | #X connect 4 0 3 0; 36 | #X restore 120 311 pd rnd; 37 | #X text 182 371 this is the tag; 38 | #X text 168 311 random panning -1...+1; 39 | #X text 508 105 to find voice patch; 40 | #X obj 479 86 declare -path .. -path .; 41 | #X text 508 16 grrrr.org \, 2012-15; 42 | #X obj 372 214 upp.ms2s; 43 | #X text 137 187 position in buffer(smps); 44 | #X obj 39 265 pack 0 5000 0 5000; 45 | #X obj 112 242 upp.ms2s; 46 | #X text 147 223 change attack+decay (ms); 47 | #X obj 39 414 upp 20 spat-stereo \$0-bus syn-grain \$0-wnd; 48 | #X text 48 387 [tag/sample pan pos att sus decay(; 49 | #X connect 1 0 2 0; 50 | #X connect 2 0 7 0; 51 | #X connect 5 0 28 0; 52 | #X connect 7 0 27 0; 53 | #X connect 8 0 25 0; 54 | #X connect 9 0 30 0; 55 | #X connect 15 0 16 0; 56 | #X connect 15 1 19 0; 57 | #X connect 16 0 9 0; 58 | #X connect 17 0 14 0; 59 | #X connect 18 0 14 1; 60 | #X connect 19 0 16 1; 61 | #X connect 25 0 2 1; 62 | #X connect 27 0 15 0; 63 | #X connect 28 0 27 1; 64 | #X connect 28 0 27 3; 65 | #X connect 30 0 0 0; 66 | #X connect 30 2 12 0; 67 | -------------------------------------------------------------------------------- /tutorials/8b-quadro.pd: -------------------------------------------------------------------------------- 1 | #N canvas 329 57 677 513 10; 2 | #X declare -path .. -path .; 3 | #X obj 39 458 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144 4 | -1 -1; 5 | #X obj 42 95 hsl 250 30 0 1 0 0 empty empty scrub -2 -8 0 10 -257985 6 | -1 -1 0 1; 7 | #X obj 39 167 *; 8 | #X text 161 264 attack sustain decay; 9 | #X text 474 244 half window for one grain; 10 | #X floatatom 112 223 5 0 0 0 - - -, f 5; 11 | #X text 299 102 0...1; 12 | #X obj 39 188 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 13 | -262144 -1 -1 0 256; 14 | #X obj 381 154 sample \$0-sample; 15 | #X obj 39 398 list prepend \$0-sample; 16 | #X obj 27 11 cnv 15 600 40 empty empty Universal_Polyphonic_Player 17 | 10 10 0 14 -233017 -66577 0; 18 | #X floatatom 276 457 5 0 0 0 voices_active - -, f 5; 19 | #X obj 511 262 wnd-sin \$0-wnd 1024; 20 | #X obj 39 345 list prepend 0 0; 21 | #X obj 39 316 t a b; 22 | #X text 145 344 x y; 23 | #N canvas 0 22 319 326 polarpanning 0; 24 | #X obj 68 34 inlet; 25 | #X obj 66 271 outlet; 26 | #X obj 68 56 t b b; 27 | #X obj 67 248 pack; 28 | #X obj 68 111 * 6.28319; 29 | #X obj 69 159 sin; 30 | #X obj 109 159 cos; 31 | #X obj 68 180 *; 32 | #X obj 108 181 *; 33 | #X obj 67 225 min 1; 34 | #X obj 67 205 max 0; 35 | #X obj 112 225 min 1; 36 | #X obj 112 205 max 0; 37 | #X obj 202 32 inlet; 38 | #X obj 68 88 urnd; 39 | #X obj 168 86 grnd; 40 | #X obj 168 107 * 0.5; 41 | #X obj 68 131 t a a; 42 | #X connect 0 0 2 0; 43 | #X connect 2 0 14 0; 44 | #X connect 2 1 15 0; 45 | #X connect 3 0 1 0; 46 | #X connect 4 0 17 0; 47 | #X connect 5 0 7 0; 48 | #X connect 6 0 8 0; 49 | #X connect 7 0 10 0; 50 | #X connect 8 0 12 0; 51 | #X connect 9 0 3 0; 52 | #X connect 10 0 9 0; 53 | #X connect 11 0 3 1; 54 | #X connect 12 0 11 0; 55 | #X connect 13 0 16 1; 56 | #X connect 14 0 4 0; 57 | #X connect 15 0 16 0; 58 | #X connect 16 0 7 1; 59 | #X connect 16 0 8 1; 60 | #X connect 17 0 5 0; 61 | #X connect 17 1 6 0; 62 | #X restore 132 317 pd polarpanning; 63 | #X obj 260 319 hsl 128 15 0.05 1 1 0 empty empty deviation -2 -8 0 64 | 10 -262130 -1 -1 0 1; 65 | #X floatatom 257 338 5 0 0 0 - - -, f 5; 66 | #X text 472 395 quadrophonic output; 67 | #X text 510 103 to find voice patch; 68 | #X text 509 15 grrrr.org \, 2012-15; 69 | #X obj 480 83 declare -path .. -path .; 70 | #X obj 382 219 upp.ms2s; 71 | #X text 137 187 position in buffer(smps); 72 | #X text 155 222 change attack+decay (ms); 73 | #X obj 39 265 pack 0 5000 0 5000; 74 | #X obj 112 240 upp.ms2s; 75 | #X obj 473 413 out-multi \$0-bus 4; 76 | #X text 34 34 granular scrubbing with quadrophony; 77 | #X text 181 399 the sample name is also the tag; 78 | #X obj 39 434 upp 20 spat-quad \$0-bus syn-grain \$0-wnd; 79 | #X connect 1 0 2 0; 80 | #X connect 2 0 7 0; 81 | #X connect 5 0 27 0; 82 | #X connect 7 0 26 0; 83 | #X connect 8 0 23 0; 84 | #X connect 9 0 31 0; 85 | #X connect 13 0 9 0; 86 | #X connect 14 0 13 0; 87 | #X connect 14 1 16 0; 88 | #X connect 16 0 13 1; 89 | #X connect 17 0 16 1; 90 | #X connect 17 0 18 0; 91 | #X connect 23 0 2 1; 92 | #X connect 26 0 14 0; 93 | #X connect 27 0 26 3; 94 | #X connect 27 0 26 1; 95 | #X connect 31 0 0 0; 96 | #X connect 31 2 11 0; 97 | -------------------------------------------------------------------------------- /tutorials/8c-spat-5.1.pd: -------------------------------------------------------------------------------- 1 | #N canvas 304 239 677 513 10; 2 | #X declare -path .. -path . -lib vbap; 3 | #X obj 39 480 bng 15 250 50 0 empty empty overflow 17 7 0 10 #fcfcfc 4 | #000000 #000000; 5 | #X obj 42 95 hsl 250 30 0 1 0 0 empty empty scrub -2 -8 0 10 #f8fc00 6 | #000000 #000000 0 1; 7 | #X obj 39 167 *; 8 | #X text 161 264 attack sustain decay; 9 | #X text 474 244 half window for one grain; 10 | #X floatatom 112 223 5 0 0 0 - - - 0; 11 | #X text 299 102 0...1; 12 | #X obj 39 188 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 13 | #fcfcfc #000000 #000000 0 256; 14 | #X obj 381 154 sample \$0-sample; 15 | #X obj 39 415 list prepend \$0-sample; 16 | #X obj 27 11 cnv 15 600 40 empty empty Universal_Polyphonic_Player 17 | 10 10 0 14 #e0e0e0 #404040 0; 18 | #X floatatom 329 480 5 0 0 0 voices_active - - 0; 19 | #X obj 511 262 wnd-sin \$0-wnd 1024; 20 | #X obj 39 312 t a b; 21 | #X text 411 106 to find voice patch; 22 | #X obj 382 219 upp.ms2s; 23 | #X text 137 187 position in buffer(smps); 24 | #X text 155 222 change attack+decay (ms); 25 | #X obj 39 265 pack 0 5000 0 5000; 26 | #X obj 112 240 upp.ms2s; 27 | #X text 125 374 azimuth elevation spread; 28 | #N canvas 468 207 156 202 running 0; 29 | #X obj 37 28 inlet; 30 | #X obj 37 151 outlet; 31 | #X obj 37 93 f; 32 | #X obj 37 50 t b a; 33 | #X obj 66 93 +; 34 | #X obj 37 121 % 360; 35 | #X connect 0 0 3 0; 36 | #X connect 2 0 5 0; 37 | #X connect 3 0 2 0; 38 | #X connect 3 1 4 1; 39 | #X connect 4 0 2 1; 40 | #X connect 5 0 4 0; 41 | #X connect 5 0 1 0; 42 | #X restore 108 311 pd running angle; 43 | #X floatatom 108 334 5 0 0 0 - - - 0; 44 | #X obj 108 353 pack 0 0 0.5; 45 | #X obj 39 375 list prepend; 46 | #X text 377 310 Dolby-5.1 loudspeaker arrangement; 47 | #X text 377 327 The order of speakers is defined in; 48 | #X text 376 345 [vbap-5.1] as follows:; 49 | #X text 378 363 1 Front-left \, 2 Front-right; 50 | #X text 378 379 3 Rear-left \, 4 Rear-right \, 5 Center; 51 | #X text 34 34 granular scrubbing with surround spatialization; 52 | #X text 178 416 the sample name is also the tag; 53 | #X obj 490 432 out-multi \$0-bus 5; 54 | #X msg 64 334 1; 55 | #X text 144 333 azimuth in degrees; 56 | #X obj 39 456 upp 20 spat-vbap vbap-5.1 \$0-bus syn-grain \$0-wnd; 57 | #X text 526 15 grrrr.org \, 2022; 58 | #X obj 381 86 declare -path .. -path . -lib vbap; 59 | #X connect 1 0 2 0; 60 | #X connect 2 0 7 0; 61 | #X connect 5 0 19 0; 62 | #X connect 7 0 18 0; 63 | #X connect 8 0 15 0; 64 | #X connect 9 0 35 0; 65 | #X connect 13 0 24 0; 66 | #X connect 13 1 33 0; 67 | #X connect 15 0 2 1; 68 | #X connect 18 0 13 0; 69 | #X connect 19 0 18 3; 70 | #X connect 19 0 18 1; 71 | #X connect 21 0 22 0; 72 | #X connect 22 0 23 0; 73 | #X connect 23 0 24 1; 74 | #X connect 24 0 9 0; 75 | #X connect 33 0 21 0; 76 | #X connect 35 0 0 0; 77 | #X connect 35 2 11 0; 78 | -------------------------------------------------------------------------------- /tutorials/kbd-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 196 349 555 300 10; 2 | #X obj 52 95 kbd; 3 | #X obj 27 11 cnv 15 500 40 empty empty keyboard 10 10 0 14 -233017 4 | -66577 0; 5 | #X text 414 14 grrrr.org \, 2011; 6 | #X text 34 32 play MIDI notes with octave shift and inhibited repetition 7 | ; 8 | #X text 198 144 - middle row keys play notes; 9 | #X text 199 93 - select your keyboard layout; 10 | #X text 210 108 (english \, german \, french \, spanish); 11 | #X obj 52 232 print NOTE; 12 | #X obj 70 148 unpack; 13 | #X floatatom 70 187 5 0 0 2 MIDI_note - -; 14 | #X obj 109 187 tgl 15 0 empty empty down/up 17 7 0 10 -262144 -1 -1 15 | 0 1; 16 | #X text 210 194 (some key combinations might not be recognized); 17 | #X text 198 180 - you can play chords; 18 | #X text 212 159 (on US keyboard: a w s e d f t g y h etc.); 19 | #X text 198 126 - numeric keys 1 2 3 4 etc. select octave; 20 | #X connect 0 0 7 0; 21 | #X connect 0 0 8 0; 22 | #X connect 8 0 9 0; 23 | #X connect 8 1 10 0; 24 | -------------------------------------------------------------------------------- /tutorials/kbd.pd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grrrr/upp/7022bb116ad17c12410193f1ce2a66ec9b4f385d/tutorials/kbd.pd -------------------------------------------------------------------------------- /tutorials/note_alt.pd: -------------------------------------------------------------------------------- 1 | #N canvas 55 41 468 381 10; 2 | #X obj 211 31 inlet; 3 | #X obj 65 281 outlet; 4 | #X text 61 209 total duration; 5 | #X text 45 299 bang when ready; 6 | #X obj 190 144 cnv 15 250 200 empty empty empty 20 12 0 14 -233017 7 | -66577 0; 8 | #X obj 237 204 osc~; 9 | #X obj 237 253 *~; 10 | #X obj 306 203 vline~; 11 | #X text 311 162 attack+decay; 12 | #X text 309 221 volume envelope; 13 | #X text 203 204 sine; 14 | #X obj 237 281 outlet~; 15 | #X obj 237 178 mtof; 16 | #X text 231 302 audio out; 17 | #X obj 211 53 t a b; 18 | #X obj 65 227 delay 820; 19 | #X text 209 14 midinote; 20 | #X msg 305 180 1 20 \, 0 800 20; 21 | #X obj 364 35 inlet; 22 | #X text 362 19 dummy; 23 | #X connect 0 0 14 0; 24 | #X connect 5 0 6 0; 25 | #X connect 6 0 11 0; 26 | #X connect 7 0 6 1; 27 | #X connect 12 0 5 0; 28 | #X connect 14 0 12 0; 29 | #X connect 14 1 17 0; 30 | #X connect 14 1 15 0; 31 | #X connect 15 0 1 0; 32 | #X connect 17 0 7 0; 33 | -------------------------------------------------------------------------------- /tutorials/note_alt_vol.pd: -------------------------------------------------------------------------------- 1 | #N canvas 62 60 468 381 10; 2 | #X obj 210 31 inlet; 3 | #X obj 65 281 outlet; 4 | #X text 61 209 total duration; 5 | #X obj 190 144 cnv 15 250 200 empty empty empty 20 12 0 14 -233017 6 | -66577 0; 7 | #X obj 237 204 osc~; 8 | #X obj 237 253 *~; 9 | #X obj 306 203 vline~; 10 | #X text 311 162 attack+decay; 11 | #X text 309 221 volume envelope; 12 | #X text 203 204 sine; 13 | #X obj 237 281 outlet~; 14 | #X obj 237 178 mtof; 15 | #X text 231 302 audio out; 16 | #X obj 210 53 t b a; 17 | #X text 208 14 midinote vol; 18 | #X obj 375 33 inlet; 19 | #X text 373 16 dummy; 20 | #X msg 65 232 820; 21 | #X text 62 301 release time; 22 | #X obj 237 102 unpack; 23 | #X msg 305 180 \$1 20 \, 0 800 20; 24 | #X obj 65 258 upp.ms2s; 25 | #X connect 0 0 13 0; 26 | #X connect 4 0 5 0; 27 | #X connect 5 0 10 0; 28 | #X connect 6 0 5 1; 29 | #X connect 11 0 4 0; 30 | #X connect 13 0 17 0; 31 | #X connect 13 1 19 0; 32 | #X connect 17 0 21 0; 33 | #X connect 19 0 11 0; 34 | #X connect 19 1 20 0; 35 | #X connect 20 0 6 0; 36 | #X connect 21 0 1 0; 37 | -------------------------------------------------------------------------------- /tutorials/out-mono.pd: -------------------------------------------------------------------------------- 1 | #N canvas 587 106 337 240 10; 2 | #X obj 45 31 inlet~; 3 | #X obj 103 148 dbtopow; 4 | #X obj 45 202 dac~; 5 | #X text 82 205 audio out; 6 | #X obj 103 84 nbx 4 16 -100 27 0 0 empty empty empty 0 -8 0 10 -262144 7 | -1 -1 -1.9685 256; 8 | #X obj 106 102 hsl 128 16 -50 0 0 0 empty empty gain(dB) 75 -8 0 10 9 | -204786 -1 -1 12200 1; 10 | #X msg 261 153 set \$1; 11 | #X msg 260 133 set \$1; 12 | #X obj 103 129 + 100; 13 | #X obj 174 32 loadbang; 14 | #X msg 174 52 -20; 15 | #X obj 103 31 inlet; 16 | #X obj 103 188 line~; 17 | #X obj 45 153 *~; 18 | #X obj 103 168 pack 0 20; 19 | #X connect 0 0 13 0; 20 | #X connect 1 0 14 0; 21 | #X connect 4 0 8 0; 22 | #X connect 4 0 7 0; 23 | #X connect 5 0 8 0; 24 | #X connect 5 0 6 0; 25 | #X connect 6 0 4 0; 26 | #X connect 7 0 5 0; 27 | #X connect 8 0 1 0; 28 | #X connect 9 0 10 0; 29 | #X connect 10 0 4 0; 30 | #X connect 11 0 4 0; 31 | #X connect 12 0 13 1; 32 | #X connect 13 0 2 0; 33 | #X connect 13 0 2 1; 34 | #X connect 14 0 12 0; 35 | #X coords 0 -1 1 1 140 40 2 100 80; 36 | -------------------------------------------------------------------------------- /tutorials/out-multi.pd: -------------------------------------------------------------------------------- 1 | #N canvas 481 589 212 241 10; 2 | #X obj 33 150 dbtopow; 3 | #X obj 33 82 nbx 4 16 -100 27 0 0 empty empty empty 0 -8 0 10 -262144 4 | -1 -1 -9.37008 256; 5 | #X obj 36 98 hsl 128 16 -50 0 0 0 empty empty volume(dB) 70 -8 0 10 6 | -204786 -1 -1 10320 1; 7 | #X msg 128 152 set \$1; 8 | #X msg 127 132 set \$1; 9 | #X obj 33 131 + 100; 10 | #X obj 73 9 loadbang; 11 | #X msg 73 29 -20; 12 | #X obj 33 10 inlet; 13 | #N canvas 101 274 374 446 \$0-out 0; 14 | #X obj 10 10 inlet; 15 | #X restore 33 186 pd \$0-out; 16 | #N canvas 661 44 492 466 gen-outs 0; 17 | #X obj 48 89 t b a b; 18 | #X obj 70 122 until; 19 | #X obj 70 147 f; 20 | #X obj 96 147 + 1; 21 | #X obj 47 417 upp.fwd; 22 | #X msg 48 367 loadbang; 23 | #X obj 172 204 * 20; 24 | #X obj 47 392 list prepend pd-\$0-out; 25 | #X obj 48 28 loadbang; 26 | #X obj 70 168 t a a; 27 | #X obj 70 282 list prepend \$1; 28 | #X obj 48 57 f \$2; 29 | #X obj 87 225 + 1; 30 | #X obj 114 225 + 2; 31 | #X obj 88 195 * 3; 32 | #X obj 70 260 pack 0 0 0 0 0; 33 | #X msg 113 122 0; 34 | #X obj 141 224 + 3; 35 | #X obj 60 225 + 1; 36 | #X obj 172 225 + 50; 37 | #X msg 70 313 obj 10 \$6 catch~ \$1-\$2 \, obj 135 \$6 *~ 0 \, obj 38 | 170 \$6 dac~ \$2 \, connect \$3 0 \$4 0 \, connect \$4 0 \$5 0 \, connect 39 | 0 0 \$4 1; 40 | #X connect 0 0 5 0; 41 | #X connect 0 1 1 0; 42 | #X connect 0 2 16 0; 43 | #X connect 1 0 2 0; 44 | #X connect 2 0 3 0; 45 | #X connect 2 0 9 0; 46 | #X connect 3 0 2 1; 47 | #X connect 5 0 7 0; 48 | #X connect 6 0 19 0; 49 | #X connect 7 0 4 0; 50 | #X connect 8 0 11 0; 51 | #X connect 9 0 18 0; 52 | #X connect 9 1 6 0; 53 | #X connect 9 1 14 0; 54 | #X connect 10 0 20 0; 55 | #X connect 11 0 0 0; 56 | #X connect 12 0 15 1; 57 | #X connect 13 0 15 2; 58 | #X connect 14 0 12 0; 59 | #X connect 14 0 13 0; 60 | #X connect 14 0 17 0; 61 | #X connect 15 0 10 0; 62 | #X connect 16 0 2 1; 63 | #X connect 17 0 15 3; 64 | #X connect 18 0 15 0; 65 | #X connect 19 0 15 4; 66 | #X connect 20 0 7 0; 67 | #X restore 101 187 pd gen-outs; 68 | #X connect 0 0 9 0; 69 | #X connect 1 0 5 0; 70 | #X connect 1 0 4 0; 71 | #X connect 2 0 5 0; 72 | #X connect 2 0 3 0; 73 | #X connect 3 0 1 0; 74 | #X connect 4 0 2 0; 75 | #X connect 5 0 0 0; 76 | #X connect 6 0 7 0; 77 | #X connect 7 0 1 0; 78 | #X connect 8 0 1 0; 79 | #X coords 0 -1 1 1 140 60 1 30 60; 80 | -------------------------------------------------------------------------------- /tutorials/out-stereo.pd: -------------------------------------------------------------------------------- 1 | #N canvas 587 106 457 282 10; 2 | #X obj 45 31 inlet~; 3 | #X obj 45 153 *~ 0; 4 | #X obj 202 153 dbtopow; 5 | #X obj 60 203 dac~; 6 | #X text 97 206 audio out; 7 | #X obj 202 84 nbx 4 16 -100 27 0 0 empty empty empty 0 -8 0 10 -262144 8 | -1 -1 -17.7165 256; 9 | #X obj 205 102 hsl 128 16 -50 0 0 0 empty empty gain(dB) 75 -8 0 10 10 | -204786 -1 -1 8200 1; 11 | #X msg 360 153 set \$1; 12 | #X msg 359 133 set \$1; 13 | #X obj 202 134 + 100; 14 | #X obj 273 32 loadbang; 15 | #X msg 273 52 -20; 16 | #X obj 101 31 inlet~; 17 | #X obj 101 153 *~ 0; 18 | #X obj 158 30 inlet; 19 | #X connect 0 0 1 0; 20 | #X connect 1 0 3 0; 21 | #X connect 2 0 1 1; 22 | #X connect 2 0 13 1; 23 | #X connect 5 0 9 0; 24 | #X connect 5 0 8 0; 25 | #X connect 6 0 9 0; 26 | #X connect 6 0 7 0; 27 | #X connect 7 0 5 0; 28 | #X connect 8 0 6 0; 29 | #X connect 9 0 2 0; 30 | #X connect 10 0 11 0; 31 | #X connect 11 0 5 0; 32 | #X connect 12 0 13 0; 33 | #X connect 13 0 3 1; 34 | #X connect 14 0 5 0; 35 | #X coords 0 -1 1 1 140 40 2 200 80; 36 | -------------------------------------------------------------------------------- /tutorials/sample.pd: -------------------------------------------------------------------------------- 1 | #N canvas 273 76 354 321 10; 2 | #X obj 42 184 soundfiler; 3 | #X obj 42 107 openpanel; 4 | #X obj 33 62 bng 25 250 50 0 empty empty load 0 -8 0 10 -261234 -1 5 | -1; 6 | #X msg 42 154 read -resize \$1 \$2; 7 | #X obj 135 184 table \$1; 8 | #X symbolatom 67 60 30 0 0 2 filename - -; 9 | #X obj 42 267 outlet; 10 | #X obj 42 133 list append \$1; 11 | #X obj 42 229 upp.s2ms; 12 | #X obj 66 76 nbx 6 14 -1e+37 1e+37 0 0 empty empty ms 65 8 0 10 -262144 13 | -1 -1 0 256; 14 | #X text 237 12 grrrr.org 2012; 15 | #X connect 0 0 8 0; 16 | #X connect 1 0 5 0; 17 | #X connect 1 0 7 0; 18 | #X connect 2 0 1 0; 19 | #X connect 3 0 0 0; 20 | #X connect 7 0 3 0; 21 | #X connect 8 0 6 0; 22 | #X connect 8 0 9 0; 23 | #X coords 0 -1 1 1 250 60 1 30 30; 24 | -------------------------------------------------------------------------------- /upp-meta.pd: -------------------------------------------------------------------------------- 1 | #N canvas 10 22 200 200 10; 2 | #N canvas 20 22 420 300 META 0; 3 | #X text 10 10 META this is a prototype of a libdir meta file; 4 | #X text 10 110 VERSION 0.2; 5 | #X text 10 30 NAME upp; 6 | #X text 10 90 LICENSE CC-BY-SA; 7 | #X text 10 70 DESCRIPTION Universal polyphonic player (grrrr.org/upp) 8 | ; 9 | #X text 10 50 AUTHOR Thomas Grill; 10 | #X restore 10 10 pd META; 11 | -------------------------------------------------------------------------------- /upp._check.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 450 300 10; 2 | #X obj 225 57 inlet; 3 | #X obj 59 59 inlet; 4 | #X obj 59 221 outlet; 5 | #X text 57 41 message; 6 | #X obj 59 193 spigot; 7 | #X obj 86 116 list split 1; 8 | #X text 176 39 single atom (float or symbol); 9 | #X obj 225 112 list split 1; 10 | #X obj 59 89 t a a; 11 | #X obj 86 160 upp.cmpatom; 12 | #X connect 0 0 7 0; 13 | #X connect 1 0 8 0; 14 | #X connect 4 0 2 0; 15 | #X connect 5 0 9 0; 16 | #X connect 7 0 9 1; 17 | #X connect 8 0 4 0; 18 | #X connect 8 1 5 0; 19 | #X connect 9 0 4 1; 20 | -------------------------------------------------------------------------------- /upp._extract.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 23 367 239 10; 2 | #X obj 77 46 inlet; 3 | #X obj 77 77 list split 1; 4 | #X obj 77 127 list append; 5 | #X obj 77 164 outlet; 6 | #X obj 145 164 outlet; 7 | #X obj 193 45 inlet; 8 | #X obj 111 102 list split \$1; 9 | #X connect 0 0 1 0; 10 | #X connect 1 0 2 0; 11 | #X connect 1 1 6 0; 12 | #X connect 2 0 3 0; 13 | #X connect 5 0 6 1; 14 | #X connect 6 0 4 0; 15 | #X connect 6 1 2 1; 16 | -------------------------------------------------------------------------------- /upp._release.pd: -------------------------------------------------------------------------------- 1 | #N canvas 495 420 339 319 10; 2 | #X obj 50 36 inlet; 3 | #X obj 96 268 outlet; 4 | #X obj 96 232 delay; 5 | #X obj 50 66 route bang float; 6 | #X obj 96 206 upp.s2ms; 7 | #X msg 50 90 0; 8 | #X text 131 180 1 DSP block safety; 9 | #X obj 96 180 + 64; 10 | #X connect 0 0 3 0; 11 | #X connect 2 0 1 0; 12 | #X connect 3 0 5 0; 13 | #X connect 3 1 7 0; 14 | #X connect 4 0 2 0; 15 | #X connect 5 0 7 0; 16 | #X connect 7 0 4 0; 17 | -------------------------------------------------------------------------------- /upp._spat.invd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 692 189 393 526 10; 2 | #X obj 51 60 inlet; 3 | #X obj 51 475 outlet; 4 | #X obj 232 61 inlet; 5 | #X obj 51 137 f; 6 | #X msg 174 251 0; 7 | #X obj 51 251 unpack 0 0 0, f 17; 8 | #X obj 149 302 f; 9 | #X obj 124 302 f; 10 | #X text 229 43 ls coords; 11 | #X obj 51 443 list prepend; 12 | #X obj 51 356 list append; 13 | #X obj 51 82 t b a b, f 21; 14 | #X obj 51 301 t b a b b; 15 | #X obj 232 473 outlet; 16 | #N canvas 564 189 291 232 num-speakers 0; 17 | #X obj 44 33 inlet; 18 | #X obj 44 182 outlet; 19 | #X obj 44 97 list length; 20 | #X obj 44 119 - 1; 21 | #X obj 44 150 /; 22 | #X obj 125 98 list split 1; 23 | #X obj 44 62 t a a; 24 | #X obj 125 182 outlet; 25 | #X text 125 203 dim; 26 | #X text 44 204 count; 27 | #X text 43 15 list; 28 | #X obj 195 182 outlet; 29 | #X text 196 203 coords; 30 | #X connect 0 0 6 0; 31 | #X connect 2 0 3 0; 32 | #X connect 3 0 4 0; 33 | #X connect 4 0 1 0; 34 | #X connect 5 0 7 0; 35 | #X connect 5 0 4 1; 36 | #X connect 5 1 11 0; 37 | #X connect 6 0 2 0; 38 | #X connect 6 1 5 0; 39 | #X restore 232 85 pd num-speakers; 40 | #N canvas 0 22 177 213 count 0; 41 | #X obj 45 24 inlet; 42 | #X obj 45 154 outlet; 43 | #X obj 45 89 until; 44 | #X obj 45 115 f; 45 | #X obj 76 116 + 1; 46 | #X obj 45 53 t a b; 47 | #X msg 90 91 0; 48 | #X connect 0 0 5 0; 49 | #X connect 2 0 3 0; 50 | #X connect 3 0 4 0; 51 | #X connect 3 0 1 0; 52 | #X connect 4 0 3 1; 53 | #X connect 5 0 2 0; 54 | #X connect 5 1 6 0; 55 | #X connect 6 0 3 1; 56 | #X restore 51 159 pd count; 57 | #X text 306 104 coords; 58 | #X text 262 105 dim; 59 | #X text 218 104 num; 60 | #N canvas 0 22 310 272 nth_coord 0; 61 | #X obj 46 32 inlet; 62 | #X obj 189 34 inlet; 63 | #X obj 74 217 outlet; 64 | #X text 45 12 index; 65 | #X text 188 16 coordinates; 66 | #X obj 131 33 inlet; 67 | #X text 131 15 dim; 68 | #X obj 46 125 list append; 69 | #X obj 46 153 list split; 70 | #X obj 74 185 list split; 71 | #X obj 103 86 *; 72 | #X obj 46 61 t b a; 73 | #X connect 0 0 11 0; 74 | #X connect 1 0 7 1; 75 | #X connect 5 0 10 1; 76 | #X connect 5 0 9 1; 77 | #X connect 7 0 8 0; 78 | #X connect 8 1 9 0; 79 | #X connect 9 0 2 0; 80 | #X connect 10 0 8 1; 81 | #X connect 11 0 7 0; 82 | #X connect 11 1 10 0; 83 | #X restore 51 221 pd nth_coord, f 17; 84 | #X obj 51 187 t a a; 85 | #X text 131 443 prepend index; 86 | #X text 239 455 num speakers; 87 | #X text 125 355 x y z bias pow; 88 | #X text 126 284 preset to 0; 89 | #X text 49 43 x y z bias pow; 90 | #X text 48 15 Compute inverse distances to loudspeaker coordinates 91 | ; 92 | #N canvas 83 334 343 353 invd 0; 93 | #X obj 54 71 inlet; 94 | #X obj 180 68 inlet; 95 | #X obj 222 68 inlet; 96 | #X obj 264 68 inlet; 97 | #X obj 54 309 outlet; 98 | #X text 51 12 inverse distance; 99 | #N canvas 0 22 240 200 invd 0; 100 | #X obj 41 33 inlet; 101 | #X obj 41 113 pow; 102 | #X obj 114 33 inlet; 103 | #X obj 161 33 inlet; 104 | #X text 43 15 distance; 105 | #X text 116 15 bias; 106 | #X text 163 14 power; 107 | #X obj 41 149 outlet; 108 | #X obj 71 114 * -1; 109 | #X obj 41 70 + 1; 110 | #X connect 0 0 9 0; 111 | #X connect 1 0 7 0; 112 | #X connect 2 0 9 1; 113 | #X connect 3 0 8 0; 114 | #X connect 8 0 1 1; 115 | #X connect 9 0 1 0; 116 | #X restore 54 241 pd invd; 117 | #N canvas 0 22 450 300 3ddist 0; 118 | #X obj 207 31 inlet; 119 | #X obj 249 31 inlet; 120 | #X obj 291 31 inlet; 121 | #X obj 55 124 -; 122 | #X obj 56 148 t a a; 123 | #X obj 56 172 *; 124 | #X obj 96 123 -; 125 | #X obj 97 147 t a a; 126 | #X obj 97 171 *; 127 | #X obj 136 124 -; 128 | #X obj 137 148 t a a; 129 | #X obj 137 172 *; 130 | #X obj 55 198 +; 131 | #X obj 95 198 +; 132 | #X obj 56 222 sqrt; 133 | #X obj 55 31 inlet; 134 | #X obj 97 31 inlet; 135 | #X obj 139 31 inlet; 136 | #X obj 56 255 outlet, f 31; 137 | #X connect 0 0 3 1; 138 | #X connect 1 0 6 1; 139 | #X connect 2 0 9 1; 140 | #X connect 3 0 4 0; 141 | #X connect 4 0 5 0; 142 | #X connect 4 1 5 1; 143 | #X connect 5 0 12 0; 144 | #X connect 6 0 7 0; 145 | #X connect 7 0 8 0; 146 | #X connect 7 1 8 1; 147 | #X connect 8 0 13 0; 148 | #X connect 9 0 10 0; 149 | #X connect 10 0 11 0; 150 | #X connect 10 1 11 1; 151 | #X connect 11 0 13 1; 152 | #X connect 12 0 14 0; 153 | #X connect 13 0 12 1; 154 | #X connect 14 0 18 0; 155 | #X connect 15 0 3 0; 156 | #X connect 16 0 6 0; 157 | #X connect 17 0 9 0; 158 | #X restore 54 152 pd 3ddist, f 33; 159 | #X obj 54 187 t a b; 160 | #X msg 121 219 0; 161 | #X obj 54 273 / 1; 162 | #X text 52 45 x y z bias pow; 163 | #N canvas 0 22 240 200 invd 0; 164 | #X obj 41 33 inlet; 165 | #X obj 41 113 pow; 166 | #X obj 114 33 inlet; 167 | #X obj 161 33 inlet; 168 | #X text 43 15 distance; 169 | #X text 116 15 bias; 170 | #X text 163 14 power; 171 | #X obj 41 149 outlet; 172 | #X obj 71 114 * -1; 173 | #X obj 41 70 + 1; 174 | #X connect 0 0 9 0; 175 | #X connect 1 0 7 0; 176 | #X connect 2 0 9 1; 177 | #X connect 3 0 8 0; 178 | #X connect 8 0 1 1; 179 | #X connect 9 0 1 0; 180 | #X restore 121 241 pd invd; 181 | #X obj 54 99 unpack 0 0 0 1 2, f 19; 182 | #X connect 0 0 13 0; 183 | #X connect 1 0 7 3; 184 | #X connect 2 0 7 4; 185 | #X connect 3 0 7 5; 186 | #X connect 6 0 10 0; 187 | #X connect 7 0 8 0; 188 | #X connect 8 0 6 0; 189 | #X connect 8 1 9 0; 190 | #X connect 9 0 12 0; 191 | #X connect 10 0 4 0; 192 | #X connect 12 0 10 1; 193 | #X connect 13 0 7 0; 194 | #X connect 13 1 7 1; 195 | #X connect 13 2 7 2; 196 | #X connect 13 3 6 1; 197 | #X connect 13 3 12 1; 198 | #X connect 13 4 6 2; 199 | #X connect 13 4 12 2; 200 | #X restore 51 408 pd invd, f 18; 201 | #X text 164 407 compute gain; 202 | #X connect 0 0 11 0; 203 | #X connect 2 0 14 0; 204 | #X connect 3 0 15 0; 205 | #X connect 4 0 6 1; 206 | #X connect 4 0 7 1; 207 | #X connect 5 0 12 0; 208 | #X connect 5 1 7 1; 209 | #X connect 5 2 6 1; 210 | #X connect 6 0 27 3; 211 | #X connect 7 0 27 2; 212 | #X connect 9 0 1 0; 213 | #X connect 10 0 27 0; 214 | #X connect 11 0 3 0; 215 | #X connect 11 1 10 1; 216 | #X connect 11 2 4 0; 217 | #X connect 12 0 10 0; 218 | #X connect 12 1 27 1; 219 | #X connect 12 2 7 0; 220 | #X connect 12 3 6 0; 221 | #X connect 14 0 13 0; 222 | #X connect 14 0 3 1; 223 | #X connect 14 1 19 1; 224 | #X connect 14 2 19 2; 225 | #X connect 15 0 20 0; 226 | #X connect 19 0 5 0; 227 | #X connect 20 0 19 0; 228 | #X connect 20 1 9 1; 229 | #X connect 27 0 9 0; 230 | -------------------------------------------------------------------------------- /upp._spat.pd: -------------------------------------------------------------------------------- 1 | #N canvas 111 84 465 414 10; 2 | #X obj 43 133 inlet~; 3 | #X obj 100 133 inlet; 4 | #X obj 309 133 loadbang; 5 | #X text 179 187 loudspeaker definitions; 6 | #N canvas 331 68 343 316 \$0-mult 0; 7 | #X obj 20 14 inlet~; 8 | #X obj 81 15 inlet; 9 | #X restore 43 367 pd \$0-mult; 10 | #N canvas 225 161 460 489 generate-mult 0; 11 | #X obj 35 40 inlet; 12 | #X text 35 22 number of loudspeakers; 13 | #X obj 34 439 upp.fwd; 14 | #X obj 210 43 inlet; 15 | #X text 208 27 bus name; 16 | #X obj 35 95 t b a b; 17 | #X obj 57 128 until; 18 | #X obj 57 153 f; 19 | #X obj 83 153 + 1; 20 | #X msg 35 373 loadbang; 21 | #X obj 159 210 * 20; 22 | #X obj 57 174 t a a; 23 | #X obj 75 201 * 3; 24 | #X obj 57 266 pack 0 0 0 0 0; 25 | #X msg 100 128 0; 26 | #X obj 159 231 + 50; 27 | #X obj 74 231 + 2; 28 | #X obj 101 231 + 3; 29 | #X obj 128 230 + 4; 30 | #X obj 47 231 + 1; 31 | #X obj 34 398 list prepend pd-\$0-mult; 32 | #X msg 57 319 obj 40 \$6 *~ 0 \, obj 100 \$6 route \$2 \, obj 170 \$6 33 | throw~ \$1-\$2 \, connect 0 0 \$3 0 \, connect 1 0 \$4 0 \, connect 34 | \$3 0 \$5 0 \, connect \$4 0 \$3 1; 35 | #X obj 57 291 list prepend, f 26; 36 | #X connect 0 0 5 0; 37 | #X connect 3 0 22 1; 38 | #X connect 5 0 9 0; 39 | #X connect 5 1 6 0; 40 | #X connect 5 2 14 0; 41 | #X connect 6 0 7 0; 42 | #X connect 7 0 8 0; 43 | #X connect 7 0 11 0; 44 | #X connect 8 0 7 1; 45 | #X connect 9 0 20 0; 46 | #X connect 10 0 15 0; 47 | #X connect 11 0 19 0; 48 | #X connect 11 1 10 0; 49 | #X connect 11 1 12 0; 50 | #X connect 12 0 16 0; 51 | #X connect 12 0 17 0; 52 | #X connect 12 0 18 0; 53 | #X connect 13 0 22 0; 54 | #X connect 14 0 7 1; 55 | #X connect 15 0 13 4; 56 | #X connect 16 0 13 1; 57 | #X connect 17 0 13 2; 58 | #X connect 18 0 13 3; 59 | #X connect 19 0 13 0; 60 | #X connect 20 0 2 0; 61 | #X connect 21 0 20 0; 62 | #X connect 22 0 21 0; 63 | #X restore 216 368 pd generate-mult; 64 | #X obj 100 293 unpack 0 0; 65 | #X obj 100 313 + 1; 66 | #X obj 100 333 pack 0 0; 67 | #X text 95 275 index gain; 68 | #X text 38 23 Implementaion of inverse distance spatialization.; 69 | #X obj 100 215 \$1, f 10; 70 | #X obj 157 188 \$2; 71 | #X text 107 117 spatialization parameters; 72 | #X text 167 214 gain computation; 73 | #X text 316 324 bus name prefix; 74 | #X text 138 235 num loudspeakers; 75 | #X text 39 58 \$2... abstraction yielding a list of loudspeaker definitions 76 | ; 77 | #X text 39 74 \$3... name of output bus; 78 | #X text 39 42 \$1... gain computation algo; 79 | #X obj 309 343 symbol \$3; 80 | #X obj 309 155 t a a; 81 | #X connect 0 0 4 0; 82 | #X connect 1 0 11 0; 83 | #X connect 2 0 21 0; 84 | #X connect 6 0 7 0; 85 | #X connect 6 1 8 1; 86 | #X connect 7 0 8 0; 87 | #X connect 8 0 4 1; 88 | #X connect 11 0 6 0; 89 | #X connect 11 1 5 0; 90 | #X connect 12 0 11 1; 91 | #X connect 20 0 5 1; 92 | #X connect 21 0 12 0; 93 | #X connect 21 1 20 0; 94 | -------------------------------------------------------------------------------- /upp._spat.vbap.pd: -------------------------------------------------------------------------------- 1 | #N canvas 723 113 429 389 10; 2 | #X obj 51 60 inlet; 3 | #X obj 51 331 outlet; 4 | #X obj 232 61 inlet; 5 | #X text 229 43 ls coords; 6 | #X obj 259 329 outlet; 7 | #N canvas 564 189 291 232 num-speakers 0; 8 | #X obj 44 33 inlet; 9 | #X obj 44 182 outlet; 10 | #X obj 44 97 list length; 11 | #X obj 44 123 - 1; 12 | #X obj 44 150 /; 13 | #X obj 125 98 list split 1; 14 | #X obj 44 62 t a a; 15 | #X obj 125 182 outlet; 16 | #X text 125 203 dim; 17 | #X text 44 204 count; 18 | #X text 43 15 list; 19 | #X obj 195 182 outlet; 20 | #X text 196 203 coords; 21 | #X obj 80 122 - 1; 22 | #X connect 0 0 6 0; 23 | #X connect 2 0 3 0; 24 | #X connect 3 0 4 0; 25 | #X connect 4 0 1 0; 26 | #X connect 5 0 7 0; 27 | #X connect 5 0 13 0; 28 | #X connect 5 1 11 0; 29 | #X connect 6 0 2 0; 30 | #X connect 6 1 5 0; 31 | #X connect 13 0 4 1; 32 | #X restore 259 120 pd num-speakers; 33 | #X text 334 139 coords; 34 | #X text 289 140 dim; 35 | #X text 245 139 num; 36 | #X text 266 311 num speakers; 37 | #X text 49 43 azimuth elevation spread; 38 | #X obj 51 181 unpack 0 0 0; 39 | #X obj 51 293 vbap/vbap 0 0 0; 40 | #X obj 51 243 t b a; 41 | #X obj 181 181 list prepend define_loudspeakers; 42 | #X obj 181 204 list trim; 43 | #X obj 232 87 t a a; 44 | #X text 48 15 Use VBAP external (seems unmaintained; 45 | #X connect 0 0 11 0; 46 | #X connect 2 0 16 0; 47 | #X connect 5 0 4 0; 48 | #X connect 11 0 13 0; 49 | #X connect 11 1 12 2; 50 | #X connect 11 2 12 3; 51 | #X connect 12 0 1 0; 52 | #X connect 13 0 12 0; 53 | #X connect 13 1 12 1; 54 | #X connect 14 0 15 0; 55 | #X connect 15 0 12 0; 56 | #X connect 16 0 14 0; 57 | #X connect 16 1 5 0; 58 | -------------------------------------------------------------------------------- /upp._vlinesub.pd: -------------------------------------------------------------------------------- 1 | #N canvas 148 172 470 390 10; 2 | #X obj 42 105 inlet; 3 | #X obj 42 337 outlet; 4 | #X obj 123 144 tgl 15 0 empty empty busy 17 7 0 10 -262144 -1 -1 0 5 | 1; 6 | #X obj 105 120 r \$0-free; 7 | #X obj 105 165 s \$0-busy; 8 | #X text 46 319 forward message; 9 | #X obj 247 177 change -1; 10 | #X obj 247 199 sel 1; 11 | #X obj 247 223 s \$0-free; 12 | #X obj 247 154 > 0; 13 | #X obj 247 128 r \$0-offset; 14 | #N canvas 99 410 563 403 init 0; 15 | #X text 196 96 del; 16 | #X obj 262 117 s \$0-startval; 17 | #X obj 40 122 s \$0-target; 18 | #X obj 128 122 s \$0-dur; 19 | #X text 286 174 stop; 20 | #X obj 189 150 t a b a b; 21 | #X msg 223 219 1; 22 | #X msg 257 219 0; 23 | #X obj 241 240 s \$0-lock; 24 | #X obj 114 180 +; 25 | #X obj 40 76 unpack 0 0 0 0 0, f 50; 26 | #X text 125 95 dur; 27 | #X text 270 98 start; 28 | #X obj 40 31 inlet; 29 | #X obj 337 275 outlet; 30 | #X text 29 95 target value; 31 | #X obj 223 174 s \$1-stop; 32 | #X obj 214 276 s \$0-slopestart; 33 | #X obj 125 276 s \$0-slopeend; 34 | #X obj 41 275 s \$0-stoppos; 35 | #X obj 114 202 t a a; 36 | #X obj 188 354 s \$0-startpos; 37 | #X obj 188 332 *; 38 | #X obj 218 309 r \$1-busy; 39 | #X text 248 332 if we are the only voice \, set \$0-startpos to 0; 40 | #X text 329 99 blocklen; 41 | #X obj 41 240 + 1e+38; 42 | #X obj 218 331 > 1; 43 | #X connect 5 0 9 1; 44 | #X connect 5 0 17 0; 45 | #X connect 5 0 22 0; 46 | #X connect 5 1 6 0; 47 | #X connect 5 2 16 0; 48 | #X connect 5 3 7 0; 49 | #X connect 6 0 8 0; 50 | #X connect 7 0 8 0; 51 | #X connect 9 0 20 0; 52 | #X connect 10 0 2 0; 53 | #X connect 10 1 3 0; 54 | #X connect 10 1 9 0; 55 | #X connect 10 2 5 0; 56 | #X connect 10 3 1 0; 57 | #X connect 10 4 14 0; 58 | #X connect 13 0 10 0; 59 | #X connect 20 0 26 0; 60 | #X connect 20 1 18 0; 61 | #X connect 22 0 21 0; 62 | #X connect 23 0 27 0; 63 | #X connect 26 0 19 0; 64 | #X connect 27 0 22 1; 65 | #X restore 103 231 pd init; 66 | #N canvas 366 195 777 579 DSP 0; 67 | #X obj 359 136 upp.ramp~; 68 | #X obj 137 49 r \$0-busy; 69 | #X obj 644 32 r \$0-dur; 70 | #X obj 359 330 clip~ 0 1; 71 | #X obj 359 451 +~ 0; 72 | #X obj 359 419 *~ 0; 73 | #X obj 475 383 r \$0-startval; 74 | #X obj 397 383 r \$0-target; 75 | #X obj 397 418 -; 76 | #X obj 487 500 *~; 77 | #X text 598 365 mask for this part; 78 | #X text 358 16 tick; 79 | #X obj 359 31 r \$0-offset; 80 | #X obj 380 189 -; 81 | #X obj 359 55 t b a; 82 | #X obj 487 527 throw~ \$1-out; 83 | #X obj 506 30 r \$0-slopestart; 84 | #N canvas 711 372 401 326 partmask 0; 85 | #X obj 36 49 inlet~; 86 | #X obj 124 49 inlet; 87 | #X obj 237 145 -; 88 | #X obj 237 111 t b a; 89 | #X text 267 144 offset-stoppos; 90 | #X obj 237 169 * -1; 91 | #X obj 237 89 r \$0-stoppos; 92 | #X obj 139 90 r \$0-startpos; 93 | #X obj 124 148 -; 94 | #X obj 139 113 t b a; 95 | #X obj 124 169 * -1; 96 | #X obj 36 247 outlet~; 97 | #X obj 36 209 expr~ ($v1 >= $f2)*($v1 < $f3); 98 | #X text 125 23 running offset; 99 | #X text 36 24 unity ramp; 100 | #X text 34 284 signal mask between startpos and stoppos; 101 | #X connect 0 0 12 0; 102 | #X connect 1 0 2 0; 103 | #X connect 1 0 8 0; 104 | #X connect 2 0 5 0; 105 | #X connect 3 0 2 0; 106 | #X connect 3 1 2 1; 107 | #X connect 5 0 12 2; 108 | #X connect 6 0 3 0; 109 | #X connect 7 0 9 0; 110 | #X connect 8 0 10 0; 111 | #X connect 9 0 8 0; 112 | #X connect 9 1 8 1; 113 | #X connect 10 0 12 1; 114 | #X connect 12 0 11 0; 115 | #X restore 596 385 pd partmask; 116 | #N canvas 0 22 260 170 step 0; 117 | #X obj 41 30 inlet~; 118 | #X obj 41 114 outlet~; 119 | #X obj 157 61 == 0; 120 | #X obj 41 60 expr~ $v1 >= 0; 121 | #X obj 157 31 inlet; 122 | #X obj 157 115 switch~; 123 | #X connect 0 0 3 0; 124 | #X connect 2 0 5 0; 125 | #X connect 3 0 1 0; 126 | #X connect 4 0 2 0; 127 | #X restore 400 290 pd step; 128 | #N canvas 0 22 317 226 slope 0; 129 | #X obj 55 33 inlet~; 130 | #X obj 55 142 *~ 0; 131 | #X obj 137 77 sel 0; 132 | #X msg 137 97 0; 133 | #X msg 169 97 1 \$1; 134 | #X obj 169 118 /; 135 | #X obj 137 33 inlet; 136 | #X obj 55 172 outlet~; 137 | #X obj 236 75 != 0; 138 | #X obj 236 99 switch~; 139 | #X connect 0 0 1 0; 140 | #X connect 1 0 7 0; 141 | #X connect 2 0 3 0; 142 | #X connect 2 1 4 0; 143 | #X connect 3 0 1 1; 144 | #X connect 4 0 5 0; 145 | #X connect 5 0 1 1; 146 | #X connect 6 0 2 0; 147 | #X connect 6 0 8 0; 148 | #X connect 8 0 9 0; 149 | #X restore 309 289 pd slope; 150 | #X text 319 271 either; 151 | #X text 414 271 or; 152 | #X text 362 119 unity ramp; 153 | #X text 305 364 transposing to value range; 154 | #X obj 359 210 +~ 0; 155 | #X obj 160 72 switch~; 156 | #X obj 33 50 inlet; 157 | #X obj 139 199 upp.dspintv; 158 | #X obj 215 49 r \$0-reset; 159 | #X obj 74 234 *; 160 | #X obj 74 258 s \$0-offset; 161 | #X obj 215 73 t b b; 162 | #X text 32 26 running offset; 163 | #X obj 124 137 spigot; 164 | #X obj 82 137 delay; 165 | #X obj 81 94 upp.s2ms; 166 | #X connect 0 0 17 0; 167 | #X connect 0 0 24 0; 168 | #X connect 1 0 25 0; 169 | #X connect 1 0 33 1; 170 | #X connect 2 0 18 1; 171 | #X connect 2 0 19 1; 172 | #X connect 3 0 5 0; 173 | #X connect 4 0 9 0; 174 | #X connect 5 0 4 0; 175 | #X connect 6 0 4 1; 176 | #X connect 6 0 8 1; 177 | #X connect 7 0 8 0; 178 | #X connect 8 0 5 1; 179 | #X connect 9 0 15 0; 180 | #X connect 12 0 14 0; 181 | #X connect 13 0 24 1; 182 | #X connect 14 0 0 0; 183 | #X connect 14 1 13 0; 184 | #X connect 14 1 17 1; 185 | #X connect 16 0 13 1; 186 | #X connect 17 0 9 1; 187 | #X connect 18 0 3 0; 188 | #X connect 19 0 3 0; 189 | #X connect 24 0 18 0; 190 | #X connect 24 0 19 0; 191 | #X connect 26 0 29 1; 192 | #X connect 26 0 35 0; 193 | #X connect 27 0 29 0; 194 | #X connect 28 0 31 0; 195 | #X connect 29 0 30 0; 196 | #X connect 31 0 27 0; 197 | #X connect 31 1 27 1; 198 | #X connect 31 1 33 0; 199 | #X connect 33 0 34 0; 200 | #X connect 34 0 27 0; 201 | #X connect 34 0 33 0; 202 | #X connect 35 0 34 1; 203 | #X restore 248 284 pd DSP; 204 | #N canvas 0 22 395 368 stop 0; 205 | #X obj 30 73 spigot 0; 206 | #X obj 89 73 r \$0-busy; 207 | #X obj 89 99 r \$0-lock; 208 | #X obj 30 98 spigot 1; 209 | #X text 48 131 we are stopped from outside; 210 | #X text 46 148 -> update stop position; 211 | #X obj 30 47 r \$1-stop; 212 | #X obj 30 254 min; 213 | #X obj 63 227 r \$0-stoppos; 214 | #X obj 63 322 s \$0-stoppos; 215 | #X obj 30 289 select; 216 | #X text 77 306 output on change; 217 | #X obj 30 202 +; 218 | #X obj 45 178 r \$0-offset; 219 | #X obj 209 256 min; 220 | #X obj 209 291 select; 221 | #X text 256 308 output on change; 222 | #X obj 242 229 r \$0-slopeend; 223 | #X obj 242 324 s \$0-slopeend; 224 | #X text 28 24 Stop signal by other voice (sample delay from now); 225 | #X connect 0 0 3 0; 226 | #X connect 1 0 0 1; 227 | #X connect 2 0 3 1; 228 | #X connect 3 0 12 0; 229 | #X connect 6 0 0 0; 230 | #X connect 7 0 10 0; 231 | #X connect 8 0 7 1; 232 | #X connect 8 0 10 1; 233 | #X connect 10 1 9 0; 234 | #X connect 12 0 7 0; 235 | #X connect 12 0 14 0; 236 | #X connect 13 0 12 1; 237 | #X connect 14 0 15 0; 238 | #X connect 15 1 18 0; 239 | #X connect 17 0 14 1; 240 | #X connect 17 0 15 1; 241 | #X restore 157 231 pd stop; 242 | #X obj 326 128 r \$0-slopeend; 243 | #X text 246 110 signal end after slope end; 244 | #X text 41 13 This is used in upp.vline~; 245 | #X text 41 28 It plays one ramp segment; 246 | #N canvas 0 22 225 200 incdec_voices 0; 247 | #X obj 37 24 r \$0-busy; 248 | #X obj 37 48 change -1; 249 | #X obj 37 70 sel 0 1; 250 | #X obj 37 124 +; 251 | #X msg 37 92 -1; 252 | #X msg 68 92 1; 253 | #X obj 68 125 max 0; 254 | #X obj 37 159 s \$1-busy; 255 | #X obj 121 24 r \$1-busy; 256 | #X connect 0 0 1 0; 257 | #X connect 1 0 2 0; 258 | #X connect 2 0 4 0; 259 | #X connect 2 1 5 0; 260 | #X connect 3 0 6 0; 261 | #X connect 3 0 7 0; 262 | #X connect 4 0 3 0; 263 | #X connect 5 0 3 0; 264 | #X connect 6 0 3 1; 265 | #X connect 8 0 3 1; 266 | #X restore 247 336 pd incdec_voices; 267 | #X text 245 266 actual synthesis; 268 | #X text 245 318 increment/decrement busy voices; 269 | #X text 42 50 grrrr.org 2016; 270 | #X text 39 84 targetval dur delay startval blocksize; 271 | #X obj 42 143 upp.flowctrl; 272 | #X obj 76 278 s \$0-reset; 273 | #X obj 76 193 t b a; 274 | #X connect 0 0 23 0; 275 | #X connect 3 0 23 1; 276 | #X connect 6 0 7 0; 277 | #X connect 7 0 8 0; 278 | #X connect 9 0 6 0; 279 | #X connect 10 0 9 0; 280 | #X connect 11 0 12 0; 281 | #X connect 14 0 9 1; 282 | #X connect 23 0 1 0; 283 | #X connect 23 1 25 0; 284 | #X connect 23 2 2 0; 285 | #X connect 23 2 4 0; 286 | #X connect 25 0 24 0; 287 | #X connect 25 1 11 0; 288 | -------------------------------------------------------------------------------- /upp._xhelper.pd: -------------------------------------------------------------------------------- 1 | #N canvas 396 109 780 637 10; 2 | #X obj 69 38 inlet; 3 | #X obj 367 420 t a b; 4 | #X obj 69 562 outlet; 5 | #X text 365 402 overflow; 6 | #X obj 447 422 t b; 7 | #X text 436 440 release; 8 | #X obj 216 562 outlet; 9 | #X obj 362 22 loadbang; 10 | #X msg 362 44 0; 11 | #X obj 50 95 cnv 15 200 100 empty empty empty 20 12 0 14 -233017 -66577 12 | 0; 13 | #X text 186 166 if busy; 14 | #X text 74 165 if vacant; 15 | #X obj 198 111 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 16 | 1; 17 | #X text 164 108 busy; 18 | #X msg 288 116 1; 19 | #X text 287 99 set busy; 20 | #X text 70 579 pass on; 21 | #X text 212 579 release; 22 | #X obj 429 259 spigot; 23 | #X obj 178 38 inlet; 24 | #X obj 294 386 t a; 25 | #X msg 273 337 -1; 26 | #X obj 260 423 nbx 5 14 -1e+37 1e+37 0 0 empty empty active 0 -8 0 27 | 10 -262144 -1 -1 0 256; 28 | #X text 173 20 modulation message; 29 | #X obj 256 254 t a b; 30 | #X msg 238 338 1; 31 | #X obj 260 385 +; 32 | #X obj 306 567 outlet; 33 | #X text 303 588 voices active; 34 | #X text 67 20 event message; 35 | #X obj 506 378 inlet pass_on; 36 | #X obj 644 374 inlet release; 37 | #X obj 506 332 outlet event_msg; 38 | #X obj 643 330 outlet mod_msg; 39 | #X text 648 21 grrrr.org 2012; 40 | #X obj 135 143 upp.dilemma; 41 | #X connect 0 0 35 0; 42 | #X connect 1 0 2 0; 43 | #X connect 1 1 14 0; 44 | #X connect 1 1 21 0; 45 | #X connect 4 0 6 0; 46 | #X connect 4 0 8 0; 47 | #X connect 4 0 21 0; 48 | #X connect 7 0 8 0; 49 | #X connect 8 0 12 0; 50 | #X connect 8 0 26 0; 51 | #X connect 12 0 35 1; 52 | #X connect 14 0 12 0; 53 | #X connect 18 0 33 0; 54 | #X connect 19 0 18 0; 55 | #X connect 20 0 26 1; 56 | #X connect 21 0 26 0; 57 | #X connect 22 0 27 0; 58 | #X connect 24 0 32 0; 59 | #X connect 24 1 25 0; 60 | #X connect 25 0 26 0; 61 | #X connect 26 0 20 0; 62 | #X connect 26 0 22 0; 63 | #X connect 26 0 18 1; 64 | #X connect 30 0 1 0; 65 | #X connect 31 0 4 0; 66 | #X connect 35 0 24 0; 67 | #X connect 35 1 2 0; 68 | -------------------------------------------------------------------------------- /upp.cmpatom.pd: -------------------------------------------------------------------------------- 1 | #N canvas 383 280 397 296 10; 2 | #X obj 63 31 inlet; 3 | #X obj 128 237 outlet; 4 | #X obj 220 30 inlet; 5 | #X obj 220 57 route float symbol; 6 | #X msg 220 80 0; 7 | #X msg 260 81 1; 8 | #X msg 260 100 0; 9 | #X msg 309 101 1; 10 | #X msg 155 202 0; 11 | #X obj 64 75 upp.dilemma; 12 | #X obj 110 99 upp.dilemma; 13 | #X obj 176 158 select s; 14 | #X msg 102 201 1; 15 | #X obj 64 158 select 0; 16 | #X text 288 23 grrrr.org 2012; 17 | #X connect 0 0 9 0; 18 | #X connect 2 0 3 0; 19 | #X connect 3 0 4 0; 20 | #X connect 3 0 13 1; 21 | #X connect 3 1 5 0; 22 | #X connect 3 1 6 0; 23 | #X connect 3 1 11 1; 24 | #X connect 3 2 7 0; 25 | #X connect 4 0 9 1; 26 | #X connect 5 0 9 1; 27 | #X connect 6 0 10 1; 28 | #X connect 7 0 10 1; 29 | #X connect 8 0 1 0; 30 | #X connect 9 0 13 0; 31 | #X connect 9 1 10 0; 32 | #X connect 10 0 11 0; 33 | #X connect 10 1 8 0; 34 | #X connect 11 0 12 0; 35 | #X connect 11 1 8 0; 36 | #X connect 12 0 1 0; 37 | #X connect 13 0 12 0; 38 | #X connect 13 1 8 0; 39 | -------------------------------------------------------------------------------- /upp.comm.pd: -------------------------------------------------------------------------------- 1 | #N canvas 123 398 369 376 10; 2 | #X obj 238 53 loadbang; 3 | #X obj 40 53 route start mod; 4 | #X obj 40 25 r \$1-\$2; 5 | #X obj 115 90 spigot; 6 | #X obj 40 179 t a a b; 7 | #X text 236 23 grrrr.org 2012; 8 | #X obj 115 132 upp._check; 9 | #X obj 22 206 cnv 15 180 25 empty empty empty 20 12 0 14 -204786 -66577 10 | 0; 11 | #X obj 224 207 cnv 15 100 100 empty empty empty 20 12 0 14 -233017 12 | -66577 0; 13 | #X text 38 325 release; 14 | #X obj 256 280 switch~; 15 | #X msg 273 233 1; 16 | #X msg 238 233 0; 17 | #X obj 256 259 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 18 | 1; 19 | #X obj 40 308 s \$1; 20 | #X obj 40 282 list prepend \$2; 21 | #X obj 40 257 t b b; 22 | #X obj 40 236 upp._release; 23 | #X obj 40 210 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 24 | #X connect 0 0 12 0; 25 | #X connect 1 0 4 0; 26 | #X connect 1 1 3 0; 27 | #X connect 2 0 1 0; 28 | #X connect 3 0 6 0; 29 | #X connect 4 0 18 0; 30 | #X connect 4 1 6 1; 31 | #X connect 4 2 11 0; 32 | #X connect 6 0 18 1; 33 | #X connect 11 0 13 0; 34 | #X connect 12 0 13 0; 35 | #X connect 13 0 10 0; 36 | #X connect 13 0 3 1; 37 | #X connect 15 0 14 0; 38 | #X connect 16 0 15 0; 39 | #X connect 16 1 12 0; 40 | #X connect 17 0 16 0; 41 | #X connect 18 0 17 0; 42 | -------------------------------------------------------------------------------- /upp.delay-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 411 153 881 347 10; 2 | #X msg 69 67 0; 3 | #X msg 105 66 1; 4 | #X floatatom 69 296 5 0 0 0 - - -, f 5; 5 | #X msg 190 65 64; 6 | #X msg 139 42 63.4; 7 | #X msg 138 66 63.5; 8 | #X msg 140 87 63.6; 9 | #X msg 189 40 63.9999; 10 | #X floatatom 108 297 5 0 0 0 - - -, f 5; 11 | #X floatatom 147 297 5 0 0 0 - - -, f 5; 12 | #X msg 190 90 64.5; 13 | #X msg 192 141 1000; 14 | #X obj 69 161 t a b; 15 | #X msg 359 61 0; 16 | #X msg 395 60 1; 17 | #X msg 480 59 64; 18 | #X msg 429 36 63.4; 19 | #X msg 428 60 63.5; 20 | #X msg 430 81 63.6; 21 | #X msg 479 34 63.9999; 22 | #X msg 481 109 128; 23 | #X msg 480 84 64.5; 24 | #X msg 482 135 1000; 25 | #N canvas 0 22 239 213 print_dsp_blocks 0; 26 | #X obj 143 168 print~; 27 | #X obj 36 105 spigot; 28 | #X obj 105 105 - 1; 29 | #X obj 36 127 t a b; 30 | #X obj 36 80 t a a; 31 | #X obj 39 20 bang~; 32 | #X obj 37 59 f; 33 | #X obj 94 20 inlet; 34 | #X obj 145 20 inlet~; 35 | #X obj 94 42 t f b; 36 | #X connect 1 0 3 0; 37 | #X connect 2 0 6 1; 38 | #X connect 3 0 2 0; 39 | #X connect 3 1 0 0; 40 | #X connect 4 0 1 0; 41 | #X connect 4 1 1 1; 42 | #X connect 5 0 6 0; 43 | #X connect 6 0 4 0; 44 | #X connect 7 0 9 0; 45 | #X connect 8 0 0 0; 46 | #X connect 9 0 6 1; 47 | #X restore 358 306 pd print_dsp_blocks; 48 | #X obj 469 279 sig~; 49 | #X msg 448 234 1; 50 | #X msg 479 234 0; 51 | #X obj 473 180 print -----------; 52 | #X obj 359 155 t a b; 53 | #X msg 358 280 3; 54 | #X obj 359 197 upp.delay; 55 | #X obj 69 214 upp.delay; 56 | #X obj 655 196 upp.delay; 57 | #N canvas 0 22 239 213 print_dsp_blocks 0; 58 | #X obj 143 168 print~; 59 | #X obj 36 105 spigot; 60 | #X obj 105 105 - 1; 61 | #X obj 36 127 t a b; 62 | #X obj 36 80 t a a; 63 | #X obj 39 20 bang~; 64 | #X obj 37 59 f; 65 | #X obj 94 20 inlet; 66 | #X obj 145 20 inlet~; 67 | #X obj 94 42 t f b; 68 | #X connect 1 0 3 0; 69 | #X connect 2 0 6 1; 70 | #X connect 3 0 2 0; 71 | #X connect 3 1 0 0; 72 | #X connect 4 0 1 0; 73 | #X connect 4 1 1 1; 74 | #X connect 5 0 6 0; 75 | #X connect 6 0 4 0; 76 | #X connect 7 0 9 0; 77 | #X connect 8 0 0 0; 78 | #X connect 9 0 6 1; 79 | #X restore 648 294 pd print_dsp_blocks; 80 | #X obj 759 267 sig~; 81 | #X obj 655 140 t b b; 82 | #X msg 655 168 64; 83 | #X msg 654 230 0; 84 | #X obj 655 77 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 85 | -1; 86 | #X obj 718 195 upp.delay; 87 | #X msg 718 167 64; 88 | #X obj 781 194 upp.delay; 89 | #X msg 781 166 64; 90 | #X msg 694 230 1; 91 | #X msg 733 231 2; 92 | #X msg 773 230 3; 93 | #X msg 648 268 4; 94 | #X msg 192 166 3392; 95 | #X msg 192 188 3456; 96 | #X text 229 118 2/0; 97 | #X text 230 165 53/0; 98 | #X text 231 188 54/0; 99 | #X obj 69 266 upp.dspintv; 100 | #X text 229 142 15/40; 101 | #X msg 191 115 128; 102 | #X connect 0 0 12 0; 103 | #X connect 1 0 12 0; 104 | #X connect 3 0 12 0; 105 | #X connect 4 0 12 0; 106 | #X connect 5 0 12 0; 107 | #X connect 6 0 12 0; 108 | #X connect 7 0 12 0; 109 | #X connect 10 0 12 0; 110 | #X connect 11 0 12 0; 111 | #X connect 12 0 31 0; 112 | #X connect 12 1 52 1; 113 | #X connect 13 0 28 0; 114 | #X connect 14 0 28 0; 115 | #X connect 15 0 28 0; 116 | #X connect 16 0 28 0; 117 | #X connect 17 0 28 0; 118 | #X connect 18 0 28 0; 119 | #X connect 19 0 28 0; 120 | #X connect 20 0 28 0; 121 | #X connect 21 0 28 0; 122 | #X connect 22 0 28 0; 123 | #X connect 24 0 23 1; 124 | #X connect 25 0 24 0; 125 | #X connect 26 0 24 0; 126 | #X connect 28 0 30 0; 127 | #X connect 28 1 26 0; 128 | #X connect 28 1 27 0; 129 | #X connect 28 1 29 0; 130 | #X connect 29 0 23 0; 131 | #X connect 30 0 25 0; 132 | #X connect 31 0 52 0; 133 | #X connect 31 1 8 0; 134 | #X connect 31 2 9 0; 135 | #X connect 32 0 40 0; 136 | #X connect 32 0 43 0; 137 | #X connect 34 0 33 1; 138 | #X connect 35 0 36 0; 139 | #X connect 35 1 46 0; 140 | #X connect 35 1 37 0; 141 | #X connect 36 0 32 0; 142 | #X connect 37 0 34 0; 143 | #X connect 38 0 35 0; 144 | #X connect 39 0 42 0; 145 | #X connect 39 0 44 0; 146 | #X connect 40 0 39 0; 147 | #X connect 41 0 45 0; 148 | #X connect 42 0 41 0; 149 | #X connect 43 0 34 0; 150 | #X connect 44 0 34 0; 151 | #X connect 45 0 34 0; 152 | #X connect 46 0 33 0; 153 | #X connect 47 0 12 0; 154 | #X connect 48 0 12 0; 155 | #X connect 52 0 2 0; 156 | #X connect 54 0 12 0; 157 | -------------------------------------------------------------------------------- /upp.delay.pd: -------------------------------------------------------------------------------- 1 | #N canvas 374 444 453 411 10; 2 | #X obj 41 86 inlet; 3 | #X obj 41 343 outlet; 4 | #X obj 151 344 outlet; 5 | #X text 95 362 sub-block delay (samples); 6 | #X obj 41 189 f \$1; 7 | #X text 38 362 bang; 8 | #X text 40 17 delay with DSP block boundary correction; 9 | #X obj 268 345 outlet; 10 | #X text 41 33 grrrr.org \, 2012-2016; 11 | #X text 265 364 sub-sample loss (samples); 12 | #X text 40 68 bang / delay (samples); 13 | #N canvas 220 232 248 255 delay_blocks 0; 14 | #X obj 40 36 inlet; 15 | #X obj 41 215 outlet; 16 | #X obj 171 36 inlet; 17 | #X msg 171 144 stop; 18 | #X obj 40 59 sel 0; 19 | #X obj 103 36 inlet; 20 | #X text 171 18 stop; 21 | #X text 93 19 blocksize; 22 | #X obj 67 183 delay; 23 | #X obj 67 97 * 64; 24 | #X obj 67 150 upp.s2ms; 25 | #N canvas 151 291 376 479 corr 0; 26 | #X obj 53 34 inlet; 27 | #X obj 119 232 t a a, f 7; 28 | #X obj 119 285 -; 29 | #X msg 176 369 0; 30 | #X obj 119 255 int; 31 | #X obj 119 341 + 1; 32 | #X obj 119 105 upp.s2ms; 33 | #X obj 119 185 upp.ms2s; 34 | #X text 176 185 this happens inside [delay]; 35 | #X obj 53 73 t a a; 36 | #X obj 53 403 +; 37 | #X obj 53 432 outlet; 38 | #X obj 119 367 * 2; 39 | #X text 108 140 round-off error occurs here; 40 | #X obj 119 313 moses -0.5; 41 | #X connect 0 0 9 0; 42 | #X connect 1 0 4 0; 43 | #X connect 1 1 2 1; 44 | #X connect 2 0 14 0; 45 | #X connect 3 0 10 1; 46 | #X connect 4 0 2 0; 47 | #X connect 5 0 12 0; 48 | #X connect 6 0 7 0; 49 | #X connect 7 0 1 0; 50 | #X connect 9 0 10 0; 51 | #X connect 9 1 6 0; 52 | #X connect 10 0 11 0; 53 | #X connect 12 0 10 1; 54 | #X connect 14 0 5 0; 55 | #X connect 14 1 3 0; 56 | #X restore 120 105 pd corr; 57 | #X text 36 18 blocks; 58 | #X obj 67 125 + 0.0001; 59 | #X connect 0 0 4 0; 60 | #X connect 2 0 3 0; 61 | #X connect 3 0 8 0; 62 | #X connect 4 0 1 0; 63 | #X connect 4 1 9 0; 64 | #X connect 5 0 9 1; 65 | #X connect 8 0 1 0; 66 | #X connect 9 0 13 0; 67 | #X connect 10 0 8 0; 68 | #X connect 11 0 10 0; 69 | #X connect 13 0 10 0; 70 | #X restore 41 257 pd delay_blocks; 71 | #N canvas 96 92 332 300 whole_blocks 0; 72 | #X obj 53 44 inlet; 73 | #X obj 52 239 outlet; 74 | #X obj 176 237 outlet; 75 | #X obj 53 107 / 64; 76 | #X obj 53 134 int; 77 | #X obj 53 80 t a a; 78 | #X obj 53 163 t a a; 79 | #X obj 177 176 -; 80 | #X obj 176 199 * -1; 81 | #X text 77 136 whole blocks; 82 | #X obj 80 189 * 64; 83 | #X text 54 25 samples; 84 | #X text 51 262 whole blocks; 85 | #X text 175 259 remaining samples; 86 | #X obj 171 46 inlet; 87 | #X text 171 28 blocksize; 88 | #X connect 0 0 5 0; 89 | #X connect 3 0 4 0; 90 | #X connect 4 0 6 0; 91 | #X connect 5 0 3 0; 92 | #X connect 5 1 7 1; 93 | #X connect 6 0 1 0; 94 | #X connect 6 1 10 0; 95 | #X connect 7 0 8 0; 96 | #X connect 8 0 2 0; 97 | #X connect 10 0 7 0; 98 | #X connect 14 0 3 1; 99 | #X connect 14 0 10 1; 100 | #X restore 41 219 pd whole_blocks; 101 | #N canvas 0 22 341 256 whole_samples 0; 102 | #X obj 53 179 outlet; 103 | #X obj 54 109 int; 104 | #X obj 168 114 -; 105 | #X obj 168 176 outlet; 106 | #X obj 54 134 t a a; 107 | #X obj 168 136 * -1; 108 | #X obj 54 80 t a a; 109 | #X obj 56 48 inlet; 110 | #X text 57 21 samples; 111 | #X text 52 206 whole samples; 112 | #X text 171 201 fractional samples; 113 | #X connect 1 0 4 0; 114 | #X connect 2 0 5 0; 115 | #X connect 4 0 0 0; 116 | #X connect 4 1 2 0; 117 | #X connect 5 0 3 0; 118 | #X connect 6 0 1 0; 119 | #X connect 6 1 2 1; 120 | #X connect 7 0 6 0; 121 | #X restore 166 257 pd whole_samples; 122 | #X obj 41 285 t b b b; 123 | #X obj 151 319 f; 124 | #X obj 268 321 f; 125 | #X obj 126 87 inlet; 126 | #X obj 41 114 route bang float stop; 127 | #X text 211 70 blocksize (should be adaptive); 128 | #X obj 216 88 loadbang; 129 | #X obj 216 136 select 0; 130 | #X msg 216 158 64; 131 | #X obj 278 89 inlet; 132 | #X obj 270 185 t a; 133 | #X obj 216 115 f \$2; 134 | #X connect 0 0 18 0; 135 | #X connect 4 0 12 0; 136 | #X connect 11 0 14 0; 137 | #X connect 12 0 11 0; 138 | #X connect 12 1 13 0; 139 | #X connect 13 0 15 1; 140 | #X connect 13 1 16 1; 141 | #X connect 14 0 1 0; 142 | #X connect 14 1 15 0; 143 | #X connect 14 2 16 0; 144 | #X connect 15 0 2 0; 145 | #X connect 16 0 7 0; 146 | #X connect 17 0 4 1; 147 | #X connect 18 0 4 0; 148 | #X connect 18 1 4 0; 149 | #X connect 18 2 11 2; 150 | #X connect 20 0 25 0; 151 | #X connect 21 0 22 0; 152 | #X connect 21 1 24 0; 153 | #X connect 22 0 24 0; 154 | #X connect 23 0 24 0; 155 | #X connect 24 0 12 1; 156 | #X connect 24 0 11 1; 157 | #X connect 25 0 21 0; 158 | -------------------------------------------------------------------------------- /upp.delay~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 276 275 450 300 10; 2 | #X obj 98 159 upp.delay~; 3 | #X obj 58 228 print~; 4 | #X obj 98 120 sig~; 5 | #X obj 58 69 t b a; 6 | #X obj 58 43 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 7 | ; 8 | #X floatatom 155 121 5 0 0 0 - - -, f 5; 9 | #X obj 156 41 loadbang; 10 | #X msg 155 64 10; 11 | #X text 194 122 delay in samples; 12 | #X text 174 158 non-integer sample times are rounded; 13 | #X text 175 175 to next integer sample time value; 14 | #X connect 0 0 1 0; 15 | #X connect 2 0 0 0; 16 | #X connect 3 0 1 0; 17 | #X connect 3 1 2 0; 18 | #X connect 4 0 3 0; 19 | #X connect 5 0 0 1; 20 | #X connect 6 0 7 0; 21 | #X connect 7 0 5 0; 22 | -------------------------------------------------------------------------------- /upp.delay~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 356 217 10; 2 | #N canvas 484 237 243 216 delwrite 0; 3 | #X obj 47 32 inlet~; 4 | #X obj 46 132 outlet~; 5 | #X obj 47 67 delwrite~ \$0-delay 10; 6 | #X connect 0 0 2 0; 7 | #X restore 34 82 pd delwrite; 8 | #N canvas 0 22 307 200 delread 0; 9 | #X obj 70 37 inlet~; 10 | #X obj 69 128 outlet~; 11 | #X obj 187 36 inlet; 12 | #X obj 69 97 delread~ \$0-delay; 13 | #X connect 2 0 3 0; 14 | #X connect 3 0 1 0; 15 | #X restore 34 145 pd delread; 16 | #X obj 34 46 inlet~; 17 | #X obj 34 171 outlet~; 18 | #X obj 162 45 inlet; 19 | #X obj 162 88 upp.s2ms; 20 | #X text 155 66 delay(samples); 21 | #X text 33 18 grrrr.org \, 2012-2016; 22 | #X text 108 143 delread is rounding (not truncating); 23 | #X text 108 156 to sample times; 24 | #X text 106 170 (no need to correct incoming values); 25 | #X connect 0 0 1 0; 26 | #X connect 1 0 3 0; 27 | #X connect 2 0 0 0; 28 | #X connect 4 0 5 0; 29 | #X connect 5 0 1 1; 30 | -------------------------------------------------------------------------------- /upp.dilemma.pd: -------------------------------------------------------------------------------- 1 | #N canvas 68 50 453 244 10; 2 | #X obj 41 139 spigot; 3 | #X obj 180 141 spigot; 4 | #X obj 74 117 == 0; 5 | #X obj 44 33 inlet; 6 | #X obj 41 190 outlet; 7 | #X obj 180 191 outlet; 8 | #X obj 184 33 inlet; 9 | #X text 171 65 not directly setting the spigot args; 10 | #X text 171 79 avoids problems if right outlet sets it; 11 | #X obj 84 68 t a b; 12 | #X obj 137 68 f 0; 13 | #X text 43 12 data; 14 | #X text 182 13 control 0/1; 15 | #X text 184 160 if control==1; 16 | #X text 44 158 if control==0; 17 | #X text 352 11 grrrr.org 2012; 18 | #X connect 0 0 4 0; 19 | #X connect 1 0 5 0; 20 | #X connect 2 0 0 1; 21 | #X connect 3 0 9 0; 22 | #X connect 6 0 10 1; 23 | #X connect 9 0 0 0; 24 | #X connect 9 0 1 0; 25 | #X connect 9 1 10 0; 26 | #X connect 10 0 1 1; 27 | #X connect 10 0 2 0; 28 | -------------------------------------------------------------------------------- /upp.dirac~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 208 60 516 517 10; 2 | #N canvas 0 22 239 213 print_dsp_blocks 0; 3 | #X obj 143 168 print~; 4 | #X obj 36 105 spigot; 5 | #X obj 105 105 - 1; 6 | #X obj 36 127 t a b; 7 | #X obj 36 80 t a a; 8 | #X obj 39 20 bang~; 9 | #X obj 37 59 f; 10 | #X obj 94 20 inlet; 11 | #X obj 145 20 inlet~; 12 | #X obj 94 42 t f b; 13 | #X connect 1 0 3 0; 14 | #X connect 2 0 6 1; 15 | #X connect 3 0 2 0; 16 | #X connect 3 1 0 0; 17 | #X connect 4 0 1 0; 18 | #X connect 4 1 1 1; 19 | #X connect 5 0 6 0; 20 | #X connect 6 0 4 0; 21 | #X connect 7 0 9 0; 22 | #X connect 8 0 0 0; 23 | #X connect 9 0 6 1; 24 | #X restore 28 327 pd print_dsp_blocks; 25 | #X obj 85 120 print ============; 26 | #X text 26 36 Time units are samples; 27 | #X obj 28 97 hradio 15 1 0 3 empty empty examples 0 -8 0 10 -260097 28 | -1 -1 2; 29 | #X obj 28 120 t b a b; 30 | #X obj 46 147 sel 0 1 2 3; 31 | #X text 26 56 grrrr.org 2018; 32 | #X msg 28 275 1; 33 | #X msg 47 175 1 0; 34 | #X msg 64 203 0.5 3; 35 | #X msg 79 226 0.5 3 \, 0.7 7; 36 | #X obj 64 275 upp.dirac~ 8; 37 | #X text 25 430 - block size (default=64); 38 | #X text 25 400 - voices (default=2): number of ramp parts within one 39 | DSP block. Overflow will be signaled at right outlet if exceeded; 40 | #X text 26 454 The block size can also be set through the right inlet 41 | ; 42 | #X text 24 384 upp.dirac~ can be given two arguments:; 43 | #X text 26 17 Dirac spike; 44 | #X connect 3 0 4 0; 45 | #X connect 4 0 7 0; 46 | #X connect 4 1 5 0; 47 | #X connect 4 2 1 0; 48 | #X connect 5 0 8 0; 49 | #X connect 5 1 9 0; 50 | #X connect 5 2 10 0; 51 | #X connect 7 0 0 0; 52 | #X connect 8 0 11 0; 53 | #X connect 9 0 11 0; 54 | #X connect 10 0 11 0; 55 | #X connect 11 0 0 1; 56 | -------------------------------------------------------------------------------- /upp.dirac~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 23 398 335 10; 2 | #X obj 37 80 inlet; 3 | #X obj 77 284 outlet~; 4 | #X text 32 34 grrrr.org 2018; 5 | #X text 32 14 Dirac spike; 6 | #X obj 275 90 inlet; 7 | #X obj 77 201 pack 0 0 1; 8 | #X obj 134 179 + 1; 9 | #X obj 37 105 route bang float list; 10 | #X obj 77 155 unpack; 11 | #X text 34 63 bang or volume; 12 | #X msg 77 231 0 \, \$1 0 \$2 \, 0 0 \$3; 13 | #X text 273 70 block size; 14 | #X obj 77 254 upp.vline~ \$1 \$2; 15 | #X msg 37 126 1 0; 16 | #X msg 78 125 \$1 0; 17 | #X connect 0 0 7 0; 18 | #X connect 4 0 12 1; 19 | #X connect 5 0 10 0; 20 | #X connect 6 0 5 2; 21 | #X connect 7 0 13 0; 22 | #X connect 7 1 14 0; 23 | #X connect 7 2 8 0; 24 | #X connect 8 0 5 0; 25 | #X connect 8 1 6 0; 26 | #X connect 8 1 5 1; 27 | #X connect 10 0 12 0; 28 | #X connect 12 0 1 0; 29 | #X connect 13 0 8 0; 30 | #X connect 14 0 8 0; 31 | -------------------------------------------------------------------------------- /upp.dspintv-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 450 300 10; 2 | #X obj 46 83 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 3 | -1; 4 | #X obj 46 115 t b b; 5 | #X obj 117 81 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 6 | -1; 7 | #X obj 117 113 t b b; 8 | #X obj 224 83 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 9 | -1; 10 | #X obj 224 115 t b b; 11 | #X obj 103 149 upp.delay 1; 12 | #X obj 216 144 upp.delay 64; 13 | #X obj 318 83 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 14 | -1; 15 | #X obj 318 115 t b b; 16 | #X obj 310 144 upp.delay 640; 17 | #X floatatom 46 262 5 0 0 0 - - -, f 5; 18 | #X obj 47 233 upp.dspintv; 19 | #X text 45 15 Measure time interval in DSP ticks; 20 | #X text 46 30 0 indicates that messages fall within the same DSP tick 21 | ; 22 | #X text 45 46 grrrr.org 2016; 23 | #X connect 0 0 1 0; 24 | #X connect 1 0 12 0; 25 | #X connect 1 1 12 1; 26 | #X connect 2 0 3 0; 27 | #X connect 3 0 6 0; 28 | #X connect 3 1 12 1; 29 | #X connect 4 0 5 0; 30 | #X connect 5 0 7 0; 31 | #X connect 5 1 12 1; 32 | #X connect 6 0 12 0; 33 | #X connect 7 0 12 0; 34 | #X connect 8 0 9 0; 35 | #X connect 9 0 10 0; 36 | #X connect 9 1 12 1; 37 | #X connect 10 0 12 0; 38 | #X connect 12 0 11 0; 39 | -------------------------------------------------------------------------------- /upp.dspintv.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 484 368 10; 2 | #X obj 44 89 inlet; 3 | #X obj 44 296 outlet; 4 | #X obj 247 91 inlet; 5 | #X text 249 72 reset; 6 | #X text 44 71 test; 7 | #X obj 246 275 sig~ 1; 8 | #X obj 246 299 tabsend~ \$0-table; 9 | #X obj 246 238 table \$0-table 1; 10 | #X obj 335 183 switch~; 11 | #X obj 335 87 loadbang; 12 | #X msg 335 113 0; 13 | #X obj 299 275 tabreceive~ \$0-table; 14 | #X msg 293 146 1; 15 | #X obj 247 213 tabwrite \$0-table; 16 | #X msg 247 148 0; 17 | #X obj 44 240 tabread \$0-table; 18 | #X msg 44 144 0; 19 | #X text 45 35 grrrr.org 2016; 20 | #X obj 247 116 b; 21 | #X obj 44 117 route stop; 22 | #X obj 44 193 b; 23 | #X msg 45 215 0; 24 | #X text 45 18 Query time between right and left message input in DSP 25 | ticks; 26 | #X connect 0 0 19 0; 27 | #X connect 2 0 18 0; 28 | #X connect 5 0 6 0; 29 | #X connect 9 0 10 0; 30 | #X connect 10 0 8 0; 31 | #X connect 10 0 13 1; 32 | #X connect 11 0 6 0; 33 | #X connect 12 0 8 0; 34 | #X connect 14 0 13 0; 35 | #X connect 15 0 1 0; 36 | #X connect 16 0 8 0; 37 | #X connect 18 0 12 0; 38 | #X connect 18 0 14 0; 39 | #X connect 19 0 16 0; 40 | #X connect 19 1 20 0; 41 | #X connect 20 0 21 0; 42 | #X connect 21 0 15 0; 43 | -------------------------------------------------------------------------------- /upp.dynchain.pd: -------------------------------------------------------------------------------- 1 | #N canvas 708 22 574 700 10; 2 | #X obj 67 104 inlet; 3 | #X obj 67 206 until; 4 | #X msg 113 206 0; 5 | #X obj 67 227 f; 6 | #X obj 248 643 list trim; 7 | #X msg 247 597 list obj 50 \$1; 8 | #X obj 67 176 t a b a; 9 | #X obj 61 333 moses 1; 10 | #X obj 120 333 moses; 11 | #X obj 177 306 - 1; 12 | #X obj 71 413 t a a; 13 | #X obj 72 456 pack; 14 | #X msg 72 476 connect \$1 0 \$2 0 \, connect 1 0 \$2 1 \, connect \$2 15 | 1 3 0; 16 | #X obj 159 412 t a a; 17 | #X obj 160 455 pack; 18 | #X msg 160 501 connect \$1 0 \$2 0 \, connect 1 0 \$2 1 \, connect 19 | \$2 1 3 0 \, connect \$2 0 2 0; 20 | #X msg 61 380 connect 0 0 \$1 0 \, connect 1 0 \$1 1 \, connect \$1 21 | 1 3 0; 22 | #X obj 72 433 - 1; 23 | #X obj 160 432 - 1; 24 | #X obj 67 153 list split 1; 25 | #X obj 61 695 list prepend; 26 | #X obj 402 107 inlet; 27 | #X obj 248 622 list append; 28 | #X obj 97 227 + 1; 29 | #X obj 275 703 outlet; 30 | #X msg 158 208 symbol pd-\$1; 31 | #X obj 370 701 outlet; 32 | #X obj 67 249 t a a a a; 33 | #X text 371 723 pre-creation; 34 | #X text 257 723 post-creation; 35 | #X text 63 34 arg1: offset index into sub-patch (= number of existing 36 | objects in sub-patch); 37 | #X text 401 86 object_to_create (list); 38 | #X text 124 276 only connect if \$1 != 0; 39 | #X text 62 16 dynamically creates (chained) voices; 40 | #X obj 158 175 list split 1; 41 | #X obj 61 289 spigot; 42 | #X obj 62 355 +; 43 | #X obj 118 357 +; 44 | #X obj 156 358 +; 45 | #X text 65 84 voice-count sub-patch existing_objects; 46 | #X text 454 13 grrrr.org 2012; 47 | #X obj 61 717 upp.fwd; 48 | #X obj 247 568 + 50; 49 | #X obj 247 549 * 20; 50 | #X connect 0 0 19 0; 51 | #X connect 1 0 3 0; 52 | #X connect 2 0 3 1; 53 | #X connect 3 0 23 0; 54 | #X connect 3 0 27 0; 55 | #X connect 4 0 20 0; 56 | #X connect 5 0 22 0; 57 | #X connect 6 0 1 0; 58 | #X connect 6 1 2 0; 59 | #X connect 6 2 9 0; 60 | #X connect 7 0 36 0; 61 | #X connect 7 1 8 0; 62 | #X connect 8 0 37 0; 63 | #X connect 8 1 38 0; 64 | #X connect 9 0 8 1; 65 | #X connect 10 0 17 0; 66 | #X connect 10 1 11 1; 67 | #X connect 11 0 12 0; 68 | #X connect 12 0 20 0; 69 | #X connect 13 0 18 0; 70 | #X connect 13 1 14 1; 71 | #X connect 14 0 15 0; 72 | #X connect 15 0 20 0; 73 | #X connect 16 0 20 0; 74 | #X connect 17 0 11 0; 75 | #X connect 18 0 14 0; 76 | #X connect 19 0 6 0; 77 | #X connect 19 1 34 0; 78 | #X connect 20 0 41 0; 79 | #X connect 21 0 22 1; 80 | #X connect 22 0 4 0; 81 | #X connect 23 0 3 1; 82 | #X connect 25 0 20 1; 83 | #X connect 27 0 35 0; 84 | #X connect 27 1 24 0; 85 | #X connect 27 2 43 0; 86 | #X connect 27 3 26 0; 87 | #X connect 34 0 25 0; 88 | #X connect 34 1 35 1; 89 | #X connect 34 1 36 1; 90 | #X connect 34 1 37 1; 91 | #X connect 34 1 38 1; 92 | #X connect 35 0 7 0; 93 | #X connect 36 0 16 0; 94 | #X connect 37 0 10 0; 95 | #X connect 38 0 13 0; 96 | #X connect 42 0 5 0; 97 | #X connect 43 0 42 0; 98 | -------------------------------------------------------------------------------- /upp.dynpatch.pd: -------------------------------------------------------------------------------- 1 | #N canvas 27 40 610 339 10; 2 | #X obj 186 38 loadbang; 3 | #X text 184 288 explicit loadbang after everything has been set up 4 | ; 5 | #X obj 213 176 upp.dynchain; 6 | #X obj 186 232 f \$0; 7 | #X msg 186 256 \; pd-\$1-dynsub loadbang; 8 | #X obj 351 196 outlet; 9 | #X obj 351 155 inlet; 10 | #X text 349 213 index; 11 | #X text 351 138 object to create (list); 12 | #X text 276 31 create dynamically allocated object per message; 13 | #X text 276 45 with no inlets and outlets; 14 | #X obj 186 70 t b b; 15 | #X obj 213 112 list append \$1 \$0-dynsub 0; 16 | #X obj 30 195 cnv 15 120 25 empty empty empty 20 12 0 14 -204786 -66577 17 | 0; 18 | #N canvas 12 104 526 277 \$0-dynsub 0; 19 | #X restore 44 199 pd \$0-dynsub; 20 | #X connect 0 0 11 0; 21 | #X connect 2 1 5 0; 22 | #X connect 3 0 4 0; 23 | #X connect 6 0 2 1; 24 | #X connect 11 0 3 0; 25 | #X connect 11 1 12 0; 26 | #X connect 12 0 2 0; 27 | -------------------------------------------------------------------------------- /upp.dynpatch1.pd: -------------------------------------------------------------------------------- 1 | #N canvas 551 464 608 290 10; 2 | #X text 213 178 explicit loadbang after everything has been set up 3 | ; 4 | #N canvas 117 188 525 431 \$0-dynsub 0; 5 | #X obj 10 6 inlet; 6 | #X obj 10 404 outlet; 7 | #X restore 27 135 pd \$0-dynsub; 8 | #X obj 153 26 inlet; 9 | #X obj 27 27 inlet; 10 | #X obj 27 248 outlet; 11 | #X obj 182 250 upp.fwd; 12 | #X obj 182 228 list prepend pd-\$0-dynsub; 13 | #X msg 153 177 loadbang; 14 | #X obj 153 64 t b b a b; 15 | #X text 373 154 connect inlet and outlet; 16 | #X msg 170 153 connect 0 0 2 0 \, connect 2 0 1 0; 17 | #X obj 187 128 list prepend obj 10 30; 18 | #X text 330 128 create object; 19 | #X text 429 67 delete existing object; 20 | #X msg 204 89 vis 1 \, editmode 1 \, mouse 0 25 0 0 \, mouseup 1000 21 | 200 0 \, cut \, editmode 0 \, vis 0; 22 | #X text 230 31 with one inlet and one outlet; 23 | #X text 230 17 create dynamically allocated object per message; 24 | #X connect 1 0 4 0; 25 | #X connect 2 0 8 0; 26 | #X connect 3 0 1 0; 27 | #X connect 6 0 5 0; 28 | #X connect 7 0 6 0; 29 | #X connect 8 0 7 0; 30 | #X connect 8 1 10 0; 31 | #X connect 8 2 11 0; 32 | #X connect 8 3 14 0; 33 | #X connect 10 0 6 0; 34 | #X connect 11 0 6 0; 35 | #X connect 14 0 6 0; 36 | -------------------------------------------------------------------------------- /upp.flow.pd: -------------------------------------------------------------------------------- 1 | #N canvas 57 145 563 449 10; 2 | #X obj 31 153 inlet; 3 | #X obj 31 389 outlet; 4 | #X obj 210 389 outlet; 5 | #X text 30 405 pass; 6 | #X text 207 406 release; 7 | #X obj 100 390 switch~; 8 | #X obj 363 153 inlet; 9 | #X obj 31 192 upp.flowctrl; 10 | #X obj 363 232 spigot; 11 | #X text 30 133 event message; 12 | #X obj 210 366 t b b; 13 | #X obj 210 315 upp._release; 14 | #X obj 363 266 upp._check; 15 | #X obj 210 290 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 16 | #X obj 210 229 t a a; 17 | #X text 81 406 busy controls DSP; 18 | #X text 249 367 release voice; 19 | #X obj 15 11 cnv 15 530 100 empty empty empty 20 12 0 14 -233017 -66577 20 | 0; 21 | #X text 436 18 grrrr.org 2016; 22 | #X text 36 19 upp.flow; 23 | #X text 36 37 Manages one voice [\$1]. If the voice is vacant \, it 24 | receives an incoming event. If it is busy \, events are forwarded to 25 | the first outlet. DSP is switched on as long as the voice is active. 26 | Modulating messages are checked against the event tag and forwarded 27 | iff matching.; 28 | #X text 362 133 modulating message; 29 | #X connect 0 0 7 0; 30 | #X connect 6 0 8 0; 31 | #X connect 7 0 1 0; 32 | #X connect 7 1 14 0; 33 | #X connect 7 2 8 1; 34 | #X connect 7 2 5 0; 35 | #X connect 8 0 12 0; 36 | #X connect 10 0 2 0; 37 | #X connect 10 1 7 1; 38 | #X connect 11 0 10 0; 39 | #X connect 12 0 13 1; 40 | #X connect 13 0 11 0; 41 | #X connect 14 0 13 0; 42 | #X connect 14 1 12 1; 43 | -------------------------------------------------------------------------------- /upp.flowctrl.pd: -------------------------------------------------------------------------------- 1 | #N canvas 65 71 445 326 10; 2 | #X obj 66 33 inlet; 3 | #X obj 68 272 outlet; 4 | #X text 64 292 pass on; 5 | #X obj 231 36 loadbang; 6 | #X msg 190 77 0; 7 | #X obj 50 95 cnv 15 200 130 empty empty empty 20 12 0 14 -233017 -66577 8 | 0; 9 | #X text 164 168 if busy; 10 | #X text 62 169 if vacant; 11 | #X obj 190 107 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 12 | 1; 13 | #X text 207 113 busy; 14 | #X obj 189 273 outlet; 15 | #X obj 190 36 inlet; 16 | #X msg 263 151 1; 17 | #X obj 189 246 t a b; 18 | #X text 262 134 set busy; 19 | #X text 188 293 to worker; 20 | #X text 65 16 message in; 21 | #X obj 117 149 upp.dilemma; 22 | #X obj 190 127 t a a; 23 | #X obj 306 274 outlet; 24 | #X text 304 292 busy state; 25 | #X text 320 16 grrrr.org 2012-16; 26 | #X obj 190 56 b; 27 | #X obj 306 248 change -1; 28 | #X text 189 18 free voice; 29 | #X connect 0 0 17 0; 30 | #X connect 3 0 4 0; 31 | #X connect 4 0 8 0; 32 | #X connect 8 0 18 0; 33 | #X connect 11 0 22 0; 34 | #X connect 12 0 8 0; 35 | #X connect 13 0 10 0; 36 | #X connect 13 1 12 0; 37 | #X connect 17 0 13 0; 38 | #X connect 17 1 1 0; 39 | #X connect 18 0 23 0; 40 | #X connect 18 1 17 1; 41 | #X connect 22 0 4 0; 42 | #X connect 23 0 19 0; 43 | -------------------------------------------------------------------------------- /upp.fwd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 208 212 10; 2 | #X obj 35 50 t b a b; 3 | #X obj 56 96 list prepend add2; 4 | #X msg 80 73 set \, addsemi; 5 | #X obj 53 122 list trim; 6 | #X obj 35 24 inlet; 7 | #X msg 36 152; 8 | #X connect 0 0 5 0; 9 | #X connect 0 1 1 0; 10 | #X connect 0 2 2 0; 11 | #X connect 1 0 3 0; 12 | #X connect 2 0 5 0; 13 | #X connect 3 0 5 0; 14 | #X connect 4 0 0 0; 15 | -------------------------------------------------------------------------------- /upp.ms2s.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 289 188 10; 2 | #X obj 67 35 inlet; 3 | #X obj 136 63 / 1000; 4 | #X obj 67 90 *; 5 | #X obj 66 118 outlet; 6 | #X text 142 80 samples/ms; 7 | #X obj 136 35 upp.samplerate; 8 | #X connect 0 0 2 0; 9 | #X connect 1 0 2 1; 10 | #X connect 2 0 3 0; 11 | #X connect 5 0 1 0; 12 | -------------------------------------------------------------------------------- /upp.once.pd: -------------------------------------------------------------------------------- 1 | #N canvas 152 367 223 263 10; 2 | #X obj 41 72 inlet; 3 | #X obj 111 71 inlet; 4 | #X text 41 51 message; 5 | #X obj 41 209 outlet; 6 | #X obj 41 144 spigot 0; 7 | #X obj 41 171 t a b; 8 | #X msg 109 144 0; 9 | #X obj 110 93 t b; 10 | #X msg 110 119 1; 11 | #X text 110 51 enable; 12 | #X text 108 14 grrrr.org 2012; 13 | #X connect 0 0 4 0; 14 | #X connect 1 0 7 0; 15 | #X connect 4 0 5 0; 16 | #X connect 5 0 3 0; 17 | #X connect 5 1 6 0; 18 | #X connect 6 0 4 1; 19 | #X connect 7 0 8 0; 20 | #X connect 8 0 4 1; 21 | -------------------------------------------------------------------------------- /upp.onward.pd: -------------------------------------------------------------------------------- 1 | #N canvas 528 100 359 435 10; 2 | #X obj 45 366 outlet; 3 | #X obj 48 257 spigot; 4 | #X obj 63 86 t a a; 5 | #X obj 48 48 inlet; 6 | #X text 47 31 play 0/1; 7 | #X obj 227 47 inlet; 8 | #X text 202 230 delay to next grain; 9 | #X text 224 28 offset; 10 | #X obj 48 136 sel 1; 11 | #X obj 48 223 upp.delay; 12 | #X obj 206 213 f \$1; 13 | #X obj 204 331 f; 14 | #X obj 204 366 outlet; 15 | #X text 194 384 sub-block delay (samples); 16 | #X obj 48 303 t b b b; 17 | #X text 35 385 bang at block boundary; 18 | #X obj 48 200 + 0; 19 | #X msg 48 162 0 0; 20 | #X connect 1 0 14 0; 21 | #X connect 2 0 8 0; 22 | #X connect 2 1 1 1; 23 | #X connect 3 0 2 0; 24 | #X connect 5 0 10 1; 25 | #X connect 8 0 17 0; 26 | #X connect 9 0 1 0; 27 | #X connect 9 1 11 1; 28 | #X connect 9 1 16 1; 29 | #X connect 10 0 16 0; 30 | #X connect 11 0 12 0; 31 | #X connect 14 0 10 0; 32 | #X connect 14 1 0 0; 33 | #X connect 14 2 11 0; 34 | #X connect 16 0 9 0; 35 | #X connect 17 0 16 0; 36 | -------------------------------------------------------------------------------- /upp.pd: -------------------------------------------------------------------------------- 1 | #N canvas 55 58 562 324 10; 2 | #X obj 30 165 inlet; 3 | #X obj 129 164 inlet; 4 | #X text 131 146 modulation message; 5 | #X text 28 147 event message; 6 | #X obj 30 275 outlet; 7 | #X obj 103 275 outlet; 8 | #X text 31 292 pass on; 9 | #X text 99 292 release; 10 | #X obj 168 275 outlet; 11 | #X text 165 293 voices active; 12 | #N canvas 84 388 450 300 \$0-UPP 0; 13 | #X obj 51 40 inlet; 14 | #X obj 182 39 inlet; 15 | #X obj 51 217 outlet; 16 | #X obj 117 217 outlet; 17 | #X obj 182 217 outlet; 18 | #X restore 30 219 pd \$0-UPP; 19 | #X obj 301 163 loadbang; 20 | #X obj 301 187 f \$1; 21 | #X text 334 187 number of voices; 22 | #N canvas 78 120 446 229 gen 0; 23 | #X obj 31 27 inlet; 24 | #X msg 31 118 connect 0 0 5 0 \, connect 1 0 5 1 \, connect 5 0 2 0 25 | \, connect 5 1 3 0 \, connect 5 2 4 0 \, loadbang; 26 | #X obj 31 53 t b a; 27 | #X obj 31 189 upp.fwd; 28 | #X obj 31 162 list prepend pd-\$0-UPP; 29 | #X obj 58 84 list prepend obj 10 100; 30 | #X connect 0 0 2 0; 31 | #X connect 1 0 4 0; 32 | #X connect 2 0 1 0; 33 | #X connect 2 1 5 0; 34 | #X connect 4 0 3 0; 35 | #X connect 5 0 4 0; 36 | #X restore 301 283 pd gen; 37 | #X obj 301 210 moses 50; 38 | #X msg 301 234 symbol upp.xc; 39 | #X msg 390 234 symbol upp.xf; 40 | #X obj 301 260 list append \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 41 | #X text 359 210 <50: upp.xc \, >=50: upp.xf; 42 | #X text 93 220 upp.xc / upp.xf; 43 | #X obj 15 11 cnv 15 530 100 empty empty empty 20 12 0 14 -233017 -66577 44 | 0; 45 | #X text 36 23 Main UPP abstraction; 46 | #X text 36 56 \$2: player abstraction; 47 | #X text 36 71 \$3...\$9: arguments to player abstraction; 48 | #X text 36 41 \$1: max voices - used to select between upp.xc or upp.xf 49 | ; 50 | #X text 427 19 grrrr.org 2016-18; 51 | #X connect 0 0 10 0; 52 | #X connect 1 0 10 1; 53 | #X connect 10 0 4 0; 54 | #X connect 10 1 5 0; 55 | #X connect 10 2 8 0; 56 | #X connect 11 0 12 0; 57 | #X connect 12 0 15 0; 58 | #X connect 15 0 16 0; 59 | #X connect 15 1 17 0; 60 | #X connect 16 0 18 0; 61 | #X connect 17 0 18 0; 62 | #X connect 18 0 14 0; 63 | -------------------------------------------------------------------------------- /upp.ramp~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 109 64 450 300 10; 2 | #X obj 53 157 t b b; 3 | #X obj 52 239 print~; 4 | #X obj 53 131 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 5 | -1; 6 | #X text 48 31 Provides a ramp starting with the bang at block start. 7 | ; 8 | #X text 51 82 As of Pd 0.46 \, both line~ and vline~ provide buggy 9 | ramps.; 10 | #X text 102 241 see Pd console; 11 | #X obj 79 186 upp.ramp~; 12 | #X obj 104 140 nbx 5 14 -1e+37 1e+37 0 1 empty empty start 0 -8 0 10 13 | -257985 -1 -1 0 256; 14 | #X obj 162 140 nbx 5 14 -1e+37 1e+37 0 1 empty empty inc 0 -8 0 10 15 | -257985 -1 -1 1 256; 16 | #X text 49 46 By default \, values are increasing by 1 with each sample. 17 | ; 18 | #X connect 0 0 1 0; 19 | #X connect 0 1 6 0; 20 | #X connect 2 0 0 0; 21 | #X connect 6 0 1 0; 22 | #X connect 7 0 6 1; 23 | #X connect 8 0 6 2; 24 | -------------------------------------------------------------------------------- /upp.ramp~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 173 94 228 338 10; 2 | #X obj 38 82 inlet; 3 | #X obj 38 304 outlet~; 4 | #X text 34 16 endless ramp up; 5 | #X text 37 62 reset; 6 | #X obj 38 268 rpole~ 1; 7 | #X obj 103 81 inlet; 8 | #X msg 38 236 set \$1 \, \$2; 9 | #X obj 38 104 t b b; 10 | #X obj 38 210 pack 0 0; 11 | #X obj 83 145 f 1; 12 | #X obj 146 81 inlet; 13 | #X text 103 63 start; 14 | #X text 146 63 inc; 15 | #X obj 38 185 - 1; 16 | #X obj 38 144 f 0; 17 | #X connect 0 0 7 0; 18 | #X connect 4 0 1 0; 19 | #X connect 5 0 14 1; 20 | #X connect 6 0 4 0; 21 | #X connect 7 0 14 0; 22 | #X connect 7 1 9 0; 23 | #X connect 8 0 6 0; 24 | #X connect 9 0 8 1; 25 | #X connect 9 0 13 1; 26 | #X connect 10 0 9 1; 27 | #X connect 13 0 8 0; 28 | #X connect 14 0 13 0; 29 | -------------------------------------------------------------------------------- /upp.s2ms.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 23 246 217 10; 2 | #X obj 42 25 inlet; 3 | #X obj 42 176 outlet; 4 | #X obj 42 48 t a b; 5 | #X obj 69 71 samplerate~; 6 | #X obj 42 108 /; 7 | #X obj 42 151 * 1000; 8 | #X connect 0 0 2 0; 9 | #X connect 2 0 4 0; 10 | #X connect 2 1 3 0; 11 | #X connect 3 0 4 1; 12 | #X connect 4 0 5 0; 13 | #X connect 5 0 1 0; 14 | -------------------------------------------------------------------------------- /upp.samplerate.pd: -------------------------------------------------------------------------------- 1 | #N canvas 210 407 214 218 10; 2 | #X obj 39 114 samplerate~; 3 | #X obj 39 36 r pd; 4 | #X obj 39 63 route dsp audio-dialog; 5 | #X obj 78 37 loadbang; 6 | #X obj 39 140 change; 7 | #X obj 39 168 outlet; 8 | #X obj 39 88 t b; 9 | #X obj 148 38 inlet; 10 | #X connect 0 0 4 0; 11 | #X connect 1 0 2 0; 12 | #X connect 2 0 6 0; 13 | #X connect 2 1 6 0; 14 | #X connect 3 0 6 0; 15 | #X connect 4 0 5 0; 16 | #X connect 6 0 0 0; 17 | #X connect 7 0 6 0; 18 | -------------------------------------------------------------------------------- /upp.schedule-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 278 208 746 299 10; 2 | #X obj 47 114 t a b; 3 | #X obj 47 191 t a b; 4 | #X obj 47 249 print; 5 | #X obj 195 225 timer; 6 | #X msg 47 62 0; 7 | #X floatatom 196 250 8 0 0 0 - - -; 8 | #X msg 82 62 1000; 9 | #X msg 126 61 44100; 10 | #X text 175 62 time is in samples; 11 | #X text 50 232 remaining samples; 12 | #X text 167 138 2nd arg/inlet... position of time in list (default 13 | 0); 14 | #X text 167 155 3rd arg/inlet... block size (default 64); 15 | #X text 167 122 1st inlet: list/float; 16 | #X obj 541 191 print; 17 | #X msg 541 95 list a b 1000; 18 | #X msg 551 117 list a b 64; 19 | #X obj 47 150 upp.schedule; 20 | #X text 46 26 Schedule event to the latest inter-DSP-block gap before 21 | the given time; 22 | #X obj 541 152 upp.schedule 2; 23 | #X connect 0 0 16 0; 24 | #X connect 0 1 3 0; 25 | #X connect 1 0 2 0; 26 | #X connect 1 1 3 1; 27 | #X connect 3 0 5 0; 28 | #X connect 4 0 0 0; 29 | #X connect 6 0 0 0; 30 | #X connect 7 0 0 0; 31 | #X connect 14 0 18 0; 32 | #X connect 15 0 18 0; 33 | #X connect 16 0 1 0; 34 | #X connect 18 0 13 0; 35 | -------------------------------------------------------------------------------- /upp.schedule.pd: -------------------------------------------------------------------------------- 1 | #N canvas 534 270 370 323 10; 2 | #X obj 45 53 inlet; 3 | #X obj 45 253 outlet; 4 | #X obj 216 48 inlet; 5 | #X text 213 31 blocksize; 6 | #N canvas 35 64 429 408 enqueue 0; 7 | #X obj 38 30 inlet; 8 | #X obj 38 353 outlet; 9 | #X obj 38 263 upp.dilemma; 10 | #X msg 57 165 0; 11 | #X obj 38 295 t b a; 12 | #X obj 64 323 text set \$0-msgqueue; 13 | #X text 132 228 TODO: we should replace previous entries; 14 | #X text 125 345 append message; 15 | #X obj 134 166 >; 16 | #N canvas 0 22 231 249 get-last 0; 17 | #X obj 37 100 sel 0; 18 | #X obj 37 57 text size \$0-msgqueue; 19 | #X obj 59 153 text get \$0-msgqueue; 20 | #X obj 59 132 - 1; 21 | #X obj 37 26 inlet; 22 | #X obj 38 183 outlet; 23 | #X obj 37 78 t a a; 24 | #X obj 137 184 outlet; 25 | #X text 140 204 size; 26 | #X text 38 215 bang for none; 27 | #X text 37 202 last element, f 14; 28 | #X connect 0 0 5 0; 29 | #X connect 0 1 3 0; 30 | #X connect 1 0 6 0; 31 | #X connect 2 0 5 0; 32 | #X connect 3 0 2 0; 33 | #X connect 4 0 1 0; 34 | #X connect 6 0 0 0; 35 | #X connect 6 1 7 0; 36 | #X restore 63 83 pd get-last; 37 | #X obj 38 56 t a b a; 38 | #X obj 57 107 route bang; 39 | #X text 166 245 instead of warning; 40 | #X obj 175 32 inlet; 41 | #X text 177 13 index; 42 | #N canvas 0 23 211 199 nth 0; 43 | #X obj 38 32 inlet; 44 | #X obj 38 140 outlet; 45 | #X obj 95 31 inlet; 46 | #X obj 38 114 list split 1; 47 | #X obj 95 54 + 1; 48 | #X obj 38 80 list split; 49 | #X connect 0 0 5 0; 50 | #X connect 2 0 4 0; 51 | #X connect 3 0 1 0; 52 | #X connect 4 0 5 1; 53 | #X connect 5 1 3 0; 54 | #X restore 181 141 pd nth; 55 | #N canvas 496 432 211 199 nth 0; 56 | #X obj 38 32 inlet; 57 | #X obj 38 140 outlet; 58 | #X obj 95 31 inlet; 59 | #X obj 38 113 list split 1; 60 | #X obj 95 54 + 1; 61 | #X obj 38 81 list split; 62 | #X connect 0 0 5 0; 63 | #X connect 2 0 4 0; 64 | #X connect 3 0 1 0; 65 | #X connect 4 0 5 1; 66 | #X connect 5 1 3 0; 67 | #X restore 134 141 pd nth; 68 | #X obj 101 288 print upp.schedule(\$0) - Times are not increasing: 69 | ; 70 | #X connect 0 0 10 0; 71 | #X connect 2 0 4 0; 72 | #X connect 2 1 17 0; 73 | #X connect 3 0 2 1; 74 | #X connect 4 0 1 0; 75 | #X connect 4 1 5 0; 76 | #X connect 8 0 2 1; 77 | #X connect 9 0 11 0; 78 | #X connect 9 1 5 1; 79 | #X connect 10 0 2 0; 80 | #X connect 10 1 9 0; 81 | #X connect 10 2 15 0; 82 | #X connect 11 0 3 0; 83 | #X connect 11 1 16 0; 84 | #X connect 13 0 15 1; 85 | #X connect 13 0 16 1; 86 | #X connect 15 0 8 1; 87 | #X connect 16 0 8 0; 88 | #X restore 45 143 pd enqueue; 89 | #N canvas 69 80 338 451 dequeue 0; 90 | #X obj 31 33 inlet; 91 | #X obj 121 411 outlet; 92 | #X obj 222 34 inlet; 93 | #X text 220 16 blocksize; 94 | #X obj 31 133 route bang; 95 | #N canvas 0 22 231 249 get-first 0; 96 | #X obj 37 100 sel 0; 97 | #X obj 37 56 text size \$0-msgqueue; 98 | #X obj 59 153 text get \$0-msgqueue; 99 | #X obj 37 26 inlet; 100 | #X obj 37 183 outlet; 101 | #X obj 37 78 t a a; 102 | #X obj 137 184 outlet; 103 | #X text 140 204 size; 104 | #X text 38 215 bang for none; 105 | #X text 37 202 last element, f 14; 106 | #X msg 59 130 0; 107 | #X connect 0 0 4 0; 108 | #X connect 0 1 10 0; 109 | #X connect 1 0 5 0; 110 | #X connect 2 0 4 0; 111 | #X connect 3 0 1 0; 112 | #X connect 5 0 0 0; 113 | #X connect 5 1 6 0; 114 | #X connect 10 0 2 0; 115 | #X restore 31 109 pd get-first; 116 | #X obj 161 206 <; 117 | #N canvas 0 23 249 287 offset 0; 118 | #X obj 103 175 +; 119 | #X msg 43 124 0; 120 | #X obj 73 175 f 0; 121 | #X obj 73 124 upp.delay; 122 | #X obj 170 43 inlet; 123 | #X obj 43 42 inlet; 124 | #X text 170 25 blksize; 125 | #X text 42 21 reset; 126 | #X obj 73 237 outlet; 127 | #X obj 73 205 t a b; 128 | #X obj 43 71 t b b; 129 | #X msg 73 94 stop; 130 | #X obj 108 42 inlet; 131 | #X text 103 24 stop; 132 | #X connect 0 0 2 1; 133 | #X connect 1 0 2 0; 134 | #X connect 2 0 0 0; 135 | #X connect 2 0 9 0; 136 | #X connect 3 0 2 0; 137 | #X connect 4 0 0 1; 138 | #X connect 4 0 3 1; 139 | #X connect 5 0 10 0; 140 | #X connect 9 0 8 0; 141 | #X connect 9 1 3 0; 142 | #X connect 10 0 1 0; 143 | #X connect 10 1 11 0; 144 | #X connect 11 0 3 0; 145 | #X connect 12 0 11 0; 146 | #X restore 141 109 pd offset; 147 | #X obj 133 179 -; 148 | #X obj 88 236 spigot; 149 | #X obj 115 315 text delete \$0-msgqueue; 150 | #X msg 115 293 0; 151 | #X obj 31 63 t b b; 152 | #X obj 141 138 t b a; 153 | #X obj 89 359 list append; 154 | #N canvas 0 22 240 194 nth 0; 155 | #X obj 38 32 inlet; 156 | #X obj 38 140 outlet; 157 | #X obj 95 31 inlet; 158 | #X obj 66 105 list split 1; 159 | #X obj 38 80 list split; 160 | #X obj 100 141 outlet; 161 | #X obj 163 142 outlet; 162 | #X connect 0 0 4 0; 163 | #X connect 2 0 4 1; 164 | #X connect 3 0 5 0; 165 | #X connect 3 1 6 0; 166 | #X connect 4 0 1 0; 167 | #X connect 4 1 3 0; 168 | #X restore 88 179 pd nth; 169 | #X obj 123 34 inlet; 170 | #X text 120 17 index; 171 | #X obj 121 385 list append; 172 | #X obj 88 260 t a b; 173 | #X text 164 295 delete first queue entry; 174 | #X connect 0 0 12 0; 175 | #X connect 2 0 6 1; 176 | #X connect 2 0 7 2; 177 | #X connect 4 0 7 1; 178 | #X connect 4 1 15 0; 179 | #X connect 5 0 4 0; 180 | #X connect 6 0 9 1; 181 | #X connect 7 0 13 0; 182 | #X connect 8 0 6 0; 183 | #X connect 8 0 14 1; 184 | #X connect 9 0 19 0; 185 | #X connect 11 0 10 0; 186 | #X connect 12 0 5 0; 187 | #X connect 12 1 7 0; 188 | #X connect 13 0 5 0; 189 | #X connect 13 1 8 1; 190 | #X connect 14 0 18 0; 191 | #X connect 15 0 9 0; 192 | #X connect 15 1 8 0; 193 | #X connect 15 2 18 1; 194 | #X connect 16 0 15 1; 195 | #X connect 18 0 1 0; 196 | #X connect 19 0 14 0; 197 | #X connect 19 1 11 0; 198 | #X restore 45 214 pd dequeue; 199 | #X obj 177 188 text define \$0-msgqueue; 200 | #X obj 180 252 text delete \$0-msgqueue; 201 | #X msg 180 228 -1; 202 | #X text 208 229 clear all; 203 | #X obj 107 52 inlet; 204 | #X obj 107 88 f \$1; 205 | #X obj 153 49 loadbang; 206 | #X obj 217 98 select 0; 207 | #X msg 217 120 64; 208 | #X obj 217 77 f \$2; 209 | #X obj 216 146 t a; 210 | #X text 108 31 index; 211 | #X text 43 32 message; 212 | #X connect 0 0 4 0; 213 | #X connect 2 0 15 0; 214 | #X connect 4 0 5 0; 215 | #X connect 5 0 1 0; 216 | #X connect 8 0 7 0; 217 | #X connect 10 0 11 0; 218 | #X connect 11 0 4 1; 219 | #X connect 11 0 5 1; 220 | #X connect 12 0 11 0; 221 | #X connect 12 0 15 0; 222 | #X connect 13 0 14 0; 223 | #X connect 13 1 16 0; 224 | #X connect 14 0 16 0; 225 | #X connect 15 0 13 0; 226 | #X connect 16 0 5 2; 227 | -------------------------------------------------------------------------------- /upp.tabread2~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 396 401 439 263 10; 2 | #X obj 47 210 print~; 3 | #X obj 47 42 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 4 | -1; 5 | #X obj 74 135 upp.ramp~; 6 | #X obj 74 163 upp.tabread2~ \$0-table; 7 | #X obj 273 153 array set \$0-table; 8 | #X msg 272 123 1 2 0; 9 | #X obj 273 49 table \$0-table 3; 10 | #X obj 272 98 loadbang; 11 | #X obj 47 77 t b b b; 12 | #X msg 125 111 0.1; 13 | #X connect 1 0 8 0; 14 | #X connect 2 0 3 0; 15 | #X connect 3 0 0 0; 16 | #X connect 5 0 4 0; 17 | #X connect 7 0 5 0; 18 | #X connect 8 0 0 0; 19 | #X connect 8 1 2 0; 20 | #X connect 8 2 9 0; 21 | #X connect 9 0 2 2; 22 | -------------------------------------------------------------------------------- /upp.tabread2~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 53 85 434 432 10; 2 | #X obj 252 282 +~ 1; 3 | #X obj 43 89 inlet~; 4 | #X obj 159 379 outlet~; 5 | #X text 42 19 linear interpolation for tabread~; 6 | #X obj 204 90 inlet; 7 | #X obj 228 170 route symbol; 8 | #X obj 253 90 loadbang; 9 | #X obj 77 303 tabread~; 10 | #X obj 252 307 tabread~; 11 | #X msg 229 194 set \$1; 12 | #N canvas 637 164 293 240 symbol_arg_\$1_not_0 0; 13 | #X obj 33 74 symbol \$1; 14 | #X obj 62 122 upp.cmpatom; 15 | #X obj 102 71 symbol 0; 16 | #X obj 34 51 t b b; 17 | #X obj 34 96 t a a; 18 | #X obj 34 175 spigot; 19 | #X obj 62 144 == 0; 20 | #X obj 35 21 inlet; 21 | #X obj 35 204 outlet; 22 | #X connect 0 0 4 0; 23 | #X connect 1 0 6 0; 24 | #X connect 2 0 1 1; 25 | #X connect 3 0 0 0; 26 | #X connect 3 1 2 0; 27 | #X connect 4 0 5 0; 28 | #X connect 4 1 1 0; 29 | #X connect 5 0 8 0; 30 | #X connect 6 0 5 1; 31 | #X connect 7 0 3 0; 32 | #X restore 253 120 pd symbol_arg_\$1_not_0; 33 | #X obj 43 114 max~ 0; 34 | #X obj 170 181 wrap~; 35 | #X obj 143 218 -~; 36 | #X text 36 180 fractional pos; 37 | #X text 36 218 integer pos; 38 | #X text 215 375 s1+f*(s2-s1); 39 | #X text 44 39 Thomas Grill \, 2016 - grrrr.org; 40 | #X text 200 72 table name; 41 | #X text 40 71 position signal; 42 | #X obj 159 350 upp.xfade~; 43 | #X connect 0 0 8 0; 44 | #X connect 1 0 11 0; 45 | #X connect 4 0 5 0; 46 | #X connect 5 0 9 0; 47 | #X connect 6 0 10 0; 48 | #X connect 7 0 20 0; 49 | #X connect 8 0 20 1; 50 | #X connect 9 0 7 0; 51 | #X connect 9 0 8 0; 52 | #X connect 10 0 5 0; 53 | #X connect 11 0 12 0; 54 | #X connect 11 0 13 0; 55 | #X connect 12 0 13 1; 56 | #X connect 12 0 20 2; 57 | #X connect 13 0 0 0; 58 | #X connect 13 0 7 0; 59 | #X connect 20 0 2 0; 60 | -------------------------------------------------------------------------------- /upp.tabread4~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 301 52 429 270 10; 2 | #X obj 47 210 print~; 3 | #X obj 47 42 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 4 | -1; 5 | #X obj 74 138 upp.ramp~; 6 | #X obj 273 153 array set \$0-table; 7 | #X obj 272 98 loadbang; 8 | #X obj 74 163 upp.tabread4~ \$0-table; 9 | #X msg 272 123 1 2 0 1 3 0; 10 | #X obj 273 49 table \$0-table 6; 11 | #X obj 47 77 t b b b; 12 | #X msg 125 114 0.1; 13 | #X connect 1 0 8 0; 14 | #X connect 2 0 5 0; 15 | #X connect 4 0 6 0; 16 | #X connect 5 0 0 0; 17 | #X connect 6 0 3 0; 18 | #X connect 8 0 0 0; 19 | #X connect 8 1 2 0; 20 | #X connect 8 2 9 0; 21 | #X connect 9 0 2 2; 22 | -------------------------------------------------------------------------------- /upp.tabread4~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 673 103 490 470 10; 2 | #X obj 63 108 inlet~; 3 | #X obj 248 105 inlet; 4 | #X obj 128 423 outlet~; 5 | #X obj 302 106 loadbang; 6 | #X msg 81 304 set \$1; 7 | #X obj 64 334 tabread4~; 8 | #X obj 219 337 upp.tabread2~; 9 | #X obj 247 250 array size; 10 | #N canvas 162 271 260 227 first_or_last 0; 11 | #X obj 37 44 inlet~; 12 | #X obj 37 148 outlet~; 13 | #X obj 190 46 inlet; 14 | #X text 189 20 size; 15 | #X text 26 172 first or last; 16 | #X obj 190 87 - 2; 17 | #X obj 37 118 expr~ $v1 < 1 || $v1 > $f2; 18 | #X connect 0 0 6 0; 19 | #X connect 2 0 5 0; 20 | #X connect 5 0 6 1; 21 | #X connect 6 0 1 0; 22 | #X restore 154 284 pd first_or_last; 23 | #X obj 248 162 route symbol; 24 | #X text 62 25 Workaround for tabread4~; 25 | #X text 62 42 Delivers linearly interpolated first and last samples 26 | ; 27 | #N canvas 637 164 293 240 symbol_arg_\$1_not_0 0; 28 | #X obj 35 73 symbol \$1; 29 | #X obj 62 122 upp.cmpatom; 30 | #X obj 106 73 symbol 0; 31 | #X obj 35 47 t b b; 32 | #X obj 34 96 t a a; 33 | #X obj 34 175 spigot; 34 | #X obj 62 144 == 0; 35 | #X obj 35 21 inlet; 36 | #X obj 35 204 outlet; 37 | #X connect 0 0 4 0; 38 | #X connect 1 0 6 0; 39 | #X connect 2 0 1 1; 40 | #X connect 3 0 0 0; 41 | #X connect 3 1 2 0; 42 | #X connect 4 0 5 0; 43 | #X connect 4 1 1 0; 44 | #X connect 5 0 8 0; 45 | #X connect 6 0 5 1; 46 | #X connect 7 0 3 0; 47 | #X restore 302 128 pd symbol_arg_\$1_not_0; 48 | #X obj 247 186 t b a; 49 | #X text 217 359 only for first and last sample; 50 | #X text 63 89 position signal; 51 | #X text 251 87 table name; 52 | #X text 62 61 Thomas Grill \, 2016 - grrrr.org; 53 | #X obj 128 399 upp.xfade~; 54 | #X connect 0 0 5 0; 55 | #X connect 0 0 8 0; 56 | #X connect 0 0 6 0; 57 | #X connect 1 0 9 0; 58 | #X connect 3 0 12 0; 59 | #X connect 4 0 5 0; 60 | #X connect 5 0 18 0; 61 | #X connect 6 0 18 1; 62 | #X connect 7 0 8 1; 63 | #X connect 8 0 18 2; 64 | #X connect 9 0 13 0; 65 | #X connect 12 0 9 0; 66 | #X connect 13 0 7 0; 67 | #X connect 13 1 7 1; 68 | #X connect 13 1 6 1; 69 | #X connect 13 1 4 0; 70 | #X connect 18 0 2 0; 71 | -------------------------------------------------------------------------------- /upp.vline~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 76 71 547 459 10; 2 | #N canvas 0 22 450 300 snap 0; 3 | #X obj 20 14 inlet~; 4 | #X obj 20 165 outlet; 5 | #X obj 21 98 snapshot~; 6 | #X obj 98 69 metro 10; 7 | #X obj 98 14 loadbang; 8 | #X msg 98 42 1; 9 | #X obj 101 103 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 | 10 -262144 -1 -1 0 256; 11 | #X connect 0 0 2 0; 12 | #X connect 2 0 1 0; 13 | #X connect 2 0 6 0; 14 | #X connect 3 0 2 0; 15 | #X connect 4 0 5 0; 16 | #X connect 5 0 3 0; 17 | #X coords 0 -1 1 1 100 20 1 100 100; 18 | #X restore 28 171 pd snap; 19 | #X msg 28 121 \$1 44100 0; 20 | #X obj 31 199 hsl 128 15 0 2 0 0 empty empty empty -2 -8 0 10 -261682 21 | -1 -1 0 1; 22 | #N canvas 0 22 239 213 print_dsp_blocks 0; 23 | #X obj 143 168 print~; 24 | #X obj 36 105 spigot; 25 | #X obj 105 105 - 1; 26 | #X obj 36 127 t a b; 27 | #X obj 36 80 t a a; 28 | #X obj 39 20 bang~; 29 | #X obj 37 59 f; 30 | #X obj 94 20 inlet; 31 | #X obj 145 20 inlet~; 32 | #X obj 94 42 t f b; 33 | #X connect 1 0 3 0; 34 | #X connect 2 0 6 1; 35 | #X connect 3 0 2 0; 36 | #X connect 3 1 0 0; 37 | #X connect 4 0 1 0; 38 | #X connect 4 1 1 1; 39 | #X connect 5 0 6 0; 40 | #X connect 6 0 4 0; 41 | #X connect 7 0 9 0; 42 | #X connect 8 0 0 0; 43 | #X connect 9 0 6 1; 44 | #X restore 221 303 pd print_dsp_blocks; 45 | #X obj 278 122 print ============; 46 | #X msg 221 277 3; 47 | #X obj 98 147 print OVF; 48 | #X obj 343 277 print OVF; 49 | #X text 26 56 grrrr.org 2016; 50 | #X text 26 36 Time units are samples; 51 | #X text 35 376 - block size (default=64); 52 | #X text 34 330 upp.vline~ can be given two arguments:; 53 | #X text 35 346 - voices (default=2): number of ramp parts within one 54 | DSP block. Overflow will be signaled at right outlet if exceeded; 55 | #X obj 221 99 hradio 15 1 0 4 empty empty examples 0 -8 0 10 -260097 56 | -1 -1 3; 57 | #X obj 221 122 t b a b; 58 | #X obj 28 99 hradio 15 1 0 3 empty empty target_value 0 -8 0 10 -260097 59 | -1 -1 0; 60 | #X msg 257 199 1 10 10 \, 0.5 40 50 \, 0 20 120; 61 | #X msg 274 221 0 \, 1 0 1 \, 0 0 2 \, 1 0 3 \, 0 0 4; 62 | #X msg 240 177 1 0 20 \, 0 0 40 \, 1 2 60 \, 0 2 80; 63 | #X text 26 17 Replacement for vline~ with line~-like slopes; 64 | #X text 36 400 The block size can also be set through the right inlet 65 | ; 66 | #X obj 28 146 upp.vline~; 67 | #X obj 257 277 upp.vline~ 8; 68 | #X obj 240 147 sel 0 1 2 3; 69 | #X obj 368 243 upp.delay 64; 70 | #X msg 287 243 0 \, 1 100 10; 71 | #X msg 449 243 0 100 46; 72 | #X connect 0 0 2 0; 73 | #X connect 1 0 21 0; 74 | #X connect 5 0 3 0; 75 | #X connect 13 0 14 0; 76 | #X connect 14 0 5 0; 77 | #X connect 14 1 23 0; 78 | #X connect 14 2 4 0; 79 | #X connect 15 0 1 0; 80 | #X connect 16 0 22 0; 81 | #X connect 17 0 22 0; 82 | #X connect 18 0 22 0; 83 | #X connect 21 0 0 0; 84 | #X connect 21 1 6 0; 85 | #X connect 22 0 3 1; 86 | #X connect 22 1 7 0; 87 | #X connect 23 0 18 0; 88 | #X connect 23 1 16 0; 89 | #X connect 23 2 17 0; 90 | #X connect 23 3 25 0; 91 | #X connect 23 3 24 0; 92 | #X connect 24 0 26 0; 93 | #X connect 25 0 22 0; 94 | #X connect 26 0 22 0; 95 | -------------------------------------------------------------------------------- /upp.vline~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 75 41 558 533 10; 2 | #X obj 48 109 inlet; 3 | #X obj 48 480 outlet~; 4 | #X text 104 194 dur; 5 | #X text 137 193 del; 6 | #N canvas 366 346 284 335 normalize 0; 7 | #X obj 29 92 t a b; 8 | #X obj 29 122 list split 1; 9 | #X obj 168 122 list split 1; 10 | #X msg 130 92 0; 11 | #X obj 119 199 f; 12 | #X obj 178 199 f; 13 | #X obj 29 61 inlet; 14 | #X obj 30 280 outlet; 15 | #X obj 63 143 route bang; 16 | #X obj 63 163 t b b; 17 | #X obj 30 254 pack 0 0 0; 18 | #X text 27 8 Convert input to triplets; 19 | #X text 27 26 2nd and 3rd element are 0 by default; 20 | #X connect 0 0 1 0; 21 | #X connect 0 1 3 0; 22 | #X connect 1 0 10 0; 23 | #X connect 1 1 8 0; 24 | #X connect 2 0 4 0; 25 | #X connect 2 1 5 0; 26 | #X connect 3 0 4 1; 27 | #X connect 3 0 5 1; 28 | #X connect 4 0 10 1; 29 | #X connect 5 0 10 2; 30 | #X connect 6 0 0 0; 31 | #X connect 8 0 9 0; 32 | #X connect 8 1 2 0; 33 | #X connect 9 0 4 0; 34 | #X connect 9 1 5 0; 35 | #X connect 10 0 7 0; 36 | #X restore 48 146 pd normalize input; 37 | #X text 50 194 target; 38 | #X obj 48 327 pack 0 0 0 0 0; 39 | #X obj 48 452 catch~ \$0-out; 40 | #X obj 366 426 nbx 5 14 -1e+37 1e+37 0 0 empty empty voices 0 -8 0 41 | 10 -262144 -1 -1 0 256; 42 | #X obj 278 105 loadbang; 43 | #X obj 278 176 select 0; 44 | #X msg 278 198 64; 45 | #N canvas 533 264 227 122 const 0; 46 | #X obj 95 89 throw~ \$0-out; 47 | #X obj 28 17 inlet; 48 | #X obj 28 89 switch~; 49 | #X obj 95 16 inlet; 50 | #X obj 95 45 t b a; 51 | #X obj 28 45 &&; 52 | #X text 37 64 only on for values != 0; 53 | #X connect 1 0 5 0; 54 | #X connect 3 0 4 0; 55 | #X connect 4 0 5 0; 56 | #X connect 4 1 5 1; 57 | #X connect 4 1 0 0; 58 | #X connect 5 0 2 0; 59 | #X restore 319 483 pd const; 60 | #X obj 352 104 inlet; 61 | #X obj 319 425 == 0; 62 | #X text 281 135 blocksize; 63 | #X obj 416 152 f \$1; 64 | #X obj 416 173 select 0; 65 | #X obj 278 155 f \$2; 66 | #X text 415 135 voices; 67 | #X obj 416 222 s \$0-voices; 68 | #N canvas 43 85 418 364 voices 0; 69 | #X obj 39 46 r \$0-voices; 70 | #X obj 58 207 f \$0; 71 | #X obj 58 143 t b a; 72 | #N canvas 44 529 450 300 \$0-dyn 0; 73 | #X obj 20 19 inlet; 74 | #X obj 84 19 outlet; 75 | #X restore 248 73 pd \$0-dyn; 76 | #X obj 58 95 until; 77 | #X obj 58 120 f; 78 | #X obj 86 120 + 1; 79 | #X msg 100 96 0; 80 | #X msg 58 252 obj 20 \$4 upp._vlinesub \$1 \, connect \$2 0 \$3 0; 81 | #X obj 58 230 pack 0 0 0 0; 82 | #X obj 147 186 * 20; 83 | #X obj 146 207 + 50; 84 | #X obj 71 166 moses 1; 85 | #X msg 39 298 connect \$1 0 1 0 \, loadbang; 86 | #X obj 115 207 + 2; 87 | #X obj 96 185 + 1; 88 | #X obj 58 326 s pd-\$0-dyn; 89 | #X obj 39 275 + 1; 90 | #X obj 248 46 inlet; 91 | #X obj 248 99 outlet; 92 | #X text 37 15 Dynamically create voices for ramp parts in [pd \$0-dyn] 93 | ; 94 | #X obj 39 69 t a a b b; 95 | #N canvas 154 492 537 236 clear 0; 96 | #X obj 39 34 inlet; 97 | #X obj 38 125 outlet; 98 | #X msg 38 67 vis 1 \, editmode 1 \, mouse 5 50 0 0 0 \, mouseup 100000 99 | 100000 0 \, cut \, editmode 0 \, vis 0; 100 | #X connect 0 0 2 0; 101 | #X connect 2 0 1 0; 102 | #X restore 219 181 pd clear; 103 | #X obj 220 155 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 104 | -1 -1; 105 | #X connect 0 0 21 0; 106 | #X connect 1 0 9 0; 107 | #X connect 2 0 1 0; 108 | #X connect 2 1 10 0; 109 | #X connect 2 1 12 0; 110 | #X connect 2 1 14 0; 111 | #X connect 3 0 19 0; 112 | #X connect 4 0 5 0; 113 | #X connect 5 0 6 0; 114 | #X connect 5 0 2 0; 115 | #X connect 6 0 5 1; 116 | #X connect 7 0 5 1; 117 | #X connect 8 0 16 0; 118 | #X connect 9 0 8 0; 119 | #X connect 10 0 11 0; 120 | #X connect 11 0 9 3; 121 | #X connect 12 0 9 1; 122 | #X connect 12 1 15 0; 123 | #X connect 13 0 16 0; 124 | #X connect 14 0 9 2; 125 | #X connect 15 0 9 1; 126 | #X connect 17 0 13 0; 127 | #X connect 18 0 3 0; 128 | #X connect 21 0 17 0; 129 | #X connect 21 1 4 0; 130 | #X connect 21 2 7 0; 131 | #X connect 22 0 16 0; 132 | #X connect 23 0 22 0; 133 | #X restore 48 386 pd voices; 134 | #X text 316 374 count active voices; 135 | #X text 47 434 voice sum; 136 | #X text 318 447 no voice active:; 137 | #X text 319 463 output constant target value; 138 | #X text 49 356 dynamically generated voices; 139 | #X obj 278 225 t a; 140 | #X obj 48 213 unpack 0 0 0; 141 | #X obj 48 171 upp.schedule 2, f 26; 142 | #X obj 319 391 r \$0-busy; 143 | #X msg 416 297 0; 144 | #X obj 416 318 s \$0-busy; 145 | #N canvas 89 52 536 458 calculate 0; 146 | #X obj 41 73 inlet; 147 | #X obj 104 73 inlet; 148 | #X obj 171 73 inlet; 149 | #X obj 41 284 upp.dilemma; 150 | #X obj 104 261 != 0; 151 | #X text 13 305 immediate; 152 | #X obj 104 237 t a a; 153 | #X text 87 304 dur!=0; 154 | #X obj 41 412 outlet; 155 | #X obj 427 68 inlet; 156 | #X text 408 50 blocksize; 157 | #N canvas 0 23 310 307 offset 0; 158 | #X obj 219 76 inlet; 159 | #X obj 35 74 inlet; 160 | #X text 219 58 blksize; 161 | #X obj 35 256 outlet; 162 | #X obj 157 75 inlet; 163 | #X text 156 56 max; 164 | #X text 30 18 Running offset by DSP blocks; 165 | #X obj 88 75 inlet; 166 | #X text 86 54 reset; 167 | #X text 33 53 now; 168 | #X obj 35 192 *; 169 | #X obj 35 217 t a a; 170 | #X obj 136 212 >; 171 | #X obj 136 234 sel 1; 172 | #X msg 137 257 stop; 173 | #X obj 35 143 upp.dspintv; 174 | #X connect 0 0 10 1; 175 | #X connect 1 0 15 0; 176 | #X connect 4 0 12 1; 177 | #X connect 7 0 15 1; 178 | #X connect 10 0 11 0; 179 | #X connect 11 0 3 0; 180 | #X connect 11 1 12 0; 181 | #X connect 12 0 13 0; 182 | #X connect 13 0 14 0; 183 | #X connect 14 0 15 0; 184 | #X connect 15 0 10 0; 185 | #X restore 376 258 pd offset; 186 | #X text 364 277 start with 0; 187 | #X text 363 291 increase for next block; 188 | #X text 395 333 offset; 189 | #X obj 104 96 t a b; 190 | #X obj 41 95 t a b; 191 | #X text 41 56 tgt1; 192 | #X text 109 55 dur1; 193 | #X text 172 55 del1; 194 | #X text 166 139 del0; 195 | #X text 41 140 tgt0; 196 | #X text 100 141 dur0; 197 | #X text 88 333 tgt0; 198 | #X text 154 333 cur0; 199 | #X text 213 333 dur0; 200 | #X text 268 333 del0; 201 | #X text 339 333 del1; 202 | #X obj 104 351 expr $f2+($f1-$f2)*max(0 \, min(1 \, ($f6+$f5-$f4)/$f3)) 203 | ; 204 | #X obj 171 95 t a b; 205 | #X obj 401 221 +; 206 | #X text 212 124 storage for previous values; 207 | #X obj 41 121 f 0; 208 | #X obj 104 122 f 0; 209 | #X obj 171 121 f 0; 210 | #X text 372 238 dur+del; 211 | #X text 45 13 Calculate current value as result of the last played 212 | segment and the time passed; 213 | #X obj 333 71 loadbang; 214 | #X obj 41 158 t a b; 215 | #X obj 41 388 t a a b; 216 | #X connect 0 0 16 0; 217 | #X connect 1 0 15 0; 218 | #X connect 2 0 29 0; 219 | #X connect 3 0 39 0; 220 | #X connect 3 1 28 0; 221 | #X connect 4 0 3 1; 222 | #X connect 6 0 4 0; 223 | #X connect 6 1 28 2; 224 | #X connect 9 0 11 3; 225 | #X connect 11 0 28 5; 226 | #X connect 15 0 33 1; 227 | #X connect 15 0 30 0; 228 | #X connect 15 1 33 0; 229 | #X connect 16 0 32 1; 230 | #X connect 16 1 32 0; 231 | #X connect 28 0 39 0; 232 | #X connect 29 0 28 4; 233 | #X connect 29 0 34 1; 234 | #X connect 29 0 30 1; 235 | #X connect 29 1 34 0; 236 | #X connect 30 0 11 2; 237 | #X connect 32 0 38 0; 238 | #X connect 33 0 6 0; 239 | #X connect 34 0 28 3; 240 | #X connect 37 0 11 1; 241 | #X connect 38 0 3 0; 242 | #X connect 38 1 11 0; 243 | #X connect 39 0 8 0; 244 | #X connect 39 1 28 1; 245 | #X connect 39 2 11 1; 246 | #X restore 119 253 pd calculate starting point; 247 | #X obj 48 245 t a a; 248 | #X obj 36 291 sel 0; 249 | #X obj 182 479 outlet; 250 | #X msg 416 195 2; 251 | #X text 151 433 overflow signal; 252 | #X obj 182 454 b; 253 | #X text 46 19 Replacement for vline~ with expected behavior; 254 | #X text 46 58 grrrr.org 2016; 255 | #X text 46 36 Time units are samples; 256 | #X text 415 267 initialize number; 257 | #X text 417 280 of busy voices; 258 | #X text 76 292 has target value changed at all?; 259 | #X text 120 270 current value; 260 | #X text 49 371 for synthesis of ramp parts; 261 | #X text 50 128 target duration delay; 262 | #X connect 0 0 4 0; 263 | #X connect 4 0 29 0; 264 | #X connect 6 0 21 0; 265 | #X connect 7 0 1 0; 266 | #X connect 9 0 18 0; 267 | #X connect 9 0 16 0; 268 | #X connect 9 0 31 0; 269 | #X connect 10 0 11 0; 270 | #X connect 10 1 27 0; 271 | #X connect 11 0 27 0; 272 | #X connect 13 0 27 0; 273 | #X connect 14 0 12 0; 274 | #X connect 16 0 17 0; 275 | #X connect 17 0 37 0; 276 | #X connect 17 1 20 0; 277 | #X connect 18 0 10 0; 278 | #X connect 21 0 39 0; 279 | #X connect 27 0 29 2; 280 | #X connect 27 0 33 3; 281 | #X connect 27 0 6 4; 282 | #X connect 28 0 34 0; 283 | #X connect 28 1 6 1; 284 | #X connect 28 1 33 1; 285 | #X connect 28 2 6 2; 286 | #X connect 28 2 33 2; 287 | #X connect 29 0 28 0; 288 | #X connect 30 0 8 0; 289 | #X connect 30 0 14 0; 290 | #X connect 31 0 32 0; 291 | #X connect 33 0 6 3; 292 | #X connect 33 0 35 1; 293 | #X connect 34 0 35 0; 294 | #X connect 34 1 33 0; 295 | #X connect 34 1 12 1; 296 | #X connect 35 1 6 0; 297 | #X connect 37 0 20 0; 298 | #X connect 39 0 36 0; 299 | -------------------------------------------------------------------------------- /upp.x2.pd: -------------------------------------------------------------------------------- 1 | #N canvas 14 27 813 271 10; 2 | #X obj 69 38 inlet; 3 | #X obj 69 195 outlet; 4 | #X obj 142 195 outlet; 5 | #X text 70 212 pass on; 6 | #X text 138 212 release; 7 | #X obj 168 37 inlet; 8 | #X text 170 19 modulation message; 9 | #X obj 207 195 outlet; 10 | #X text 204 213 voices active; 11 | #X text 67 20 event message; 12 | #X obj 429 35 loadbang; 13 | #X text 428 209 explicit loadbang after everything has been set up 14 | ; 15 | #X obj 429 63 t b b; 16 | #X obj 402 35 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 17 | -1; 18 | #X text 154 128 dynamically created voices; 19 | #X text 454 122 two-level dynamic patch generation; 20 | #X text 655 31 grrrr.org 2012; 21 | #N canvas 335 116 610 470 populate 0; 22 | #X obj 54 33 inlet; 23 | #N canvas 0 22 285 284 rep 0; 24 | #X obj 98 47 inlet; 25 | #X obj 100 219 outlet; 26 | #X obj 101 155 f; 27 | #X msg 157 122 0; 28 | #X obj 98 73 t a b; 29 | #X obj 101 122 until; 30 | #X obj 143 154 + 1; 31 | #X connect 0 0 4 0; 32 | #X connect 2 0 6 0; 33 | #X connect 2 0 1 0; 34 | #X connect 3 0 2 1; 35 | #X connect 4 0 5 0; 36 | #X connect 4 1 3 0; 37 | #X connect 5 0 2 0; 38 | #X connect 6 0 2 1; 39 | #X restore 54 223 pd rep; 40 | #X obj 54 286 list append 1; 41 | #X obj 54 364 list append; 42 | #X obj 54 250 t b a; 43 | #X obj 142 398 t b; 44 | #X obj 54 161 t a a a; 45 | #N canvas 703 203 419 452 sub 0; 46 | #X obj 51 43 inlet; 47 | #X obj 292 410 outlet; 48 | #X obj 292 40 inlet; 49 | #X text 295 22 pre-creation; 50 | #X text 49 28 post-creation; 51 | #X msg 51 148 \; pd-\$1 vis 0 \; pd-\$1 obj 10 10 inlet \; pd-\$1 obj 52 | 100 10 inlet \; pd-\$1 obj 200 10 outlet \; pd-\$1 obj 300 10 outlet 53 | \; pd-\$1 obj 30 100 upp._xhelper \; pd-\$1 obj 130 100 pd \$2 \; pd-\$2 54 | vis 0 \; pd-\$1 connect 0 0 4 0 \; pd-\$1 connect 1 0 4 1 \; pd-\$1 55 | connect 4 0 2 0 \; pd-\$1 connect 4 1 3 0 \; pd-\$2 obj 10 10 inlet 56 | \; pd-\$2 obj 100 10 inlet \; pd-\$2 obj 200 10 outlet \; pd-\$2 obj 57 | 300 10 outlet \; pd-\$1 connect 4 3 5 0 \; pd-\$1 connect 4 4 5 1 \; 58 | pd-\$1 connect 5 0 4 2 \; pd-\$1 connect 5 1 4 3 \;; 59 | #X obj 51 79 list prepend \$0; 60 | #X msg 51 100 list \$1-c-\$2 \$1-v-\$2; 61 | #X obj 292 79 list prepend \$0; 62 | #X msg 292 100 pd \$1-c-\$2; 63 | #X connect 0 0 6 0; 64 | #X connect 2 0 8 0; 65 | #X connect 6 0 7 0; 66 | #X connect 7 0 5 0; 67 | #X connect 8 0 9 0; 68 | #X connect 9 0 1 0; 69 | #X restore 521 418 pd sub; 70 | #X obj 142 418 list append upp.flow \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 71 | ; 72 | #X obj 54 80 sqrt; 73 | #X obj 54 101 + 1; 74 | #X obj 54 123 int; 75 | #X obj 54 57 f \$1; 76 | #X obj 54 407 upp.dynchain; 77 | #X obj 430 418 upp.dynchain; 78 | #X obj 430 322 list prepend \$0; 79 | #X msg 430 344 list \$2 \$1-root 4; 80 | #X obj 117 321 list prepend \$0; 81 | #X msg 117 342 list \$1-v-\$2 4; 82 | #X connect 0 0 12 0; 83 | #X connect 1 0 4 0; 84 | #X connect 2 0 3 0; 85 | #X connect 3 0 13 0; 86 | #X connect 4 0 2 0; 87 | #X connect 4 1 17 0; 88 | #X connect 5 0 8 0; 89 | #X connect 6 0 1 0; 90 | #X connect 6 1 2 1; 91 | #X connect 6 2 15 0; 92 | #X connect 7 0 14 1; 93 | #X connect 8 0 13 1; 94 | #X connect 9 0 10 0; 95 | #X connect 10 0 11 0; 96 | #X connect 11 0 6 0; 97 | #X connect 12 0 9 0; 98 | #X connect 13 1 5 0; 99 | #X connect 14 0 7 0; 100 | #X connect 14 1 7 1; 101 | #X connect 15 0 16 0; 102 | #X connect 16 0 14 0; 103 | #X connect 17 0 18 0; 104 | #X connect 18 0 3 1; 105 | #X restore 456 103 pd populate; 106 | #X obj 69 110 upp._xhelper; 107 | #N canvas 607 231 450 300 \$0-root 0; 108 | #X obj 37 26 inlet; 109 | #X obj 110 26 inlet; 110 | #X obj 197 26 outlet; 111 | #X obj 267 25 outlet; 112 | #X restore 156 109 pd \$0-root; 113 | #X obj 429 156 f \$0; 114 | #X msg 429 177 \; pd-\$1-root loadbang; 115 | #X connect 0 0 18 0; 116 | #X connect 5 0 18 1; 117 | #X connect 10 0 12 0; 118 | #X connect 12 0 20 0; 119 | #X connect 12 1 17 0; 120 | #X connect 13 0 12 0; 121 | #X connect 18 0 1 0; 122 | #X connect 18 1 2 0; 123 | #X connect 18 2 7 0; 124 | #X connect 18 3 19 0; 125 | #X connect 18 4 19 1; 126 | #X connect 19 0 18 2; 127 | #X connect 19 1 18 3; 128 | #X connect 20 0 21 0; 129 | #X coords 0 0 1 1 100 50 0; 130 | -------------------------------------------------------------------------------- /upp.xc.pd: -------------------------------------------------------------------------------- 1 | #N canvas 26 43 889 269 10; 2 | #X obj 69 38 inlet; 3 | #X obj 69 195 outlet; 4 | #X obj 142 195 outlet; 5 | #X text 70 212 pass on; 6 | #X text 138 212 release; 7 | #X obj 168 37 inlet; 8 | #X text 170 19 modulation message; 9 | #X obj 207 195 outlet; 10 | #X text 204 213 voices active; 11 | #X text 67 20 event message; 12 | #X obj 430 19 loadbang; 13 | #X text 428 224 explicit loadbang after everything has been set up 14 | ; 15 | #X obj 559 127 t b; 16 | #X text 155 120 dynamically created voices; 17 | #X obj 430 51 t b b; 18 | #X obj 558 147 list append upp.flow \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 19 | ; 20 | #X obj 457 136 upp.dynchain; 21 | #X text 741 27 grrrr.org 2012; 22 | #X obj 69 103 upp._xhelper; 23 | #N canvas 94 22 384 700 \$0-voices 0; 24 | #X obj 37 26 inlet; 25 | #X obj 113 25 inlet; 26 | #X obj 195 25 outlet; 27 | #X obj 275 27 outlet; 28 | #X restore 158 102 pd \$0-voices; 29 | #X obj 430 170 f \$0; 30 | #X msg 430 192 \; pd-\$1-voices loadbang; 31 | #X obj 457 88 list append \$1 \$0-voices 4; 32 | #X connect 0 0 18 0; 33 | #X connect 5 0 18 1; 34 | #X connect 10 0 14 0; 35 | #X connect 12 0 15 0; 36 | #X connect 14 0 20 0; 37 | #X connect 14 1 22 0; 38 | #X connect 15 0 16 1; 39 | #X connect 16 1 12 0; 40 | #X connect 18 0 1 0; 41 | #X connect 18 1 2 0; 42 | #X connect 18 2 7 0; 43 | #X connect 18 3 19 0; 44 | #X connect 18 4 19 1; 45 | #X connect 19 0 18 2; 46 | #X connect 19 1 18 3; 47 | #X connect 20 0 21 0; 48 | #X connect 22 0 16 0; 49 | #X coords 0 0 1 1 100 50 0; 50 | -------------------------------------------------------------------------------- /upp.xf.pd: -------------------------------------------------------------------------------- 1 | #N canvas 57 409 587 257 10; 2 | #X obj 69 38 inlet; 3 | #X obj 69 195 outlet; 4 | #X obj 142 195 outlet; 5 | #X text 70 212 pass on; 6 | #X text 138 212 release; 7 | #X obj 168 37 inlet; 8 | #X text 170 19 modulation message; 9 | #X obj 207 195 outlet; 10 | #X text 204 213 voices active; 11 | #X text 67 20 event message; 12 | #X obj 352 125 list append \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; 13 | #X obj 352 81 pack 0 \$0; 14 | #N canvas 15 27 871 725 comm 0; 15 | #X obj 79 48 inlet; 16 | #X text 296 446 release; 17 | #X obj 300 659 outlet; 18 | #X text 296 676 release; 19 | #X obj 364 56 inlet; 20 | #X obj 153 571 t a; 21 | #X msg 153 533 -1; 22 | #X obj 118 608 nbx 5 14 -1e+37 1e+37 0 0 empty empty active 0 -8 0 23 | 10 -262144 -1 -1 0 256; 24 | #X text 360 38 modulation message; 25 | #X msg 118 534 1; 26 | #X obj 118 570 +; 27 | #X obj 491 660 outlet; 28 | #X text 488 681 voices active; 29 | #X text 77 30 event message; 30 | #X obj 539 339 table \$0-free \$1; 31 | #X obj 539 359 table \$0-assigned \$1; 32 | #X obj 628 47 loadbang; 33 | #X obj 627 212 tabwrite \$0-free; 34 | #X obj 628 123 until; 35 | #X obj 629 151 f; 36 | #X obj 656 152 + 1; 37 | #X obj 628 98 f \$1; 38 | #X obj 565 261 v \$0-freecnt; 39 | #X obj 654 261 tabwrite \$0-assigned; 40 | #X obj 628 72 t b b; 41 | #X msg 675 122 0; 42 | #X obj 606 47 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 43 | -1; 44 | #X msg 666 237 -1; 45 | #X obj 106 139 t a a; 46 | #X obj 188 290 list prepend UPP-\$0; 47 | #X obj 79 201 upp.dilemma; 48 | #X obj 79 654 outlet; 49 | #X text 75 671 overflow; 50 | #X obj 326 289 list prepend start; 51 | #X obj 391 313 list prepend mod; 52 | #X obj 263 355 list append; 53 | #N canvas 0 22 243 358 itervoices 0; 54 | #X obj 62 37 inlet; 55 | #X obj 62 297 outlet; 56 | #X obj 62 98 v \$0-freecnt; 57 | #X obj 62 201 until; 58 | #X obj 62 263 tabread \$0-assigned; 59 | #X msg 131 199 0; 60 | #X obj 62 234 f; 61 | #X obj 89 234 + 1; 62 | #X obj 62 126 - \$1; 63 | #X obj 62 148 * -1; 64 | #X obj 62 73 t b b; 65 | #X connect 0 0 10 0; 66 | #X connect 2 0 8 0; 67 | #X connect 3 0 6 0; 68 | #X connect 4 0 1 0; 69 | #X connect 5 0 6 1; 70 | #X connect 6 0 4 0; 71 | #X connect 6 0 7 0; 72 | #X connect 7 0 6 1; 73 | #X connect 8 0 9 0; 74 | #X connect 9 0 3 0; 75 | #X connect 10 0 2 0; 76 | #X connect 10 1 5 0; 77 | #X restore 364 196 pd itervoices; 78 | #X obj 300 462 r UPP-\$0; 79 | #X obj 195 546 loadbang; 80 | #X msg 193 569 0; 81 | #X msg 188 314 symbol \$1-\$2; 82 | #X obj 188 233 f; 83 | #X obj 106 168 > 0; 84 | #X text 361 216 active voices; 85 | #X obj 630 175 t a b a; 86 | #X obj 118 233 t b a; 87 | #X obj 539 380 table \$0-ids \$1; 88 | #X obj 685 284 tabwrite \$0-ids; 89 | #X text 646 336 stack of free voices; 90 | #X text 666 359 stack of assigned voices; 91 | #X text 637 379 voice positions on assigned stack; 92 | #N canvas 327 105 791 512 allocvoice 0; 93 | #X obj 35 30 inlet; 94 | #X obj 34 449 outlet; 95 | #X obj 62 81 v \$0-freecnt; 96 | #X obj 410 312 tabread \$0-free; 97 | #X text 407 328 voice #; 98 | #X obj 260 448 v \$0-freecnt; 99 | #X obj 130 451 tabwrite \$0-free; 100 | #X msg 130 428 -1; 101 | #X obj 34 426 f; 102 | #X obj 584 452 tabwrite \$0-assigned; 103 | #X text 579 432 val; 104 | #X text 688 434 pos; 105 | #X obj 702 331 - \$1; 106 | #X obj 702 357 * -1; 107 | #X obj 35 59 t b b; 108 | #X obj 62 132 moses 1; 109 | #X obj 232 256 - 1; 110 | #X obj 212 213 t b a a; 111 | #X obj 411 451 tabwrite \$0-ids; 112 | #X obj 410 421 f; 113 | #X obj 410 389 t b a; 114 | #X connect 0 0 14 0; 115 | #X connect 2 0 15 0; 116 | #X connect 3 0 9 0; 117 | #X connect 3 0 8 1; 118 | #X connect 3 0 20 0; 119 | #X connect 7 0 6 0; 120 | #X connect 8 0 1 0; 121 | #X connect 12 0 13 0; 122 | #X connect 13 0 9 1; 123 | #X connect 13 0 19 1; 124 | #X connect 14 0 8 0; 125 | #X connect 14 1 2 0; 126 | #X connect 15 0 8 1; 127 | #X connect 15 1 17 0; 128 | #X connect 16 0 6 1; 129 | #X connect 16 0 3 0; 130 | #X connect 16 0 5 0; 131 | #X connect 17 0 7 0; 132 | #X connect 17 1 16 0; 133 | #X connect 17 2 12 0; 134 | #X connect 19 0 18 0; 135 | #X connect 20 0 19 0; 136 | #X connect 20 1 18 1; 137 | #X restore 106 115 pd allocvoice; 138 | #N canvas 85 115 697 522 freevoice 0; 139 | #X obj 269 28 inlet; 140 | #X obj 269 55 list split 1; 141 | #X obj 460 159 v \$0-freecnt; 142 | #X obj 507 217 v \$0-freecnt; 143 | #X obj 367 472 tabwrite \$0-free; 144 | #X obj 489 188 + 1; 145 | #X text 249 76 voice#; 146 | #X text 82 289 ass index; 147 | #X obj 64 472 tabwrite \$0-assigned; 148 | #X obj 489 246 - \$1; 149 | #X obj 489 267 * -1; 150 | #X obj 489 293 tabread \$0-assigned; 151 | #X text 495 309 get last assigned voice; 152 | #X obj 133 414 f; 153 | #X obj 88 413 f; 154 | #X msg 55 413 -1; 155 | #X text 62 432 clear; 156 | #X obj 103 261 tabread \$0-ids; 157 | #X obj 245 473 tabwrite \$0-ids; 158 | #X msg 186 418 -1; 159 | #X obj 269 99 t a a b; 160 | #X obj 308 417 f; 161 | #X obj 217 417 f; 162 | #X obj 103 323 t b b b a b b a b; 163 | #X connect 0 0 1 0; 164 | #X connect 1 0 20 0; 165 | #X connect 2 0 5 0; 166 | #X connect 2 0 4 1; 167 | #X connect 5 0 9 0; 168 | #X connect 5 0 3 0; 169 | #X connect 9 0 10 0; 170 | #X connect 10 0 14 1; 171 | #X connect 10 0 11 0; 172 | #X connect 11 0 13 1; 173 | #X connect 11 0 21 1; 174 | #X connect 13 0 8 0; 175 | #X connect 14 0 8 1; 176 | #X connect 15 0 8 0; 177 | #X connect 17 0 23 0; 178 | #X connect 19 0 18 0; 179 | #X connect 20 0 17 0; 180 | #X connect 20 1 4 0; 181 | #X connect 20 1 22 1; 182 | #X connect 20 2 2 0; 183 | #X connect 21 0 18 1; 184 | #X connect 22 0 18 1; 185 | #X connect 23 0 15 0; 186 | #X connect 23 1 14 0; 187 | #X connect 23 2 13 0; 188 | #X connect 23 3 8 1; 189 | #X connect 23 4 19 0; 190 | #X connect 23 5 22 0; 191 | #X connect 23 6 18 0; 192 | #X connect 23 7 21 0; 193 | #X restore 339 518 pd freevoice; 194 | #X obj 300 489 t a b a; 195 | #X obj 364 141 t a a; 196 | #X obj 79 89 t a b; 197 | #X obj 263 379 upp.fwd; 198 | #X connect 0 0 55 0; 199 | #X connect 4 0 54 0; 200 | #X connect 5 0 10 1; 201 | #X connect 6 0 10 0; 202 | #X connect 7 0 11 0; 203 | #X connect 9 0 10 0; 204 | #X connect 10 0 5 0; 205 | #X connect 10 0 7 0; 206 | #X connect 16 0 24 0; 207 | #X connect 18 0 19 0; 208 | #X connect 19 0 20 0; 209 | #X connect 19 0 44 0; 210 | #X connect 20 0 19 1; 211 | #X connect 21 0 18 0; 212 | #X connect 21 0 22 0; 213 | #X connect 24 0 21 0; 214 | #X connect 24 1 25 0; 215 | #X connect 25 0 19 1; 216 | #X connect 26 0 24 0; 217 | #X connect 27 0 23 0; 218 | #X connect 27 0 47 0; 219 | #X connect 28 0 42 0; 220 | #X connect 28 1 41 1; 221 | #X connect 29 0 40 0; 222 | #X connect 30 0 31 0; 223 | #X connect 30 1 45 0; 224 | #X connect 33 0 35 1; 225 | #X connect 34 0 35 1; 226 | #X connect 35 0 56 0; 227 | #X connect 36 0 29 0; 228 | #X connect 37 0 53 0; 229 | #X connect 38 0 39 0; 230 | #X connect 39 0 5 0; 231 | #X connect 39 0 7 0; 232 | #X connect 40 0 35 0; 233 | #X connect 41 0 29 0; 234 | #X connect 42 0 30 1; 235 | #X connect 44 0 17 0; 236 | #X connect 44 1 27 0; 237 | #X connect 44 2 17 1; 238 | #X connect 44 2 23 1; 239 | #X connect 44 2 47 1; 240 | #X connect 45 0 41 0; 241 | #X connect 45 0 9 0; 242 | #X connect 45 1 33 0; 243 | #X connect 51 0 28 0; 244 | #X connect 53 0 2 0; 245 | #X connect 53 1 6 0; 246 | #X connect 53 2 52 0; 247 | #X connect 54 0 36 0; 248 | #X connect 54 1 34 0; 249 | #X connect 55 0 30 0; 250 | #X connect 55 1 51 0; 251 | #X restore 69 103 pd comm; 252 | #X msg 352 103 upp.comm UPP-\$2 \$1; 253 | #X text 475 23 grrrr.org 2012; 254 | #X obj 227 102 cnv 15 120 25 empty empty empty 20 12 0 14 -204786 -66577 255 | 0; 256 | #X obj 241 107 upp.dynpatch \$1; 257 | #X connect 0 0 12 0; 258 | #X connect 5 0 12 1; 259 | #X connect 10 0 16 0; 260 | #X connect 11 0 13 0; 261 | #X connect 12 0 1 0; 262 | #X connect 12 1 2 0; 263 | #X connect 12 2 7 0; 264 | #X connect 13 0 10 0; 265 | #X connect 16 0 11 0; 266 | #X coords 0 0 1 1 100 50 0; 267 | -------------------------------------------------------------------------------- /upp.xfade~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 584 364 343 297 10; 2 | #X obj 41 235 snapshot~; 3 | #X obj 66 206 metro 10; 4 | #X msg 66 184 1; 5 | #X obj 66 162 loadbang; 6 | #X obj 41 81 sig~ 2; 7 | #X obj 92 82 sig~ 3; 8 | #X obj 41 134 upp.xfade~; 9 | #X text 36 19 Fade linearly between two signals; 10 | #X obj 165 133 sig~; 11 | #X obj 168 81 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -257985 12 | -1 -1 0 1; 13 | #X obj 41 258 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 14 | -257985 -1 -1 2 256; 15 | #X text 55 61 A; 16 | #X text 103 62 B; 17 | #X text 161 62 A; 18 | #X text 209 60 <----->; 19 | #X text 290 60 B; 20 | #X text 210 48 0.....1; 21 | #X obj 165 99 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 22 | -257985 -1 -1 0 256; 23 | #X connect 0 0 10 0; 24 | #X connect 1 0 0 0; 25 | #X connect 2 0 1 0; 26 | #X connect 3 0 2 0; 27 | #X connect 4 0 6 0; 28 | #X connect 5 0 6 1; 29 | #X connect 6 0 0 0; 30 | #X connect 8 0 6 2; 31 | #X connect 9 0 17 0; 32 | #X connect 17 0 8 0; 33 | -------------------------------------------------------------------------------- /upp.xfade~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 290 183 302 261 10; 2 | #X obj 64 36 inlet~; 3 | #X obj 118 36 inlet~; 4 | #X obj 193 36 inlet~; 5 | #X obj 64 202 outlet~; 6 | #X text 70 18 A; 7 | #X text 127 21 B; 8 | #X text 202 21 M; 9 | #X text 123 186 A*(1-M)+B*M; 10 | #X obj 118 104 -~; 11 | #X obj 118 135 *~; 12 | #X obj 64 168 +~; 13 | #X text 123 207 = A+(B-A)*M; 14 | #X connect 0 0 8 1; 15 | #X connect 0 0 10 0; 16 | #X connect 1 0 8 0; 17 | #X connect 2 0 9 1; 18 | #X connect 8 0 9 0; 19 | #X connect 9 0 10 1; 20 | #X connect 10 0 3 0; 21 | -------------------------------------------------------------------------------- /urnd.pd: -------------------------------------------------------------------------------- 1 | #N canvas 341 168 470 233 10; 2 | #X obj 68 70 inlet; 3 | #X obj 68 163 outlet; 4 | #X obj 68 104 random 1e+06; 5 | #X obj 68 127 / 1e+06; 6 | #X text 28 10 deliver uniformly distributed random number in the range 7 | 0...1; 8 | #X connect 0 0 2 0; 9 | #X connect 2 0 3 0; 10 | #X connect 3 0 1 0; 11 | -------------------------------------------------------------------------------- /vbap-5.1.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 224 158 10; 2 | #X obj 37 33 inlet; 3 | #X obj 37 104 outlet; 4 | #X msg 37 68 2 -135 -45 0 45 135; 5 | #X connect 0 0 2 0; 6 | #X connect 2 0 1 0; 7 | -------------------------------------------------------------------------------- /vbap-stereo.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 252 177 10; 2 | #X obj 48 33 inlet; 3 | #X obj 48 126 outlet; 4 | #X msg 48 77 2 -60 60; 5 | #X connect 0 0 2 0; 6 | #X connect 2 0 1 0; 7 | -------------------------------------------------------------------------------- /version.txt: -------------------------------------------------------------------------------- 1 | 0.2.0 2 | 3 | -------------------------------------------------------------------------------- /wnd-lin.pd: -------------------------------------------------------------------------------- 1 | #N canvas 238 96 266 291 10; 2 | #X obj 42 120 until; 3 | #X obj 42 148 f; 4 | #X obj 74 148 + 1; 5 | #X msg 84 120 0; 6 | #X obj 42 170 t a a; 7 | #X text 34 229 value; 8 | #X text 95 229 index; 9 | #X obj 42 26 loadbang; 10 | #X obj 42 247 tabwrite \$1; 11 | #X obj 42 195 / \$2; 12 | #X obj 42 47 f \$2; 13 | #X obj 136 88 array size \$1; 14 | #X obj 162 28 table \$1; 15 | #X obj 42 92 t a b a; 16 | #X obj 43 69 + 1; 17 | #X connect 0 0 1 0; 18 | #X connect 1 0 2 0; 19 | #X connect 1 0 4 0; 20 | #X connect 2 0 1 1; 21 | #X connect 3 0 1 1; 22 | #X connect 4 0 9 0; 23 | #X connect 4 1 8 1; 24 | #X connect 7 0 10 0; 25 | #X connect 9 0 8 0; 26 | #X connect 10 0 14 0; 27 | #X connect 13 0 0 0; 28 | #X connect 13 1 3 0; 29 | #X connect 13 2 11 0; 30 | #X connect 14 0 13 0; 31 | -------------------------------------------------------------------------------- /wnd-sin.pd: -------------------------------------------------------------------------------- 1 | #N canvas 238 96 263 346 10; 2 | #X obj 62 76 t a b; 3 | #X obj 62 100 until; 4 | #X obj 62 128 f; 5 | #X obj 94 128 + 1; 6 | #X msg 104 100 0; 7 | #X obj 62 150 t a a; 8 | #X text 47 236 value; 9 | #X text 108 236 index; 10 | #X obj 56 211 expr sin($f1*1.5708); 11 | #X obj 62 19 loadbang; 12 | #X obj 55 254 tabwrite \$1; 13 | #X obj 54 292 table \$1 \$2; 14 | #X obj 62 175 / \$2; 15 | #X obj 62 50 f \$2; 16 | #X text 150 17 grrrr.org 2012; 17 | #X connect 0 0 1 0; 18 | #X connect 0 1 4 0; 19 | #X connect 1 0 2 0; 20 | #X connect 2 0 3 0; 21 | #X connect 2 0 5 0; 22 | #X connect 3 0 2 1; 23 | #X connect 4 0 2 1; 24 | #X connect 5 0 12 0; 25 | #X connect 5 1 10 1; 26 | #X connect 8 0 10 0; 27 | #X connect 9 0 13 0; 28 | #X connect 12 0 8 0; 29 | #X connect 13 0 0 0; 30 | --------------------------------------------------------------------------------