├── README.md ├── images ├── AUTOMATONISM-sampler-image3.PNG ├── internals-preview.png ├── sampler-button.gif ├── sampler-location.PNG └── sampler-open.gif ├── sampler-EASY-COPY-PASTE.pd ├── sampler-for-extended.pd ├── sampler-help.pd └── sampler.pd /README.md: -------------------------------------------------------------------------------- 1 | # A sampler module for AUTOMATONISM 2 | 3 | ![](https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/master/images/AUTOMATONISM-sampler-image3.PNG) 4 | 5 | This module is a stereo sampler built for [AUTOMATONISM](https://www.automatonism.com/) that fully supports state saving, parameter nudging, and works like any other AUTOMATONISM module. 6 | 7 | ## FEATURES: 8 | * Variable pitch, length, and start position. 9 | 10 | * Negative pitch values play the sample in reverse. 11 | 12 | * Preset buttons above the pitch slider set the pitch to the corresponding speed multiplier. 13 | 14 | * When the sample reaches it's end, a trigger is sent out of the END_TRIG outlet. 15 | 16 | * Open any audio file that Pure Data supports (WAV and AIFF), at any sample rate. 17 | 18 | * The path to the sample file is stored within the statesave (when you press space), so it should reload the sample when AUTOMATONISM starts up... Unless you move the sample file! 19 | 20 | [Here is an image of the patch if you would like to see what it looks inside.](https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/master/images/internals-preview.png) 21 | 22 | ## UPDATES: 23 | **2017-7-4: pd-extended version** 24 | * Added a pd-extended compatable version. Simply follow all of the instructions on here, but delete "sampler.pd" and rename "sampler-for-extended.pd" to "sampler.pd" 25 | 26 | **2017-6-7: v1.3** 27 | * Added filename display to GUI. Spaces in the filename are replaced with underscores in the display, since it uses a canvas label. Filenames that are too big to fit on screen are truncated and have "..." placed at the beginning. 28 | * Added trigger indicator next to the END_TRIG outlet. 29 | 30 | **2017-5-24: v1.2** 31 | * Added support for file paths that have spaces in them. 32 | 33 | **2017-5-23: v1.1** 34 | * Added trigger indicator next to TRIG inlet to show when a trigger has been recieved. 35 | * Fixed param-nudge for the PITCH slider. It should now nudge like any other slider. 36 | 37 | # How do I install it? 38 | 39 | Download **sampler.pd**, **sampler-help.pd**, and **sampler-EASY-COPY-PASTE.pd** from this github repo. 40 | 41 | **Note:** For the pd-extended version, delete "sampler.pd" and rename "sampler-for-extended.pd" to "sampler.pd", then continue with these instructions. 42 | 43 | Within the *AUTOMATONISM_1.1* folder, there is another folder called *patch_editor_abs*. Drop the files "sampler.pd" and "sampler-help.pd" into this folder. 44 | 45 | ![](https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/master/images/sampler-location.PNG) 46 | 47 | In order for the sampler button to show up in the MODULES window, we need to do two more things. I have made this easier by including the file called **sampler-EASY-COPY-PASTE.pd**. 48 | 49 | First we create a button for the sampler within the MODULES window that will send a bang to the load subpatch. Copy the one I've created in sampler-EASY-COPY-PASTE.pd. I placed the button in a new subsection called EXTRAS. 50 | 51 | ![](https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/master/images/sampler-button.gif) 52 | 53 | Then we need to create the subpatch to load the SAMPLER module into the main window, and handle incrementing the number each time a new one is created. These are contained within the [pd patch-editor-do-not-delete] subpatch. Copy the one I've created in sampler-EASY-COPY-PASTE.pd, and paste it into [pd patch-editor-do-not-delete]. I again made a new subpatch for extra modules. 54 | 55 | ![](https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/master/images/sampler-open.gif) 56 | 57 | # FAQ 58 | 59 | ## Why can't I hear anything? 60 | Do you have the pitch or sample length set to 0? 61 | 62 | Did the sample fail to load? (Check the pd console to see why. Only WAV and AIFF are supported in PD) 63 | 64 | Does your sample actually contain any sound? 65 | 66 | ## Do mono samples work? 67 | 68 | Yup. Mono samples will only play out of the left outlet, OUT_L. 69 | 70 | ## Why are files over 4000000 samples truncated? 71 | 72 | This is just how PD loads samples into arrays. It's over 90 seconds (at 44.1 kHz), so it shouldn't be a problem for most. Some people have gotten around this in other projects, but it wasn't the purpose of this one. 73 | 74 | ## Why don't you show the waveform in the GUI? 75 | 76 | I found it to be very laggy, especially when I had multiple samplers running. 77 | 78 | ## Why did you make this? 79 | 80 | I thought it would be fun to play with, and it is! 81 | -------------------------------------------------------------------------------- /images/AUTOMATONISM-sampler-image3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/c3316927e2c2df8f38bc4c9ce8256a6863b8cb4a/images/AUTOMATONISM-sampler-image3.PNG -------------------------------------------------------------------------------- /images/internals-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/c3316927e2c2df8f38bc4c9ce8256a6863b8cb4a/images/internals-preview.png -------------------------------------------------------------------------------- /images/sampler-button.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/c3316927e2c2df8f38bc4c9ce8256a6863b8cb4a/images/sampler-button.gif -------------------------------------------------------------------------------- /images/sampler-location.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/c3316927e2c2df8f38bc4c9ce8256a6863b8cb4a/images/sampler-location.PNG -------------------------------------------------------------------------------- /images/sampler-open.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megalon/pd-AUTOMATONISM-sampler/c3316927e2c2df8f38bc4c9ce8256a6863b8cb4a/images/sampler-open.gif -------------------------------------------------------------------------------- /sampler-EASY-COPY-PASTE.pd: -------------------------------------------------------------------------------- 1 | #N canvas 870 746 312 184 12; 2 | #N canvas 1164 83 342 191 extra-modules 0; 3 | #N canvas 1084 196 473 595 open-sampler 0; 4 | #X msg 64 84 bang; 5 | #X obj 64 151 t b b b; 6 | #X obj 162 168 f; 7 | #X obj 191 168 + 1; 8 | #X obj 162 257 + 1; 9 | #X obj 223 101 delay 250; 10 | #X msg 223 211 \; pd-modules vis 0; 11 | #X obj 223 123 t b b; 12 | #X msg 250 171 \; pd-main.pd editmode 1; 13 | #X obj 83 316 pack s f; 14 | #X obj 177 59 r \$0-reset!; 15 | #X msg 177 81 0; 16 | #X msg 83 341 \; pd-main.pd obj 200 200 \$1 \$2; 17 | #X obj 162 280 nbx 5 14 -1e+037 1e+037 0 1 empty empty empty 0 -8 0 18 | 10 -262144 -1 -1 2 256; 19 | #X obj 64 387 t b b; 20 | #X msg 64 509 loadbang; 21 | #X obj 96 411 s SAVE-S; 22 | #X obj 64 462 delay 100; 23 | #X obj 308 316 f; 24 | #X obj 308 278 loadbang; 25 | #X obj 162 299 t f f; 26 | #X obj 64 35 r \$0-create-sampler!; 27 | #X msg 83 235 sampler; 28 | #X floatatom 308 338 5 0 0 0 - - -, f 5; 29 | #X obj 64 562 s pd-sampler.pd; 30 | #X connect 0 0 1 0; 31 | #X connect 0 0 5 0; 32 | #X connect 1 0 14 0; 33 | #X connect 1 1 22 0; 34 | #X connect 1 2 2 0; 35 | #X connect 2 0 3 0; 36 | #X connect 2 0 4 0; 37 | #X connect 3 0 2 1; 38 | #X connect 4 0 13 0; 39 | #X connect 5 0 7 0; 40 | #X connect 7 0 6 0; 41 | #X connect 7 1 8 0; 42 | #X connect 9 0 12 0; 43 | #X connect 10 0 11 0; 44 | #X connect 11 0 2 1; 45 | #X connect 11 0 13 0; 46 | #X connect 13 0 20 0; 47 | #X connect 14 0 17 0; 48 | #X connect 14 1 16 0; 49 | #X connect 15 0 24 0; 50 | #X connect 17 0 15 0; 51 | #X connect 18 0 2 1; 52 | #X connect 18 0 23 0; 53 | #X connect 19 0 18 0; 54 | #X connect 20 0 9 1; 55 | #X connect 20 1 18 1; 56 | #X connect 21 0 0 0; 57 | #X connect 22 0 9 0; 58 | #X restore 14 32 pd open-sampler; 59 | #X restore 9 88 pd extra-modules; 60 | #X obj 14 26 cnv 15 180 15 empty empty EXTRAS: 10 8 0 12 -158136 -262144 61 | 0; 62 | #X obj 14 47 bng 15 250 50 0 \$0-create-sampler! empty <--SAMPLER 17 63 | 7 0 10 -262144 -1 -1; 64 | -------------------------------------------------------------------------------- /sampler-for-extended.pd: -------------------------------------------------------------------------------- 1 | #N canvas 508 92 1256 819 10; 2 | #X obj 204 109 cnv 5 5 5 empty empty LENGTH 0 0 0 8 -262144 -120682 3 | 0; 4 | #X obj 124 126 cnv 5 5 5 empty empty SAMPLER 0 0 0 12 -262144 -66577 5 | 0; 6 | #X obj 105 328 cnv 5 5 5 empty empty OUT_L 0 0 0 8 -262144 -66577 0 7 | ; 8 | #X obj 185 126 cnv 5 5 5 empty \$0-instance-num 1 0 0 0 12 -262144 9 | -66577 0; 10 | #X obj 252 109 cnv 5 5 5 empty empty START 0 0 0 8 -262144 -120682 11 | 0; 12 | #X obj 46 354 cnv 15 400 600 empty empty load_file 20 12 0 14 -233017 13 | -66577 0; 14 | #X obj 457 354 cnv 15 655 955 empty empty sampler 20 12 0 14 -261682 15 | -66577 0; 16 | #X obj 227 400 bng 30 250 50 0 empty empty empty 17 7 0 10 -204800 17 | -1 -1; 18 | #X floatatom 227 474 20 0 0 0 - - -; 19 | #X obj 227 631 /; 20 | #X obj 227 577 t b f; 21 | #X obj 670 1073 *~; 22 | #X obj 670 930 *~; 23 | #X obj 669 987 +~; 24 | #X obj 107 208 hsl 128 15 -2 2 0 1 \$0-sampler-pitch-s \$0-sampler-pitch-r 25 | PITCH 133 7 0 10 -262144 -1 -1 11100 1; 26 | #X obj 107 223 hsl 128 15 0 127 0 1 \$0-sampler-length-s \$0-sampler-length-r 27 | LENGTH 133 7 0 10 -262144 -1 -1 9313 1; 28 | #X obj 107 238 hsl 128 15 0 127 0 0 \$0-sampler-start-s \$0-sampler-start-r 29 | START 133 7 0 10 -262144 -1 -1 4100 1; 30 | #X obj 670 731 phasor~; 31 | #X text 73 405 Get path to sample; 32 | #X text 510 983 Sample start position; 33 | #X text 560 927 Sample length; 34 | #X text 547 568 Freq adjustment; 35 | #X text 50 608 Calculate freq based; 36 | #X text 74 625 off of sample size; 37 | #X text 518 389 Adjust freq for; 38 | #X text 494 406 new sample length; 39 | #X obj 668 1197 outlet~; 40 | #X obj 104 158 bng 15 250 50 0 \$0-open empty OPEN_FILE 18 7 0 10 -204800 41 | -1 -1; 42 | #X obj 272 405 r \$0-open; 43 | #X obj 671 847 *~; 44 | #X text 530 699 Loop or one shot; 45 | #X obj 222 158 tgl 15 1 \$0-loop-on-off-s \$0-loop-on-off-r LOOP 18 46 | 7 0 10 -204800 -1 -1 1 1; 47 | #X obj 521 118 s \$0-bang; 48 | #N canvas 11 518 526 376 open 0; 49 | #X obj 242 56 openpanel; 50 | #X obj 242 289 soundfiler; 51 | #X text 150 290 Load sample; 52 | #X obj 242 22 inlet; 53 | #X obj 242 314 outlet; 54 | #X obj 242 237 pack s s s; 55 | #X obj 242 142 t a b b; 56 | #X msg 242 262 read -resize \$1 \$2 \$3; 57 | #X obj 280 172 symbol \$0-sample-L; 58 | #X obj 319 202 symbol \$0-sample-R; 59 | #X obj 261 76 r \$0-filename-r; 60 | #X obj 261 116 s \$0-filename-s; 61 | #X obj 53 149 s \$0-sample-display-name; 62 | #N canvas 1160 437 580 264 get-file-name 0; 63 | #X obj 296 28 inlet; 64 | #X obj 296 183 outlet; 65 | #X text -73 142 This patch should also convert any spaces to underscores 66 | ; 67 | #X text -74 74 I'm not sure how to split strings in pd-extended \, 68 | but this is where the patch where that would go.; 69 | #X text -73 106 This patch should substring a path to only get the 70 | name of the file itself. EX: ../folder/file.wav -> file.wav; 71 | #X connect 0 0 1 0; 72 | #X restore 53 124 pd get-file-name; 73 | #X connect 0 0 6 0; 74 | #X connect 0 0 11 0; 75 | #X connect 0 0 13 0; 76 | #X connect 1 0 4 0; 77 | #X connect 3 0 0 0; 78 | #X connect 5 0 7 0; 79 | #X connect 6 0 5 0; 80 | #X connect 6 1 8 0; 81 | #X connect 6 2 9 0; 82 | #X connect 7 0 1 0; 83 | #X connect 8 0 5 1; 84 | #X connect 9 0 5 2; 85 | #X connect 10 0 6 0; 86 | #X connect 10 0 11 0; 87 | #X connect 10 0 13 0; 88 | #X connect 13 0 12 0; 89 | #X restore 227 447 pd open file; 90 | #X text 466 1074 Scale to length of sample; 91 | #X obj 670 1015 wrap~; 92 | #X obj 227 656 s \$0-normal-freq; 93 | #X obj 687 464 r \$0-normal-freq; 94 | #X obj 259 534 s \$0-file-size; 95 | #X obj 688 1046 r \$0-file-size; 96 | #X obj 736 1196 outlet~; 97 | #N canvas 0 101 1106 875 state-saving-multiple-instances 0; 98 | #X obj 683 25 loadbang; 99 | #X obj 739 399 textfile; 100 | #X msg 979 352 rewind; 101 | #X msg 933 352 bang; 102 | #X obj 368 548 textfile; 103 | #X obj 368 194 f; 104 | #X obj 380 477 f; 105 | #X msg 444 477 clear; 106 | #X obj 761 223 outlet; 107 | #X text 811 224 INSTANCE NUMBER; 108 | #X obj 715 159 f \$1; 109 | #X obj 129 65 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 110 | -1; 111 | #X obj 129 41 r SAVE-S; 112 | #X msg 380 518 write statesave/\$1-sampler-ss.txt; 113 | #X msg 739 254 read statesave/\$1-sampler-ss.txt; 114 | #X obj 747 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 115 | -1 -1; 116 | #X obj 386 61 r \$0-sampler-pitch-s; 117 | #X obj 397 83 r \$0-sampler-length-s; 118 | #X obj 407 105 r \$0-sampler-start-s; 119 | #X obj 426 130 r \$0-sampler-pitch-att-s; 120 | #X obj 446 155 r \$0-sampler-length-att-s; 121 | #X obj 465 178 r \$0-sampler-start-att-s; 122 | #X obj 485 201 r \$0-loop-on-off-s; 123 | #X obj 889 694 s \$0-sampler-pitch-r; 124 | #X obj 910 670 s \$0-sampler-length-r; 125 | #X obj 932 646 s \$0-sampler-start-r; 126 | #X obj 953 622 s \$0-sampler-pitch-att-r; 127 | #X obj 975 596 s \$0-sampler-length-att-r; 128 | #X obj 996 572 s \$0-sampler-start-att-r; 129 | #X obj 1018 549 s \$0-loop-on-off-r; 130 | #X obj 174 203 r \$0-filename-s; 131 | #X obj 505 224 r \$0-sample-rate-s; 132 | #X obj 1040 526 s \$0-sample-rate-r; 133 | #X msg 368 305 set \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; 134 | #X obj 368 268 pack f f f f f f f f; 135 | #X obj 129 98 t b b b b; 136 | #X msg 149 293 add \$1; 137 | #X obj 149 270 list; 138 | #X obj 739 644 s \$0-filename-r; 139 | #N canvas 768 807 620 156 list-to-symbol 0; 140 | #X obj 85 12 inlet; 141 | #X obj 85 75 outlet; 142 | #X text 193 15 This patch will convert a space separated list into 143 | a single symbol.; 144 | #X obj 85 45 tosymbol; 145 | #X text 191 50 This is pretty easy to do in extended!; 146 | #X connect 0 0 3 0; 147 | #X connect 3 0 1 0; 148 | #X restore 739 621 pd list-to-symbol; 149 | #X obj 889 501 unpack f f f f f f f f; 150 | #X obj 715 195 t f f f; 151 | #X obj 889 480 spigot; 152 | #X msg 956 460 1; 153 | #X msg 926 460 0; 154 | #X obj 739 479 spigot; 155 | #X msg 806 459 1; 156 | #X msg 776 459 0; 157 | #X msg 774 342 bang; 158 | #X obj 933 317 t b b b; 159 | #X obj 774 317 t b b; 160 | #X obj 683 68 t b b b; 161 | #X text 933 299 Read first line; 162 | #X text 775 297 Read seccond line; 163 | #X text 381 340 Save gui state on first line of file; 164 | #X text 22 349 Save filename on seccond line of file; 165 | #X text 190 617 If the filename has spaces in it \, by default Pure 166 | Data would treat this as a List. We need to convert this list into 167 | a single symbol.; 168 | #X text 638 621 ------->>>>; 169 | #X connect 0 0 51 0; 170 | #X connect 1 0 42 0; 171 | #X connect 1 0 45 0; 172 | #X connect 2 0 1 0; 173 | #X connect 3 0 1 0; 174 | #X connect 5 0 34 0; 175 | #X connect 6 0 13 0; 176 | #X connect 7 0 4 0; 177 | #X connect 10 0 41 0; 178 | #X connect 11 0 35 0; 179 | #X connect 12 0 11 0; 180 | #X connect 13 0 4 0; 181 | #X connect 14 0 1 0; 182 | #X connect 15 0 10 0; 183 | #X connect 16 0 5 1; 184 | #X connect 17 0 34 1; 185 | #X connect 18 0 34 2; 186 | #X connect 19 0 34 3; 187 | #X connect 20 0 34 4; 188 | #X connect 21 0 34 5; 189 | #X connect 22 0 34 6; 190 | #X connect 30 0 37 1; 191 | #X connect 31 0 34 7; 192 | #X connect 33 0 4 0; 193 | #X connect 34 0 33 0; 194 | #X connect 35 0 6 0; 195 | #X connect 35 1 37 0; 196 | #X connect 35 2 5 0; 197 | #X connect 35 3 7 0; 198 | #X connect 36 0 4 0; 199 | #X connect 37 0 36 0; 200 | #X connect 39 0 38 0; 201 | #X connect 40 0 23 0; 202 | #X connect 40 1 24 0; 203 | #X connect 40 2 25 0; 204 | #X connect 40 3 26 0; 205 | #X connect 40 4 27 0; 206 | #X connect 40 5 28 0; 207 | #X connect 40 6 29 0; 208 | #X connect 40 7 32 0; 209 | #X connect 41 0 6 1; 210 | #X connect 41 1 14 0; 211 | #X connect 41 2 8 0; 212 | #X connect 42 0 40 0; 213 | #X connect 43 0 42 1; 214 | #X connect 44 0 42 1; 215 | #X connect 45 0 39 0; 216 | #X connect 46 0 45 1; 217 | #X connect 47 0 45 1; 218 | #X connect 48 0 1 0; 219 | #X connect 49 0 3 0; 220 | #X connect 49 1 43 0; 221 | #X connect 49 1 47 0; 222 | #X connect 49 2 2 0; 223 | #X connect 50 0 48 0; 224 | #X connect 50 1 46 0; 225 | #X connect 50 1 44 0; 226 | #X connect 51 0 50 0; 227 | #X connect 51 1 49 0; 228 | #X connect 51 2 10 0; 229 | #X restore 587 221 pd state-saving-multiple-instances; 230 | #X obj 587 296 s \$0-instance-num; 231 | #X obj 587 248 makefilename %d; 232 | #X msg 587 273 label \$1; 233 | #N canvas 607 137 1205 745 state-saving-via-preset-manager-module 0 234 | ; 235 | #X obj 690 337 textfile; 236 | #X msg 931 294 rewind; 237 | #X msg 888 294 bang; 238 | #X obj 357 568 textfile; 239 | #X obj 357 234 f; 240 | #X obj 371 457 f; 241 | #X msg 487 499 clear; 242 | #X obj 357 56 delay 5; 243 | #X obj 263 367 delay 10; 244 | #X msg 263 292 bang; 245 | #X obj 263 26 r STORE-S!; 246 | #X obj 690 128 f; 247 | #X obj 676 49 t b f; 248 | #X obj 735 146 f \$1; 249 | #X obj 690 173 pack f f; 250 | #X obj 735 96 loadbang; 251 | #X obj 371 487 pack f f; 252 | #X obj 424 440 loadbang; 253 | #X obj 424 462 f \$1; 254 | #X obj 844 1086 pack f f; 255 | #X obj 844 1110 line; 256 | #X obj 897 1061 r preset-manager-morph-s; 257 | #X obj 676 26 r preset-manager-scan; 258 | #X obj 866 991 pack f f; 259 | #X obj 866 1015 line; 260 | #X obj 919 966 r preset-manager-morph-s; 261 | #X obj 389 418 r preset-manager-store-slot; 262 | #X obj 889 915 line; 263 | #X obj 942 864 r preset-manager-morph-s; 264 | #X msg 529 865 stop; 265 | #X obj 529 798 r STOP-MORPH!; 266 | #X obj 889 891 pack f f; 267 | #X obj 935 660 pack f f; 268 | #X obj 935 684 line; 269 | #X obj 988 635 r preset-manager-morph-s; 270 | #X obj 912 792 line; 271 | #X obj 965 741 r preset-manager-morph-s; 272 | #X obj 912 768 pack f f; 273 | #X msg 690 202 read statesave/\$1-\$2-sampler-ss.txt; 274 | #X msg 370 528 write statesave/\$1-\$2-sampler-ss.txt; 275 | #X obj 375 78 r \$0-sampler-pitch-s; 276 | #X obj 386 112 r \$0-sampler-length-s; 277 | #X obj 396 138 r \$0-sampler-start-s; 278 | #X obj 415 169 r \$0-sampler-pitch-att-s; 279 | #X obj 434 195 r \$0-sampler-length-att-s; 280 | #X obj 454 220 r \$0-sampler-start-att-s; 281 | #X obj 844 1135 s \$0-sampler-pitch-r; 282 | #X obj 958 550 pack f f; 283 | #X obj 958 574 line; 284 | #X obj 1011 525 r preset-manager-morph-s; 285 | #X obj 958 597 s \$0-sampler-start-att-r; 286 | #X obj 935 707 s \$0-sampler-length-att-r; 287 | #X obj 912 815 s \$0-sampler-pitch-att-r; 288 | #X obj 889 938 s \$0-sampler-start-r; 289 | #X obj 866 1038 s \$0-sampler-length-r; 290 | #X obj 474 246 r \$0-loop-on-off-s; 291 | #X obj 973 496 s \$0-loop-on-off-r; 292 | #X obj 144 432 r \$0-filename-s; 293 | #X obj 494 272 r \$0-sample-rate-s; 294 | #X obj 995 466 s \$0-sample-rate-r; 295 | #X obj 844 439 unpack f f f f f f f f; 296 | #X obj 357 301 pack f f f f f f f f; 297 | #X obj 263 322 t b b b b; 298 | #X obj 119 454 list; 299 | #X msg 119 476 add \$1; 300 | #X msg 357 368 set \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; 301 | #X obj 844 418 spigot; 302 | #X msg 911 398 1; 303 | #X msg 881 398 0; 304 | #X obj 690 417 spigot; 305 | #X msg 757 397 1; 306 | #X msg 727 397 0; 307 | #X obj 690 686 s \$0-filename-r; 308 | #N canvas 744 830 644 133 list-to-symbol 0; 309 | #X obj 85 12 inlet; 310 | #X obj 85 64 outlet; 311 | #X text 208 8 This patch will convert a space separated list into a 312 | single symbol.; 313 | #X obj 85 39 tosymbol; 314 | #X connect 0 0 3 0; 315 | #X connect 3 0 1 0; 316 | #X restore 690 663 pd list-to-symbol; 317 | #X obj 888 255 t b b b; 318 | #X msg 725 296 bang; 319 | #X obj 725 257 t b b; 320 | #X obj 644 85 t b b b; 321 | #X text 155 660 If the filename has spaces in it \, by default Pure 322 | Data would treat this as a List. We need to convert this list into 323 | a single symbol.; 324 | #X text 603 664 ------->>>>; 325 | #X connect 0 0 66 0; 326 | #X connect 0 0 69 0; 327 | #X connect 1 0 0 0; 328 | #X connect 2 0 0 0; 329 | #X connect 4 0 61 0; 330 | #X connect 5 0 16 0; 331 | #X connect 6 0 3 0; 332 | #X connect 7 0 4 0; 333 | #X connect 8 0 5 0; 334 | #X connect 9 0 62 0; 335 | #X connect 10 0 9 0; 336 | #X connect 11 0 14 0; 337 | #X connect 12 0 77 0; 338 | #X connect 12 1 11 1; 339 | #X connect 13 0 14 1; 340 | #X connect 14 0 38 0; 341 | #X connect 15 0 13 0; 342 | #X connect 16 0 39 0; 343 | #X connect 17 0 18 0; 344 | #X connect 18 0 16 1; 345 | #X connect 19 0 20 0; 346 | #X connect 20 0 46 0; 347 | #X connect 21 0 19 1; 348 | #X connect 22 0 12 0; 349 | #X connect 23 0 24 0; 350 | #X connect 24 0 54 0; 351 | #X connect 25 0 23 1; 352 | #X connect 26 0 5 1; 353 | #X connect 27 0 53 0; 354 | #X connect 28 0 31 1; 355 | #X connect 29 0 20 0; 356 | #X connect 29 0 24 0; 357 | #X connect 29 0 27 0; 358 | #X connect 29 0 33 0; 359 | #X connect 29 0 48 0; 360 | #X connect 30 0 29 0; 361 | #X connect 31 0 27 0; 362 | #X connect 32 0 33 0; 363 | #X connect 33 0 51 0; 364 | #X connect 34 0 32 1; 365 | #X connect 35 0 52 0; 366 | #X connect 36 0 37 1; 367 | #X connect 37 0 35 0; 368 | #X connect 38 0 0 0; 369 | #X connect 39 0 3 0; 370 | #X connect 40 0 4 1; 371 | #X connect 41 0 61 1; 372 | #X connect 42 0 61 2; 373 | #X connect 43 0 61 3; 374 | #X connect 44 0 61 4; 375 | #X connect 45 0 61 5; 376 | #X connect 47 0 48 0; 377 | #X connect 48 0 50 0; 378 | #X connect 49 0 47 1; 379 | #X connect 55 0 61 6; 380 | #X connect 57 0 63 1; 381 | #X connect 58 0 61 7; 382 | #X connect 60 0 19 0; 383 | #X connect 60 1 23 0; 384 | #X connect 60 2 31 0; 385 | #X connect 60 3 37 0; 386 | #X connect 60 4 32 0; 387 | #X connect 60 5 47 0; 388 | #X connect 60 6 56 0; 389 | #X connect 60 7 59 0; 390 | #X connect 61 0 65 0; 391 | #X connect 62 0 8 0; 392 | #X connect 62 0 63 0; 393 | #X connect 62 2 7 0; 394 | #X connect 62 3 6 0; 395 | #X connect 63 0 64 0; 396 | #X connect 64 0 3 0; 397 | #X connect 65 0 3 0; 398 | #X connect 66 0 60 0; 399 | #X connect 67 0 66 1; 400 | #X connect 68 0 66 1; 401 | #X connect 69 0 73 0; 402 | #X connect 70 0 69 1; 403 | #X connect 71 0 69 1; 404 | #X connect 73 0 72 0; 405 | #X connect 74 0 2 0; 406 | #X connect 74 1 67 0; 407 | #X connect 74 1 71 0; 408 | #X connect 74 2 1 0; 409 | #X connect 75 0 0 0; 410 | #X connect 76 0 75 0; 411 | #X connect 76 1 68 0; 412 | #X connect 76 1 70 0; 413 | #X connect 77 0 76 0; 414 | #X connect 77 1 74 0; 415 | #X connect 77 2 11 0; 416 | #X restore 588 193 pd state-saving-via-preset-manager-module; 417 | #N canvas 1151 367 615 566 parameter-nudging-system 0; 418 | #N canvas 0 50 484 497 param-nudge 0; 419 | #X obj 124 234 random; 420 | #X obj 232 335 f; 421 | #X obj 232 368 +; 422 | #X obj 257 166 random 2; 423 | #X obj 124 275 t f f; 424 | #X obj 124 351 t b f; 425 | #X obj 124 297 *; 426 | #X obj 257 188 sel 0 1; 427 | #X msg 257 280 -1; 428 | #X msg 335 280 1; 429 | #X obj 124 149 t b b b; 430 | #X obj 124 123 r NUDGE!; 431 | #X obj 157 193 r NUDGE-RANGE; 432 | #X obj 247 308 inlet; 433 | #X obj 232 397 outlet; 434 | #X connect 0 0 4 0; 435 | #X connect 1 0 2 0; 436 | #X connect 2 0 14 0; 437 | #X connect 3 0 7 0; 438 | #X connect 4 0 6 0; 439 | #X connect 5 0 2 0; 440 | #X connect 5 1 2 1; 441 | #X connect 6 0 5 0; 442 | #X connect 7 0 8 0; 443 | #X connect 7 1 9 0; 444 | #X connect 8 0 6 1; 445 | #X connect 9 0 6 1; 446 | #X connect 10 0 0 0; 447 | #X connect 10 1 1 0; 448 | #X connect 10 2 3 0; 449 | #X connect 11 0 10 0; 450 | #X connect 12 0 0 1; 451 | #X connect 13 0 1 1; 452 | #X restore 23 125 pd param-nudge; 453 | #N canvas 472 60 484 497 param-nudge 0; 454 | #X obj 124 234 random; 455 | #X obj 232 335 f; 456 | #X obj 232 368 +; 457 | #X obj 257 166 random 2; 458 | #X obj 124 275 t f f; 459 | #X obj 124 351 t b f; 460 | #X obj 124 297 *; 461 | #X obj 257 188 sel 0 1; 462 | #X msg 257 280 -1; 463 | #X msg 335 280 1; 464 | #X obj 124 149 t b b b; 465 | #X obj 124 123 r NUDGE!; 466 | #X obj 157 193 r NUDGE-RANGE; 467 | #X obj 247 308 inlet; 468 | #X obj 232 397 outlet; 469 | #X connect 0 0 4 0; 470 | #X connect 1 0 2 0; 471 | #X connect 2 0 14 0; 472 | #X connect 3 0 7 0; 473 | #X connect 4 0 6 0; 474 | #X connect 5 0 2 0; 475 | #X connect 5 1 2 1; 476 | #X connect 6 0 5 0; 477 | #X connect 7 0 8 0; 478 | #X connect 7 1 9 0; 479 | #X connect 8 0 6 1; 480 | #X connect 9 0 6 1; 481 | #X connect 10 0 0 0; 482 | #X connect 10 1 1 0; 483 | #X connect 10 2 3 0; 484 | #X connect 11 0 10 0; 485 | #X connect 12 0 0 1; 486 | #X connect 13 0 1 1; 487 | #X restore 211 45 pd param-nudge; 488 | #N canvas 0 50 484 497 param-nudge 0; 489 | #X obj 124 234 random; 490 | #X obj 232 335 f; 491 | #X obj 232 368 +; 492 | #X obj 257 166 random 2; 493 | #X obj 124 275 t f f; 494 | #X obj 124 351 t b f; 495 | #X obj 124 297 *; 496 | #X obj 257 188 sel 0 1; 497 | #X msg 257 280 -1; 498 | #X msg 335 280 1; 499 | #X obj 124 149 t b b b; 500 | #X obj 124 123 r NUDGE!; 501 | #X obj 157 193 r NUDGE-RANGE; 502 | #X obj 247 308 inlet; 503 | #X obj 232 397 outlet; 504 | #X connect 0 0 4 0; 505 | #X connect 1 0 2 0; 506 | #X connect 2 0 14 0; 507 | #X connect 3 0 7 0; 508 | #X connect 4 0 6 0; 509 | #X connect 5 0 2 0; 510 | #X connect 5 1 2 1; 511 | #X connect 6 0 5 0; 512 | #X connect 7 0 8 0; 513 | #X connect 7 1 9 0; 514 | #X connect 8 0 6 1; 515 | #X connect 9 0 6 1; 516 | #X connect 10 0 0 0; 517 | #X connect 10 1 1 0; 518 | #X connect 10 2 3 0; 519 | #X connect 11 0 10 0; 520 | #X connect 12 0 0 1; 521 | #X connect 13 0 1 1; 522 | #X restore 413 45 pd param-nudge; 523 | #N canvas 0 50 484 497 param-nudge 0; 524 | #X obj 124 234 random; 525 | #X obj 232 335 f; 526 | #X obj 232 368 +; 527 | #X obj 257 166 random 2; 528 | #X obj 124 275 t f f; 529 | #X obj 124 351 t b f; 530 | #X obj 124 297 *; 531 | #X obj 257 188 sel 0 1; 532 | #X msg 257 280 -1; 533 | #X msg 335 280 1; 534 | #X obj 124 149 t b b b; 535 | #X obj 124 123 r NUDGE!; 536 | #X obj 157 193 r NUDGE-RANGE; 537 | #X obj 247 308 inlet; 538 | #X obj 232 397 outlet; 539 | #X connect 0 0 4 0; 540 | #X connect 1 0 2 0; 541 | #X connect 2 0 14 0; 542 | #X connect 3 0 7 0; 543 | #X connect 4 0 6 0; 544 | #X connect 5 0 2 0; 545 | #X connect 5 1 2 1; 546 | #X connect 6 0 5 0; 547 | #X connect 7 0 8 0; 548 | #X connect 7 1 9 0; 549 | #X connect 8 0 6 1; 550 | #X connect 9 0 6 1; 551 | #X connect 10 0 0 0; 552 | #X connect 10 1 1 0; 553 | #X connect 10 2 3 0; 554 | #X connect 11 0 10 0; 555 | #X connect 12 0 0 1; 556 | #X connect 13 0 1 1; 557 | #X restore 21 326 pd param-nudge; 558 | #X obj 23 157 clip 0 127; 559 | #X obj 211 67 clip 0 127; 560 | #X obj 413 67 clip 0 127; 561 | #X obj 23 249 s \$0-sampler-pitch-r; 562 | #X obj 211 139 s \$0-sampler-length-r; 563 | #X obj 413 139 s \$0-sampler-start-r; 564 | #X obj 21 397 s \$0-sampler-pitch-att-r; 565 | #X obj 21 348 clip 0 127; 566 | #N canvas 0 50 484 497 param-nudge 0; 567 | #X obj 124 234 random; 568 | #X obj 232 335 f; 569 | #X obj 232 368 +; 570 | #X obj 257 166 random 2; 571 | #X obj 124 275 t f f; 572 | #X obj 124 351 t b f; 573 | #X obj 124 297 *; 574 | #X obj 257 188 sel 0 1; 575 | #X msg 257 280 -1; 576 | #X msg 335 280 1; 577 | #X obj 124 149 t b b b; 578 | #X obj 124 123 r NUDGE!; 579 | #X obj 157 193 r NUDGE-RANGE; 580 | #X obj 247 308 inlet; 581 | #X obj 232 397 outlet; 582 | #X connect 0 0 4 0; 583 | #X connect 1 0 2 0; 584 | #X connect 2 0 14 0; 585 | #X connect 3 0 7 0; 586 | #X connect 4 0 6 0; 587 | #X connect 5 0 2 0; 588 | #X connect 5 1 2 1; 589 | #X connect 6 0 5 0; 590 | #X connect 7 0 8 0; 591 | #X connect 7 1 9 0; 592 | #X connect 8 0 6 1; 593 | #X connect 9 0 6 1; 594 | #X connect 10 0 0 0; 595 | #X connect 10 1 1 0; 596 | #X connect 10 2 3 0; 597 | #X connect 11 0 10 0; 598 | #X connect 12 0 0 1; 599 | #X connect 13 0 1 1; 600 | #X restore 211 326 pd param-nudge; 601 | #X obj 211 348 clip 0 127; 602 | #N canvas 0 50 484 497 param-nudge 0; 603 | #X obj 124 234 random; 604 | #X obj 232 335 f; 605 | #X obj 232 368 +; 606 | #X obj 257 166 random 2; 607 | #X obj 124 275 t f f; 608 | #X obj 124 351 t b f; 609 | #X obj 124 297 *; 610 | #X obj 257 188 sel 0 1; 611 | #X msg 257 280 -1; 612 | #X msg 335 280 1; 613 | #X obj 124 149 t b b b; 614 | #X obj 124 123 r NUDGE!; 615 | #X obj 157 193 r NUDGE-RANGE; 616 | #X obj 247 308 inlet; 617 | #X obj 232 397 outlet; 618 | #X connect 0 0 4 0; 619 | #X connect 1 0 2 0; 620 | #X connect 2 0 14 0; 621 | #X connect 3 0 7 0; 622 | #X connect 4 0 6 0; 623 | #X connect 5 0 2 0; 624 | #X connect 5 1 2 1; 625 | #X connect 6 0 5 0; 626 | #X connect 7 0 8 0; 627 | #X connect 7 1 9 0; 628 | #X connect 8 0 6 1; 629 | #X connect 9 0 6 1; 630 | #X connect 10 0 0 0; 631 | #X connect 10 1 1 0; 632 | #X connect 10 2 3 0; 633 | #X connect 11 0 10 0; 634 | #X connect 12 0 0 1; 635 | #X connect 13 0 1 1; 636 | #X restore 411 326 pd param-nudge; 637 | #X obj 411 348 clip 0 127; 638 | #X obj 211 397 s \$0-sampler-length-att-r; 639 | #X obj 411 397 s \$0-sampler-start-att-r; 640 | #X obj 23 22 r \$0-sampler-pitch-s; 641 | #X obj 211 22 r \$0-sampler-length-s; 642 | #X obj 413 22 r \$0-sampler-start-s; 643 | #X obj 21 303 r \$0-sampler-pitch-att-s; 644 | #X obj 211 303 r \$0-sampler-length-att-s; 645 | #X obj 411 303 r \$0-sampler-start-att-s; 646 | #X obj 23 178 / 127; 647 | #X obj 23 200 * 4; 648 | #X obj 23 222 - 2; 649 | #X obj 23 49 + 2; 650 | #X obj 23 71 / 4; 651 | #X obj 23 93 * 127; 652 | #X text 58 221 Scale back to -2 - 2; 653 | #X text 72 92 Scale to 0 - 127; 654 | #X connect 0 0 4 0; 655 | #X connect 1 0 5 0; 656 | #X connect 2 0 6 0; 657 | #X connect 3 0 11 0; 658 | #X connect 4 0 24 0; 659 | #X connect 5 0 8 0; 660 | #X connect 6 0 9 0; 661 | #X connect 11 0 10 0; 662 | #X connect 12 0 13 0; 663 | #X connect 13 0 16 0; 664 | #X connect 14 0 15 0; 665 | #X connect 15 0 17 0; 666 | #X connect 18 0 27 0; 667 | #X connect 19 0 1 0; 668 | #X connect 20 0 2 0; 669 | #X connect 21 0 3 0; 670 | #X connect 22 0 12 0; 671 | #X connect 23 0 14 0; 672 | #X connect 24 0 25 0; 673 | #X connect 25 0 26 0; 674 | #X connect 26 0 7 0; 675 | #X connect 27 0 28 0; 676 | #X connect 28 0 29 0; 677 | #X connect 29 0 0 0; 678 | #X restore 589 165 pd parameter-nudging-system; 679 | #X text 118 448 Open the sample; 680 | #X obj 175 328 cnv 5 5 5 empty empty OUT_R 0 0 0 8 -262144 -66577 0 681 | ; 682 | #X obj 107 268 hsl 128 15 0 127 0 1 \$0-sampler-length-att-s \$0-sampler-length-att-r 683 | LENGTH 133 7 0 10 -158136 -1 -1 6300 1; 684 | #X obj 107 283 hsl 128 15 0 127 0 1 \$0-sampler-start-att-s \$0-sampler-start-att-r 685 | START 133 7 0 10 -158136 -1 -1 4100 1; 686 | #X obj 107 253 hsl 128 15 0 127 0 1 \$0-sampler-pitch-att-s \$0-sampler-pitch-att-r 687 | PITCH 133 7 0 10 -158136 -1 -1 2400 1; 688 | #X obj 670 594 *~; 689 | #X obj 679 76 inlet~ PITCH; 690 | #X obj 679 98 throw~ \$0-sampler-PITCH; 691 | #X obj 670 539 *~; 692 | #X obj 687 513 line~; 693 | #X obj 854 76 inlet~ LENGTH; 694 | #X obj 864 109 throw~ \$0-sampler-LENGTH; 695 | #X text 568 595 Sample pitch; 696 | #X obj 1043 98 throw~ \$0-sample-START; 697 | #X obj 227 496 t f f; 698 | #X obj 1043 76 inlet~ START; 699 | #X obj 855 131 throw~ \$0-sampler-LENGTH2; 700 | #N canvas 693 365 353 379 sample-length 0; 701 | #X obj 30 21 r \$0-sampler-length-s; 702 | #X obj 30 87 line~; 703 | #X obj 30 282 clip~ 0 1; 704 | #X obj 47 119 catch~ \$0-sampler-LENGTH; 705 | #X obj 29 260 +~; 706 | #X obj 65 144 r \$0-sampler-length-att-s; 707 | #X obj 47 233 *~; 708 | #X obj 65 210 line~; 709 | #X obj 30 315 outlet~; 710 | #X obj 65 166 / 127; 711 | #X obj 30 43 / 127; 712 | #X obj 65 188 pack 0 50; 713 | #X obj 30 65 pack 0 50; 714 | #X connect 0 0 10 0; 715 | #X connect 1 0 4 0; 716 | #X connect 2 0 8 0; 717 | #X connect 3 0 6 0; 718 | #X connect 4 0 2 0; 719 | #X connect 5 0 9 0; 720 | #X connect 6 0 4 1; 721 | #X connect 7 0 6 1; 722 | #X connect 9 0 11 0; 723 | #X connect 10 0 12 0; 724 | #X connect 11 0 7 0; 725 | #X connect 12 0 1 0; 726 | #X restore 688 388 pd sample-length; 727 | #N canvas 186 336 428 589 sample-pitch 0; 728 | #X obj 47 27 r \$0-sampler-pitch-s; 729 | #X obj 47 123 line~; 730 | #X obj 46 364 +~; 731 | #X obj 65 175 catch~ \$0-sampler-PITCH; 732 | #X obj 45 457 outlet~; 733 | #X obj 65 332 *~; 734 | #X obj 82 309 line~; 735 | #X obj 82 236 r \$0-sampler-pitch-att-s; 736 | #X obj 82 263 / 127; 737 | #X obj 93 399 snapshot~; 738 | #X obj 109 374 metro 100; 739 | #X floatatom 93 421 10 0 0 0 - - -; 740 | #X obj 109 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 741 | 1; 742 | #X obj 65 197 *~ 127; 743 | #X obj 82 287 pack 0 50; 744 | #X obj 47 101 pack 0 50; 745 | #X connect 0 0 15 0; 746 | #X connect 1 0 2 0; 747 | #X connect 2 0 4 0; 748 | #X connect 2 0 9 0; 749 | #X connect 3 0 13 0; 750 | #X connect 5 0 2 1; 751 | #X connect 6 0 5 1; 752 | #X connect 7 0 8 0; 753 | #X connect 8 0 14 0; 754 | #X connect 9 0 11 0; 755 | #X connect 10 0 9 0; 756 | #X connect 12 0 10 0; 757 | #X connect 13 0 5 0; 758 | #X connect 14 0 6 0; 759 | #X connect 15 0 1 0; 760 | #X restore 689 568 pd sample-pitch; 761 | #X obj 635 408 sig~ 1; 762 | #X obj 671 435 /~; 763 | #N canvas 693 365 353 379 sample-length2 0; 764 | #X obj 23 11 r \$0-sampler-length-s; 765 | #X obj 23 77 line~; 766 | #X obj 23 282 clip~ 0 1; 767 | #X obj 22 260 +~; 768 | #X obj 58 146 r \$0-sampler-length-att-s; 769 | #X obj 40 233 *~; 770 | #X obj 58 210 line~; 771 | #X obj 23 315 outlet~; 772 | #X obj 40 121 catch~ \$0-sampler-LENGTH2; 773 | #X obj 58 167 / 127; 774 | #X obj 23 34 / 127; 775 | #X obj 58 188 pack 0 50; 776 | #X obj 23 55 pack 0 50; 777 | #X connect 0 0 10 0; 778 | #X connect 1 0 3 0; 779 | #X connect 2 0 7 0; 780 | #X connect 3 0 2 0; 781 | #X connect 4 0 9 0; 782 | #X connect 5 0 3 1; 783 | #X connect 6 0 5 1; 784 | #X connect 8 0 5 0; 785 | #X connect 9 0 11 0; 786 | #X connect 10 0 12 0; 787 | #X connect 11 0 6 0; 788 | #X connect 12 0 1 0; 789 | #X restore 689 897 pd sample-length2; 790 | #N canvas 786 589 394 334 sample-start 0; 791 | #X obj 24 18 r \$0-sampler-start-s; 792 | #X obj 24 89 line~; 793 | #X obj 24 241 +~; 794 | #X obj 24 263 clip~ 0 1; 795 | #X obj 42 115 catch~ \$0-sample-START; 796 | #X obj 42 207 *~; 797 | #X obj 60 140 r \$0-sampler-start-att-s; 798 | #X obj 24 285 outlet~; 799 | #X obj 60 161 / 127; 800 | #X obj 24 44 / 127; 801 | #X obj 24 67 pack 0 50; 802 | #X connect 0 0 9 0; 803 | #X connect 1 0 2 0; 804 | #X connect 2 0 3 0; 805 | #X connect 3 0 7 0; 806 | #X connect 4 0 5 0; 807 | #X connect 5 0 2 1; 808 | #X connect 6 0 8 0; 809 | #X connect 8 0 5 1; 810 | #X connect 9 0 10 0; 811 | #X connect 10 0 1 0; 812 | #X restore 688 959 pd sample-start; 813 | #X obj 669 1103 tabread4~ \$0-sample-L; 814 | #X obj 737 1132 tabread4~ \$0-sample-R; 815 | #X obj 726 597 r \$0-bang; 816 | #X msg 726 685 0; 817 | #X obj 849 689 sel 1; 818 | #X msg 849 716 1; 819 | #X text 518 791 Detect end of sample; 820 | #X obj 807 620 t f f; 821 | #N canvas 65 231 809 734 detect-end-of-sample 0; 822 | #X obj 128 641 outlet bang-on-end; 823 | #X msg 28 515 0; 824 | #X obj 27 617 spigot; 825 | #X obj 27 641 outlet; 826 | #X obj 98 20 inlet~ pitch; 827 | #X msg 98 100 1; 828 | #X obj 98 126 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 829 | 1; 830 | #X msg 298 97 0; 831 | #X obj 98 73 threshold~ 0.0001 0 -0.0001 0; 832 | #X obj 98 168 == 0; 833 | #X obj 73 197 *~ 1; 834 | #X obj 27 197 *~ 1; 835 | #X text 250 270 Reversed; 836 | #X text 250 246 Normal; 837 | #X text 359 35 Bang when the sample has ended. We detect the end of 838 | the sample with [threshold~ 0.9999] \, however \, when the sample is 839 | played in reverse \, it would trigger this instantly. We need to detect 840 | when the sample is playing in reverse so that we can use [threshold~ 841 | 0.0001] to bang the end of the sample. We detect if the sample is reversed 842 | by checking if the pitch of the phasor~ is negative.; 843 | #X text 367 192 If loop is set to off \, we also need to mute the audio 844 | from the phasor when the sample has ended.; 845 | #X obj 73 401 t b b; 846 | #X obj 27 401 t b b; 847 | #X obj 43 424 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 848 | -1; 849 | #X obj 112 423 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 850 | -1 -1; 851 | #X obj 27 352 spigot; 852 | #X obj 73 373 spigot; 853 | #X obj 112 318 r \$0-required-hack; 854 | #X obj 28 579 t f f; 855 | #X obj 128 619 spigot; 856 | #X obj 195 534 sel 1; 857 | #X msg 195 556 1; 858 | #X obj 195 488 f; 859 | #X floatatom 202 512 5 0 0 0 - - -; 860 | #X obj 145 526 == 0; 861 | #X obj 246 510 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 862 | -1 -1; 863 | #X obj 150 422 sel 0; 864 | #X obj 162 443 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 865 | -1 -1; 866 | #X text 356 415 We also piggy back off of \$0-required-hack to get 867 | a bang whenver a new trigger is recieved \, so we can reset the spigots 868 | at the bottom.; 869 | #X text 253 318 <-------------; 870 | #X obj 195 19 inlet loop-on-off; 871 | #X obj 26 18 inlet~; 872 | #X floatatom 145 548 5 0 0 0 - - -; 873 | #X text 359 503 This is a mess of spigots \, but since we are using 874 | a phasor~ object \, we are constanly cycling from 0 to 1 (or 1 to 0 875 | if reversed). When loop is set to OFF \, we need to send the bang -on-end 876 | \, send a 0 out of the left outlet \, then finally turn off both the 877 | left and right outlet. The phasor~ will keep cycling \, but the patch 878 | won't be outputting anything anymore.; 879 | #X text 360 594 When loop is ON \, we need to turn both outlet back 880 | on \, and disable them from being turned off. This is controlled using 881 | spigots after the 0 message box.; 882 | #X text 253 418 <-------------; 883 | #X text 253 538 <-------------; 884 | #X text 356 319 When the phase is reset to 0 this causes the threshold~ 885 | to trigger if the sample is being played in reverse. I tried setting 886 | the phasor~ to 1 if the sample is in reverse \, but it still had this 887 | problem. All this does is turn off the theshold~ outputs when the phasor~ 888 | is being reset \, then 5ms later it turns them back on.; 889 | #X obj 28 553 spigot; 890 | #X obj 67 535 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 891 | -1; 892 | #X obj 27 240 threshold~ 0.999 0 0.5 0; 893 | #X obj 73 271 threshold~ 0.001 0 0.5 0; 894 | #X connect 1 0 43 0; 895 | #X connect 1 0 44 0; 896 | #X connect 2 0 3 0; 897 | #X connect 4 0 8 0; 898 | #X connect 5 0 6 0; 899 | #X connect 6 0 9 0; 900 | #X connect 6 0 11 1; 901 | #X connect 7 0 6 0; 902 | #X connect 8 0 5 0; 903 | #X connect 8 1 7 0; 904 | #X connect 9 0 10 1; 905 | #X connect 10 0 46 0; 906 | #X connect 11 0 45 0; 907 | #X connect 16 0 1 0; 908 | #X connect 16 1 19 0; 909 | #X connect 16 1 24 0; 910 | #X connect 17 0 1 0; 911 | #X connect 17 1 18 0; 912 | #X connect 17 1 24 0; 913 | #X connect 20 0 17 0; 914 | #X connect 21 0 16 0; 915 | #X connect 22 0 20 1; 916 | #X connect 22 0 21 1; 917 | #X connect 22 0 31 0; 918 | #X connect 23 0 24 1; 919 | #X connect 23 0 2 1; 920 | #X connect 23 1 2 0; 921 | #X connect 24 0 0 0; 922 | #X connect 25 0 26 0; 923 | #X connect 26 0 24 1; 924 | #X connect 26 0 2 1; 925 | #X connect 27 0 25 0; 926 | #X connect 27 0 28 0; 927 | #X connect 27 0 29 0; 928 | #X connect 27 0 30 0; 929 | #X connect 29 0 37 0; 930 | #X connect 29 0 43 1; 931 | #X connect 31 0 26 0; 932 | #X connect 31 0 32 0; 933 | #X connect 35 0 27 0; 934 | #X connect 36 0 11 0; 935 | #X connect 36 0 10 0; 936 | #X connect 43 0 23 0; 937 | #X connect 45 0 20 0; 938 | #X connect 46 0 21 0; 939 | #X restore 689 797 pd detect-end-of-sample; 940 | #X obj 932 731 s \$0-required-hack; 941 | #X obj 726 641 t b b b; 942 | #X msg 957 684 0; 943 | #X msg 913 705 1; 944 | #X text 894 656 Used in detect-end-of-sample; 945 | #X obj 913 685 del 5; 946 | #X obj 726 619 t b b; 947 | #X text 460 1017 Wrap around if we go past end; 948 | #X text 498 1125 Finally play the sample; 949 | #X text 318 120 Bang resets the phasor~ to 0; 950 | #X obj 807 598 r \$0-loop-on-off-s; 951 | #X text 63 994 This is a stereo sample player designed for AUTOMATONISM. 952 | ; 953 | #X obj 521 96 threshold~ 0.99 0 1 0; 954 | #X obj 521 74 inlet~ trig; 955 | #X obj 104 109 cnv 5 5 5 empty empty TRIG 0 0 0 8 -262144 -226533 0 956 | ; 957 | #X obj 149 109 cnv 5 5 5 empty empty PITCH 0 0 0 8 -262144 -120682 958 | 0; 959 | #X msg 847 820 1 0 \, 0 1 1; 960 | #X obj 847 842 vline~; 961 | #X obj 847 864 outlet~; 962 | #X text 906 865 Output trig on end; 963 | #X obj 452 92 loadbang; 964 | #X obj 134 188 bng 15 250 50 0 \$0-pitch-presets-1-s \$0-pitch-presets-1-r 965 | -1 0 -6 0 10 -204800 -1 -1; 966 | #X obj 149 188 bng 15 250 50 0 \$0-pitch-presets-2-s \$0-pitch-presets-1-r 967 | empty -5 -6 0 10 -204800 -1 -1; 968 | #X obj 164 188 bng 15 250 50 0 \$0-pitch-presets-3-s \$0-pitch-presets-1-r 969 | 0 5 -6 0 10 -204800 -1 -1; 970 | #X obj 179 188 bng 15 250 50 0 \$0-pitch-presets-4-s \$0-pitch-presets-1-r 971 | empty -1 -6 0 10 -204800 -1 -1; 972 | #X obj 194 188 bng 15 250 50 0 \$0-pitch-presets-5-s \$0-pitch-presets-1-r 973 | 1 5 -6 0 10 -204800 -1 -1; 974 | #X obj 209 188 bng 15 250 50 0 \$0-pitch-presets-5-s \$0-pitch-presets-1-r 975 | empty 30 7 0 10 -204800 -1 -1; 976 | #X obj 119 188 bng 15 250 50 0 \$0-pitch-presets--2-s \$0-pitch-presets--2-s 977 | empty 0 -6 0 10 -204800 -1 -1; 978 | #X obj 224 188 bng 15 250 50 0 \$0-pitch-presets-5-s \$0-pitch-presets-1-r 979 | 2 5 -6 0 10 -204800 -1 -1; 980 | #X obj 104 188 bng 15 250 50 0 \$0-pitch-presets-1-s \$0-pitch-presets-1-r 981 | -2 0 -6 0 10 -204800 -1 -1; 982 | #N canvas 591 509 450 351 apply-pitch-presets 0; 983 | #X obj 191 232 f; 984 | #X obj 191 255 s \$0-sampler-pitch-r; 985 | #X obj 48 43 inlet; 986 | #X obj 87 43 inlet; 987 | #X obj 126 43 inlet; 988 | #X obj 165 43 inlet; 989 | #X obj 204 43 inlet; 990 | #X obj 243 43 inlet; 991 | #X obj 282 43 inlet; 992 | #X obj 321 43 inlet; 993 | #X obj 360 43 inlet; 994 | #X msg 48 135 -2; 995 | #X msg 87 110 -1.5; 996 | #X msg 126 135 -1; 997 | #X msg 165 109 -0.5; 998 | #X msg 204 134 0; 999 | #X msg 243 109 0.5; 1000 | #X msg 282 133 1; 1001 | #X msg 321 110 1.5; 1002 | #X msg 360 135 2; 1003 | #X connect 0 0 1 0; 1004 | #X connect 2 0 11 0; 1005 | #X connect 3 0 12 0; 1006 | #X connect 4 0 13 0; 1007 | #X connect 5 0 14 0; 1008 | #X connect 6 0 15 0; 1009 | #X connect 7 0 16 0; 1010 | #X connect 8 0 17 0; 1011 | #X connect 9 0 18 0; 1012 | #X connect 10 0 19 0; 1013 | #X connect 11 0 0 0; 1014 | #X connect 12 0 0 0; 1015 | #X connect 13 0 0 0; 1016 | #X connect 14 0 0 0; 1017 | #X connect 15 0 0 0; 1018 | #X connect 16 0 0 0; 1019 | #X connect 17 0 0 0; 1020 | #X connect 18 0 0 0; 1021 | #X connect 19 0 0 0; 1022 | #X restore 304 203 pd apply-pitch-presets; 1023 | #X obj 104 303 nbx 6 14 -1e+037 1e+037 0 0 \$0-sample-rate-s \$0-sample-rate-r 1024 | SAMPLE_RATE 65 7 0 10 -262144 -1 -1 44100 256; 1025 | #X obj 292 250 loadbang; 1026 | #X msg 292 272 44100; 1027 | #X obj 292 294 s \$0-sample-rate-r; 1028 | #X obj 79 553 r \$0-sample-rate-s; 1029 | #X obj 227 609 f 44100; 1030 | #X obj 812 826 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 1031 | -1 -1; 1032 | #X obj 236 328 cnv 5 5 5 empty empty END_TRIG 0 0 0 8 -262144 -226533 1033 | 0; 1034 | #X obj 79 575 pipe 5; 1035 | #X obj 687 491 pack 0 1; 1036 | #X obj 104 118 bng 15 50 50 0 empty \$0-trig-r empty 17 7 0 10 -262144 1037 | -226533 -1; 1038 | #X obj 591 118 s \$0-trig-r; 1039 | #X obj 261 305 bng 15 50 50 0 empty \$0-end-trig-r empty 17 7 0 10 1040 | -262144 -226533 -1; 1041 | #X obj 866 800 s \$0-end-trig-r; 1042 | #X text 343 272 <-- DEFAULT SAMPLE RATE; 1043 | #X text 76 976 _megalon_ 2017 v1.3; 1044 | #X text 64 1024 SPECIAL pd-extended VERSION!; 1045 | #X symbolatom 104 137 28 0 0 0 - #0-sample-display-name -; 1046 | #X symbolatom 103 28 80 0 0 2 Full_sample_path_name #0-sample-display-name 1047 | -; 1048 | #X obj 160 750 table \$0-sample-L; 1049 | #X obj 160 770 table \$0-sample-R; 1050 | #X text 65 1047 In this version \, the filename is displayed within 1051 | a symbol box \, and the text isn't truncated at all.; 1052 | #X text 64 712 Create tables instead of arrays. [array] is not supported 1053 | in pd-extended; 1054 | #X connect 7 0 33 0; 1055 | #X connect 8 0 61 0; 1056 | #X connect 9 0 36 0; 1057 | #X connect 10 0 115 0; 1058 | #X connect 10 1 9 1; 1059 | #X connect 11 0 70 0; 1060 | #X connect 11 0 71 0; 1061 | #X connect 12 0 13 0; 1062 | #X connect 13 0 35 0; 1063 | #X connect 17 0 29 0; 1064 | #X connect 17 0 78 0; 1065 | #X connect 28 0 33 0; 1066 | #X connect 29 0 12 0; 1067 | #X connect 33 0 8 0; 1068 | #X connect 35 0 11 0; 1069 | #X connect 37 0 119 0; 1070 | #X connect 39 0 11 1; 1071 | #X connect 41 0 43 0; 1072 | #X connect 43 0 44 0; 1073 | #X connect 44 0 42 0; 1074 | #X connect 52 0 17 0; 1075 | #X connect 52 0 78 1; 1076 | #X connect 53 0 54 0; 1077 | #X connect 55 0 52 0; 1078 | #X connect 56 0 55 1; 1079 | #X connect 57 0 58 0; 1080 | #X connect 57 0 63 0; 1081 | #X connect 61 0 10 0; 1082 | #X connect 61 1 38 0; 1083 | #X connect 62 0 60 0; 1084 | #X connect 64 0 67 1; 1085 | #X connect 65 0 52 1; 1086 | #X connect 66 0 67 0; 1087 | #X connect 67 0 55 0; 1088 | #X connect 68 0 12 1; 1089 | #X connect 69 0 13 1; 1090 | #X connect 70 0 26 0; 1091 | #X connect 71 0 40 0; 1092 | #X connect 72 0 85 0; 1093 | #X connect 73 0 17 1; 1094 | #X connect 74 0 75 0; 1095 | #X connect 75 0 29 1; 1096 | #X connect 77 0 78 2; 1097 | #X connect 77 1 74 0; 1098 | #X connect 78 0 29 1; 1099 | #X connect 78 1 95 0; 1100 | #X connect 78 1 116 0; 1101 | #X connect 78 1 123 0; 1102 | #X connect 80 0 84 0; 1103 | #X connect 80 1 73 0; 1104 | #X connect 80 2 81 0; 1105 | #X connect 81 0 79 0; 1106 | #X connect 82 0 79 0; 1107 | #X connect 84 0 82 0; 1108 | #X connect 85 0 80 0; 1109 | #X connect 85 1 75 0; 1110 | #X connect 89 0 77 0; 1111 | #X connect 91 0 32 0; 1112 | #X connect 91 0 121 0; 1113 | #X connect 92 0 91 0; 1114 | #X connect 95 0 96 0; 1115 | #X connect 96 0 97 0; 1116 | #X connect 99 0 32 0; 1117 | #X connect 100 0 109 2; 1118 | #X connect 101 0 109 3; 1119 | #X connect 102 0 109 4; 1120 | #X connect 103 0 109 5; 1121 | #X connect 104 0 109 6; 1122 | #X connect 105 0 109 7; 1123 | #X connect 106 0 109 1; 1124 | #X connect 107 0 109 8; 1125 | #X connect 108 0 109 0; 1126 | #X connect 111 0 112 0; 1127 | #X connect 112 0 113 0; 1128 | #X connect 114 0 118 0; 1129 | #X connect 115 0 9 0; 1130 | #X connect 118 0 115 0; 1131 | #X connect 119 0 56 0; 1132 | #X coords 0 -1 1 1 180 235 2 100 100; 1133 | -------------------------------------------------------------------------------- /sampler-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 50 702 880 10; 2 | #X obj 23 756 cnv 15 400 30 empty empty OUTPUTS: 20 12 0 14 -158136 3 | -262144 0; 4 | #X obj 20 154 cnv 15 400 30 empty empty CONTROLS: 20 12 0 14 -158136 5 | -262144 0; 6 | #X obj 20 594 cnv 15 400 30 empty empty INPUTS: 20 12 0 14 -158136 7 | -262144 0; 8 | #X obj 20 17 cnv 15 400 30 empty empty SAMPLER 20 12 0 14 -150893 -262144 9 | 0; 10 | #X text 24 670 PITCH - input for controlling the pitch with CV; 11 | #X obj 485 20 sampler 0; 12 | #X text 26 790 OUT_L - Left output channel; 13 | #X text 26 820 OUT_R - Right output channel. If a mono sample is used 14 | \, this will not output anything.; 15 | #X text 26 860 END_TRIG - Sends out a trigger signal when the sample 16 | reaches it's end. Works when loop is on or off. If the sampler is retrigged 17 | before the end of the sample is reached \, END_TRIG will not output 18 | a trigger.; 19 | #X text 24 322 PITCH - controls the pitch of the sampler from -2x speed 20 | (twice the speed \, but in reverse) \, to 2x speed.; 21 | #X text 24 355 LENGTH - The length of the sample; 22 | #X text 24 381 START - The start position of the sample; 23 | #X text 24 416 PITCH (purple) - The amount that the PITCH CV input 24 | affects the sample's pitch.; 25 | #X text 24 456 LENGTH (purple) - The amount that the LENGTH CV input 26 | affects the sample's length.; 27 | #X text 24 496 START (purple) - The amount that the START CV input 28 | affects the sample's start position.; 29 | #X text 24 700 LENGTH - input for controlling the length with CV; 30 | #X text 24 730 START - input for controlling the start position with 31 | CV; 32 | #X text 24 192 OPEN_FILE - open a sound file to load into the sampler. 33 | Mono or stereo WAV and AIFF are supported.; 34 | #X text 24 61 The "SAMPLER" module is a stereo sampler that will open 35 | any audio file that Pure Data supports (WAV and AIFF) \, and any sample 36 | rate is supported. It allows variable pitch \, length \, and start 37 | position. The path to the file is stored within the statesave \, so 38 | it should reload the sample when AUTOMATONISM starts up... Unless you 39 | move the sample file!; 40 | #X text 24 222 LOOP - When turned off \, the sample will only play 41 | once then wait to be triggered through the TRIG input before playing 42 | again. When turned on \, the sample will loop indefinitely.; 43 | #X text 24 272 PRESET BUTTONS - These buttons set the pitch to preset 44 | octaves. Negative values indicate the sample playing in reverse. These 45 | values are -2 -1.5 -1 -0.5 0 0.5 1 1.5 2; 46 | #X text 24 536 SAMPLE_RATE - The sample rate of the current sample. 47 | Default is 44100 (44.1 kHz). Change this to your desired sample rate. 48 | ; 49 | #X text 24 640 TRIG - retrigger the sample. Starts at the start position. 50 | ; 51 | -------------------------------------------------------------------------------- /sampler.pd: -------------------------------------------------------------------------------- 1 | #N canvas 508 92 1256 819 10; 2 | #X obj 204 109 cnv 5 5 5 empty empty LENGTH 0 0 0 8 -262144 -120682 3 | 0; 4 | #X obj 124 126 cnv 5 5 5 empty empty SAMPLER 0 0 0 12 -262144 -66577 5 | 0; 6 | #X obj 105 328 cnv 5 5 5 empty empty OUT_L 0 0 0 8 -262144 -66577 0 7 | ; 8 | #X obj 185 126 cnv 5 5 5 empty \$0-instance-num 3 0 0 0 12 -262144 9 | -66577 0; 10 | #X obj 252 109 cnv 5 5 5 empty empty START 0 0 0 8 -262144 -120682 11 | 0; 12 | #X obj 46 354 cnv 15 400 600 empty empty load_file 20 12 0 14 -233017 13 | -66577 0; 14 | #X obj 457 354 cnv 15 655 955 empty empty sampler 20 12 0 14 -261682 15 | -66577 0; 16 | #X obj 227 400 bng 30 250 50 0 empty empty empty 17 7 0 10 -204800 17 | -1 -1; 18 | #X floatatom 227 474 20 0 0 0 - - -, f 20; 19 | #X obj 227 631 /; 20 | #X obj 227 577 t b f; 21 | #X obj 670 1073 *~; 22 | #X obj 670 930 *~; 23 | #X obj 669 987 +~; 24 | #X obj 107 208 hsl 128 15 -2 2 0 1 \$0-sampler-pitch-s \$0-sampler-pitch-r 25 | PITCH 133 7 0 10 -262144 -1 -1 5325 1; 26 | #X obj 107 223 hsl 128 15 0 127 0 1 \$0-sampler-length-s \$0-sampler-length-r 27 | LENGTH 133 7 0 10 -262144 -1 -1 8700 1; 28 | #X obj 107 238 hsl 128 15 0 127 0 0 \$0-sampler-start-s \$0-sampler-start-r 29 | START 133 7 0 10 -262144 -1 -1 2800 1; 30 | #X obj 670 731 phasor~; 31 | #X text 73 405 Get path to sample; 32 | #X text 510 983 Sample start position; 33 | #X text 560 927 Sample length; 34 | #X text 547 568 Freq adjustment; 35 | #X text 50 608 Calculate freq based; 36 | #X text 74 625 off of sample size; 37 | #X text 518 389 Adjust freq for; 38 | #X text 494 406 new sample length; 39 | #X obj 668 1197 outlet~; 40 | #X obj 104 158 bng 15 250 50 0 \$0-open empty OPEN_FILE 18 7 0 10 -204800 41 | -1 -1; 42 | #X obj 272 405 r \$0-open; 43 | #X obj 671 847 *~; 44 | #X text 530 699 Loop or one shot; 45 | #X obj 222 158 tgl 15 1 \$0-loop-on-off-s \$0-loop-on-off-r LOOP 18 46 | 7 0 10 -204800 -1 -1 1 1; 47 | #X obj 521 118 s \$0-bang; 48 | #N canvas 30 510 526 376 open 0; 49 | #X obj 242 56 openpanel; 50 | #X obj 242 289 soundfiler; 51 | #X text 150 290 Load sample; 52 | #X obj 242 22 inlet; 53 | #X obj 242 314 outlet; 54 | #X obj 242 237 pack s s s; 55 | #X obj 242 142 t a b b; 56 | #X msg 242 262 read -resize \$1 \$2 \$3; 57 | #X obj 280 172 symbol \$0-sample-L; 58 | #X obj 319 202 symbol \$0-sample-R; 59 | #X obj 261 76 r \$0-filename-r; 60 | #X obj 261 116 s \$0-filename-s; 61 | #X obj 53 182 s \$0-sample-display-name; 62 | #N canvas 461 141 1318 808 get-file-name 0; 63 | #X obj 468 39 inlet; 64 | #X obj 468 68 list fromsymbol; 65 | #X obj 468 240 list split 1; 66 | #X obj 468 215 list append; 67 | #X text 54 185 First store list \, then start the loop; 68 | #X text 551 156 "until" bangs its output until told to stop by a "bang" 69 | to its right inlet.; 70 | #X text 49 238 third outlet of "split" tells us to stop.; 71 | #X text 49 260 Second outlet of "split" becomes the new list for "list 72 | append" above.; 73 | #X text 50 299 First outlet is the output.; 74 | #X obj 510 541 list prepend; 75 | #X obj 591 507 list; 76 | #X obj 468 104 t b b l; 77 | #X obj 624 723 spigot; 78 | #X msg 705 694 1; 79 | #X msg 669 694 0; 80 | #X obj 624 757 list tosymbol; 81 | #X obj 669 668 t b b b; 82 | #X obj 624 782 outlet; 83 | #X text 36 92 32 is the symbol for space; 84 | #X text 36 110 47 is the symbol for /; 85 | #X msg 429 507 47; 86 | #X obj 468 490 t b; 87 | #X obj 468 466 route 47 32; 88 | #X text 36 145 95 is the symbol for _; 89 | #X text 33 35 This patch substrings a path to only get the name of 90 | the file itself. EX: ../folder/file.wav -> file.wav; 91 | #X text 35 70 Replaces any space with an underscore; 92 | #X obj 689 241 f 0; 93 | #X obj 724 241 + 1; 94 | #X obj 468 179 t b b; 95 | #X obj 671 310 sel 1; 96 | #X msg 707 220 0; 97 | #X obj 689 263 > 20; 98 | #X obj 549 266 t b b; 99 | #X obj 671 290 f; 100 | #X obj 769 358 - 20; 101 | #X obj 751 379 f; 102 | #X obj 584 573 list split 1; 103 | #X msg 703 333 1; 104 | #X obj 671 362 t b b; 105 | #X text 789 230 Count the number of characters; 106 | #X text 790 259 If its greater than the maximum \, we split off the 107 | extra at the beginning \, then place three dots (code 46) at the beginning 108 | of the final filename; 109 | #X text 51 212 Store the remaining list with [list append].; 110 | #X text 816 332 Split off the / at the beginning \, or split off the 111 | number of characters greater than the maximum; 112 | #X text 152 722 When we reach the end of the list \, send the output 113 | converted back to a symbol; 114 | #X text 36 128 46 is the symbol for .; 115 | #N canvas 491 691 398 257 add-three-dots 0; 116 | #X obj 126 168 list prepend 46 46 46; 117 | #X obj 35 15 inlet; 118 | #X obj 35 233 outlet; 119 | #X msg 99 115 1; 120 | #X msg 63 115 0; 121 | #X msg 190 114 1; 122 | #X msg 154 114 0; 123 | #X obj 126 190 t b a; 124 | #X obj 193 14 inlet; 125 | #X obj 35 144 spigot 1; 126 | #X obj 126 143 spigot 0; 127 | #X connect 0 0 7 0; 128 | #X connect 1 0 9 0; 129 | #X connect 1 0 10 0; 130 | #X connect 3 0 9 1; 131 | #X connect 4 0 9 1; 132 | #X connect 5 0 10 1; 133 | #X connect 6 0 10 1; 134 | #X connect 7 0 6 0; 135 | #X connect 7 0 3 0; 136 | #X connect 7 1 2 0; 137 | #X connect 8 0 4 0; 138 | #X connect 8 0 5 0; 139 | #X connect 9 0 2 0; 140 | #X connect 10 0 0 0; 141 | #X restore 624 625 pd add-three-dots; 142 | #X floatatom 729 264 5 0 0 0 - - -, f 5; 143 | #X floatatom 757 405 5 0 0 0 - - -, f 5; 144 | #X floatatom 784 383 5 0 0 0 - - -, f 5; 145 | #X obj 468 157 until; 146 | #X text 792 201 Every time we hit a / we restart the counter; 147 | #X msg 510 491 32; 148 | #X text 11 464 Use route to separate / and spaces from the rest of 149 | the list. You can replace the spaces with _ by changing the 32 message 150 | to a 95; 151 | #X connect 0 0 1 0; 152 | #X connect 1 0 11 0; 153 | #X connect 2 0 22 0; 154 | #X connect 2 1 3 1; 155 | #X connect 2 2 32 0; 156 | #X connect 3 0 2 0; 157 | #X connect 9 0 10 0; 158 | #X connect 9 0 36 0; 159 | #X connect 10 0 9 1; 160 | #X connect 11 0 49 0; 161 | #X connect 11 1 20 0; 162 | #X connect 11 1 30 0; 163 | #X connect 11 2 3 1; 164 | #X connect 12 0 15 0; 165 | #X connect 13 0 12 1; 166 | #X connect 14 0 12 1; 167 | #X connect 15 0 17 0; 168 | #X connect 16 0 14 0; 169 | #X connect 16 1 9 0; 170 | #X connect 16 2 13 0; 171 | #X connect 20 0 10 0; 172 | #X connect 21 0 20 0; 173 | #X connect 21 0 30 0; 174 | #X connect 22 0 21 0; 175 | #X connect 22 1 51 0; 176 | #X connect 22 2 9 0; 177 | #X connect 26 0 27 0; 178 | #X connect 26 0 31 0; 179 | #X connect 26 0 34 0; 180 | #X connect 26 0 46 0; 181 | #X connect 27 0 26 1; 182 | #X connect 28 0 3 0; 183 | #X connect 28 1 26 0; 184 | #X connect 29 0 38 0; 185 | #X connect 29 1 37 0; 186 | #X connect 30 0 26 1; 187 | #X connect 31 0 33 1; 188 | #X connect 32 0 16 0; 189 | #X connect 32 0 49 1; 190 | #X connect 32 1 33 0; 191 | #X connect 33 0 29 0; 192 | #X connect 34 0 35 1; 193 | #X connect 34 0 48 0; 194 | #X connect 35 0 36 1; 195 | #X connect 35 0 47 0; 196 | #X connect 36 1 45 0; 197 | #X connect 37 0 36 1; 198 | #X connect 38 0 45 1; 199 | #X connect 38 1 35 0; 200 | #X connect 45 0 12 0; 201 | #X connect 49 0 28 0; 202 | #X connect 51 0 9 0; 203 | #X restore 53 124 pd get-file-name; 204 | #X msg 53 146 label \$1; 205 | #X connect 0 0 6 0; 206 | #X connect 0 0 11 0; 207 | #X connect 0 0 13 0; 208 | #X connect 1 0 4 0; 209 | #X connect 3 0 0 0; 210 | #X connect 5 0 7 0; 211 | #X connect 6 0 5 0; 212 | #X connect 6 1 8 0; 213 | #X connect 6 2 9 0; 214 | #X connect 7 0 1 0; 215 | #X connect 8 0 5 1; 216 | #X connect 9 0 5 2; 217 | #X connect 10 0 6 0; 218 | #X connect 10 0 11 0; 219 | #X connect 10 0 13 0; 220 | #X connect 13 0 14 0; 221 | #X connect 14 0 12 0; 222 | #X restore 227 447 pd open file; 223 | #X text 466 1074 Scale to length of sample; 224 | #X obj 670 1015 wrap~; 225 | #X obj 227 656 s \$0-normal-freq; 226 | #X obj 687 464 r \$0-normal-freq; 227 | #X obj 259 534 s \$0-file-size; 228 | #X obj 688 1046 r \$0-file-size; 229 | #X obj 736 1196 outlet~; 230 | #N canvas 0 101 1106 875 state-saving-multiple-instances 0; 231 | #X obj 683 25 loadbang; 232 | #X obj 739 399 textfile; 233 | #X msg 979 352 rewind; 234 | #X msg 933 352 bang; 235 | #X obj 368 548 textfile; 236 | #X obj 368 194 f; 237 | #X obj 380 477 f; 238 | #X msg 444 477 clear; 239 | #X obj 761 223 outlet; 240 | #X text 811 224 INSTANCE NUMBER; 241 | #X obj 715 159 f \$1; 242 | #X obj 129 65 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 243 | -1; 244 | #X obj 129 41 r SAVE-S; 245 | #X msg 380 518 write statesave/\$1-sampler-ss.txt; 246 | #X msg 739 254 read statesave/\$1-sampler-ss.txt; 247 | #X obj 747 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 248 | -1 -1; 249 | #X obj 386 61 r \$0-sampler-pitch-s; 250 | #X obj 397 83 r \$0-sampler-length-s; 251 | #X obj 407 105 r \$0-sampler-start-s; 252 | #X obj 426 130 r \$0-sampler-pitch-att-s; 253 | #X obj 446 155 r \$0-sampler-length-att-s; 254 | #X obj 465 178 r \$0-sampler-start-att-s; 255 | #X obj 485 201 r \$0-loop-on-off-s; 256 | #X obj 889 694 s \$0-sampler-pitch-r; 257 | #X obj 910 670 s \$0-sampler-length-r; 258 | #X obj 932 646 s \$0-sampler-start-r; 259 | #X obj 953 622 s \$0-sampler-pitch-att-r; 260 | #X obj 975 596 s \$0-sampler-length-att-r; 261 | #X obj 996 572 s \$0-sampler-start-att-r; 262 | #X obj 1018 549 s \$0-loop-on-off-r; 263 | #X obj 174 203 r \$0-filename-s; 264 | #X obj 505 224 r \$0-sample-rate-s; 265 | #X obj 1040 526 s \$0-sample-rate-r; 266 | #X msg 368 305 set \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; 267 | #X obj 368 268 pack f f f f f f f f; 268 | #X obj 129 98 t b b b b; 269 | #X msg 149 293 add \$1; 270 | #X obj 149 270 list; 271 | #X obj 739 644 s \$0-filename-r; 272 | #N canvas 640 221 748 742 list-to-symbol 0; 273 | #X obj 85 190 list split 1; 274 | #X obj 85 77 until; 275 | #X obj 85 12 inlet; 276 | #X obj 85 162 list append; 277 | #X obj 56 431 list; 278 | #X obj 85 406 list prepend; 279 | #X obj 85 265 list fromsymbol; 280 | #X obj 56 643 list tosymbol; 281 | #X obj 85 310 spigot; 282 | #X obj 178 310 spigot; 283 | #X obj 85 44 t b a b; 284 | #X msg 152 71 0; 285 | #X obj 85 102 f 0; 286 | #X obj 118 102 + 1; 287 | #X obj 85 127 t b f; 288 | #X obj 271 155 sel 0; 289 | #X msg 271 200 0; 290 | #X msg 411 200 1; 291 | #X msg 371 200 0; 292 | #X msg 308 200 1; 293 | #X obj 56 698 outlet; 294 | #X obj 48 236 t b a; 295 | #X msg 48 265 32; 296 | #X obj 56 563 list split; 297 | #X obj 109 485 print before-split; 298 | #X obj 56 456 t a a a; 299 | #X obj 133 511 list length; 300 | #X obj 133 536 - 1; 301 | #X obj 56 588 t a a; 302 | #X obj 178 376 t a; 303 | #X obj 178 217 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 304 | -1 -1; 305 | #X text 260 257 After each item in the list \, insert a space by using 306 | the keycode 32; 307 | #X text 266 414 After we have looped through all of the items in the 308 | list \, we are left with a space (32) at the end \, so we remove this 309 | by spliting the list at length - 1; 310 | #X text 265 484 <--Connect this print object for debugging; 311 | #X text 241 617 <--Connect this print object for debugging; 312 | #X text 271 116 For the first character \, add it to the right inlet 313 | of prepend \, all other characters go to the left inlet.; 314 | #X text 266 12 This patch will convert a space separated list into 315 | a single symbol.; 316 | #X obj 93 617 print after-split; 317 | #X obj 71 676 print final-symbol; 318 | #X text 241 657 <--Connect this print object for debugging; 319 | #X connect 0 0 21 0; 320 | #X connect 0 1 3 1; 321 | #X connect 0 2 30 0; 322 | #X connect 1 0 12 0; 323 | #X connect 2 0 10 0; 324 | #X connect 3 0 0 0; 325 | #X connect 4 0 25 0; 326 | #X connect 5 0 4 1; 327 | #X connect 5 0 29 0; 328 | #X connect 6 0 8 0; 329 | #X connect 6 0 9 0; 330 | #X connect 7 0 20 0; 331 | #X connect 8 0 5 0; 332 | #X connect 9 0 29 0; 333 | #X connect 10 0 1 0; 334 | #X connect 10 1 3 1; 335 | #X connect 10 2 11 0; 336 | #X connect 11 0 12 1; 337 | #X connect 12 0 13 0; 338 | #X connect 12 0 14 0; 339 | #X connect 13 0 12 1; 340 | #X connect 14 0 3 0; 341 | #X connect 14 1 15 0; 342 | #X connect 15 0 16 0; 343 | #X connect 15 0 17 0; 344 | #X connect 15 1 18 0; 345 | #X connect 15 1 19 0; 346 | #X connect 16 0 8 1; 347 | #X connect 17 0 9 1; 348 | #X connect 18 0 9 1; 349 | #X connect 19 0 8 1; 350 | #X connect 21 0 22 0; 351 | #X connect 21 1 6 0; 352 | #X connect 22 0 5 0; 353 | #X connect 23 0 28 0; 354 | #X connect 25 0 23 0; 355 | #X connect 25 1 26 0; 356 | #X connect 26 0 27 0; 357 | #X connect 27 0 23 1; 358 | #X connect 28 0 7 0; 359 | #X connect 29 0 5 1; 360 | #X connect 30 0 1 1; 361 | #X connect 30 0 4 0; 362 | #X restore 739 621 pd list-to-symbol; 363 | #X obj 889 501 unpack f f f f f f f f; 364 | #X obj 715 195 t f f f; 365 | #X obj 889 480 spigot; 366 | #X msg 956 460 1, f 2; 367 | #X msg 926 460 0, f 2; 368 | #X obj 739 479 spigot; 369 | #X msg 806 459 1, f 2; 370 | #X msg 776 459 0, f 2; 371 | #X msg 774 342 bang; 372 | #X obj 933 317 t b b b; 373 | #X obj 774 317 t b b; 374 | #X obj 683 68 t b b b; 375 | #X text 933 299 Read first line; 376 | #X text 775 297 Read seccond line; 377 | #X text 381 340 Save gui state on first line of file; 378 | #X text 22 349 Save filename on seccond line of file; 379 | #X text 190 617 If the filename has spaces in it \, by default Pure 380 | Data would treat this as a List. We need to convert this list into 381 | a single symbol.; 382 | #X text 638 621 ------->>>>; 383 | #X connect 0 0 51 0; 384 | #X connect 1 0 42 0; 385 | #X connect 1 0 45 0; 386 | #X connect 2 0 1 0; 387 | #X connect 3 0 1 0; 388 | #X connect 5 0 34 0; 389 | #X connect 6 0 13 0; 390 | #X connect 7 0 4 0; 391 | #X connect 10 0 41 0; 392 | #X connect 11 0 35 0; 393 | #X connect 12 0 11 0; 394 | #X connect 13 0 4 0; 395 | #X connect 14 0 1 0; 396 | #X connect 15 0 10 0; 397 | #X connect 16 0 5 1; 398 | #X connect 17 0 34 1; 399 | #X connect 18 0 34 2; 400 | #X connect 19 0 34 3; 401 | #X connect 20 0 34 4; 402 | #X connect 21 0 34 5; 403 | #X connect 22 0 34 6; 404 | #X connect 30 0 37 1; 405 | #X connect 31 0 34 7; 406 | #X connect 33 0 4 0; 407 | #X connect 34 0 33 0; 408 | #X connect 35 0 6 0; 409 | #X connect 35 1 37 0; 410 | #X connect 35 2 5 0; 411 | #X connect 35 3 7 0; 412 | #X connect 36 0 4 0; 413 | #X connect 37 0 36 0; 414 | #X connect 39 0 38 0; 415 | #X connect 40 0 23 0; 416 | #X connect 40 1 24 0; 417 | #X connect 40 2 25 0; 418 | #X connect 40 3 26 0; 419 | #X connect 40 4 27 0; 420 | #X connect 40 5 28 0; 421 | #X connect 40 6 29 0; 422 | #X connect 40 7 32 0; 423 | #X connect 41 0 6 1; 424 | #X connect 41 1 14 0; 425 | #X connect 41 2 8 0; 426 | #X connect 42 0 40 0; 427 | #X connect 43 0 42 1; 428 | #X connect 44 0 42 1; 429 | #X connect 45 0 39 0; 430 | #X connect 46 0 45 1; 431 | #X connect 47 0 45 1; 432 | #X connect 48 0 1 0; 433 | #X connect 49 0 3 0; 434 | #X connect 49 1 43 0; 435 | #X connect 49 1 47 0; 436 | #X connect 49 2 2 0; 437 | #X connect 50 0 48 0; 438 | #X connect 50 1 46 0; 439 | #X connect 50 1 44 0; 440 | #X connect 51 0 50 0; 441 | #X connect 51 1 49 0; 442 | #X connect 51 2 10 0; 443 | #X restore 587 221 pd state-saving-multiple-instances; 444 | #X obj 587 296 s \$0-instance-num; 445 | #X obj 587 248 makefilename %d; 446 | #X msg 587 273 label \$1; 447 | #N canvas 607 137 1205 745 state-saving-via-preset-manager-module 0 448 | ; 449 | #X obj 690 337 textfile; 450 | #X msg 931 294 rewind; 451 | #X msg 888 294 bang; 452 | #X obj 357 568 textfile; 453 | #X obj 357 234 f; 454 | #X obj 371 457 f; 455 | #X msg 487 499 clear; 456 | #X obj 357 56 delay 5; 457 | #X obj 263 367 delay 10; 458 | #X msg 263 292 bang; 459 | #X obj 263 26 r STORE-S!; 460 | #X obj 690 128 f; 461 | #X obj 676 49 t b f; 462 | #X obj 735 146 f \$1; 463 | #X obj 690 173 pack f f; 464 | #X obj 735 96 loadbang; 465 | #X obj 371 487 pack f f; 466 | #X obj 424 440 loadbang; 467 | #X obj 424 462 f \$1; 468 | #X obj 844 1086 pack f f; 469 | #X obj 844 1110 line; 470 | #X obj 897 1061 r preset-manager-morph-s; 471 | #X obj 676 26 r preset-manager-scan; 472 | #X obj 866 991 pack f f; 473 | #X obj 866 1015 line; 474 | #X obj 919 966 r preset-manager-morph-s; 475 | #X obj 389 418 r preset-manager-store-slot; 476 | #X obj 889 915 line; 477 | #X obj 942 864 r preset-manager-morph-s; 478 | #X msg 529 865 stop; 479 | #X obj 529 798 r STOP-MORPH!; 480 | #X obj 889 891 pack f f; 481 | #X obj 935 660 pack f f; 482 | #X obj 935 684 line; 483 | #X obj 988 635 r preset-manager-morph-s; 484 | #X obj 912 792 line; 485 | #X obj 965 741 r preset-manager-morph-s; 486 | #X obj 912 768 pack f f; 487 | #X msg 690 202 read statesave/\$1-\$2-sampler-ss.txt; 488 | #X msg 370 528 write statesave/\$1-\$2-sampler-ss.txt; 489 | #X obj 375 78 r \$0-sampler-pitch-s; 490 | #X obj 386 112 r \$0-sampler-length-s; 491 | #X obj 396 138 r \$0-sampler-start-s; 492 | #X obj 415 169 r \$0-sampler-pitch-att-s; 493 | #X obj 434 195 r \$0-sampler-length-att-s; 494 | #X obj 454 220 r \$0-sampler-start-att-s; 495 | #X obj 844 1135 s \$0-sampler-pitch-r; 496 | #X obj 958 550 pack f f; 497 | #X obj 958 574 line; 498 | #X obj 1011 525 r preset-manager-morph-s; 499 | #X obj 958 597 s \$0-sampler-start-att-r; 500 | #X obj 935 707 s \$0-sampler-length-att-r; 501 | #X obj 912 815 s \$0-sampler-pitch-att-r; 502 | #X obj 889 938 s \$0-sampler-start-r; 503 | #X obj 866 1038 s \$0-sampler-length-r; 504 | #X obj 474 246 r \$0-loop-on-off-s; 505 | #X obj 973 496 s \$0-loop-on-off-r; 506 | #X obj 144 432 r \$0-filename-s; 507 | #X obj 494 272 r \$0-sample-rate-s; 508 | #X obj 995 466 s \$0-sample-rate-r; 509 | #X obj 844 439 unpack f f f f f f f f; 510 | #X obj 357 301 pack f f f f f f f f; 511 | #X obj 263 322 t b b b b; 512 | #X obj 119 454 list; 513 | #X msg 119 476 add \$1; 514 | #X msg 357 368 set \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; 515 | #X obj 844 418 spigot; 516 | #X msg 911 398 1, f 2; 517 | #X msg 881 398 0, f 2; 518 | #X obj 690 417 spigot; 519 | #X msg 757 397 1, f 2; 520 | #X msg 727 397 0, f 2; 521 | #X obj 690 686 s \$0-filename-r; 522 | #N canvas 640 221 748 742 list-to-symbol 0; 523 | #X obj 85 190 list split 1; 524 | #X obj 85 77 until; 525 | #X obj 85 12 inlet; 526 | #X obj 85 162 list append; 527 | #X obj 56 431 list; 528 | #X obj 85 406 list prepend; 529 | #X obj 85 265 list fromsymbol; 530 | #X obj 56 643 list tosymbol; 531 | #X obj 85 310 spigot; 532 | #X obj 178 310 spigot; 533 | #X obj 85 44 t b a b; 534 | #X msg 152 71 0; 535 | #X obj 85 102 f 0; 536 | #X obj 118 102 + 1; 537 | #X obj 85 127 t b f; 538 | #X obj 271 155 sel 0; 539 | #X msg 271 200 0; 540 | #X msg 411 200 1; 541 | #X msg 371 200 0; 542 | #X msg 308 200 1; 543 | #X obj 56 698 outlet; 544 | #X obj 48 236 t b a; 545 | #X msg 48 265 32; 546 | #X obj 56 563 list split; 547 | #X obj 109 485 print before-split; 548 | #X obj 56 456 t a a a; 549 | #X obj 133 511 list length; 550 | #X obj 133 536 - 1; 551 | #X obj 56 588 t a a; 552 | #X obj 178 376 t a; 553 | #X obj 178 217 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 554 | -1 -1; 555 | #X text 260 257 After each item in the list \, insert a space by using 556 | the keycode 32; 557 | #X text 266 414 After we have looped through all of the items in the 558 | list \, we are left with a space (32) at the end \, so we remove this 559 | by spliting the list at length - 1; 560 | #X text 265 484 <--Connect this print object for debugging; 561 | #X text 241 617 <--Connect this print object for debugging; 562 | #X text 271 116 For the first character \, add it to the right inlet 563 | of prepend \, all other characters go to the left inlet.; 564 | #X text 266 12 This patch will convert a space separated list into 565 | a single symbol.; 566 | #X obj 93 617 print after-split; 567 | #X obj 71 676 print final-symbol; 568 | #X text 241 657 <--Connect this print object for debugging; 569 | #X connect 0 0 21 0; 570 | #X connect 0 1 3 1; 571 | #X connect 0 2 30 0; 572 | #X connect 1 0 12 0; 573 | #X connect 2 0 10 0; 574 | #X connect 3 0 0 0; 575 | #X connect 4 0 25 0; 576 | #X connect 5 0 4 1; 577 | #X connect 5 0 29 0; 578 | #X connect 6 0 8 0; 579 | #X connect 6 0 9 0; 580 | #X connect 7 0 20 0; 581 | #X connect 8 0 5 0; 582 | #X connect 9 0 29 0; 583 | #X connect 10 0 1 0; 584 | #X connect 10 1 3 1; 585 | #X connect 10 2 11 0; 586 | #X connect 11 0 12 1; 587 | #X connect 12 0 13 0; 588 | #X connect 12 0 14 0; 589 | #X connect 13 0 12 1; 590 | #X connect 14 0 3 0; 591 | #X connect 14 1 15 0; 592 | #X connect 15 0 16 0; 593 | #X connect 15 0 17 0; 594 | #X connect 15 1 18 0; 595 | #X connect 15 1 19 0; 596 | #X connect 16 0 8 1; 597 | #X connect 17 0 9 1; 598 | #X connect 18 0 9 1; 599 | #X connect 19 0 8 1; 600 | #X connect 21 0 22 0; 601 | #X connect 21 1 6 0; 602 | #X connect 22 0 5 0; 603 | #X connect 23 0 28 0; 604 | #X connect 25 0 23 0; 605 | #X connect 25 1 26 0; 606 | #X connect 26 0 27 0; 607 | #X connect 27 0 23 1; 608 | #X connect 28 0 7 0; 609 | #X connect 29 0 5 1; 610 | #X connect 30 0 1 1; 611 | #X connect 30 0 4 0; 612 | #X restore 690 663 pd list-to-symbol; 613 | #X obj 888 255 t b b b; 614 | #X msg 725 296 bang; 615 | #X obj 725 257 t b b; 616 | #X obj 644 85 t b b b; 617 | #X text 155 660 If the filename has spaces in it \, by default Pure 618 | Data would treat this as a List. We need to convert this list into 619 | a single symbol.; 620 | #X text 603 664 ------->>>>; 621 | #X connect 0 0 66 0; 622 | #X connect 0 0 69 0; 623 | #X connect 1 0 0 0; 624 | #X connect 2 0 0 0; 625 | #X connect 4 0 61 0; 626 | #X connect 5 0 16 0; 627 | #X connect 6 0 3 0; 628 | #X connect 7 0 4 0; 629 | #X connect 8 0 5 0; 630 | #X connect 9 0 62 0; 631 | #X connect 10 0 9 0; 632 | #X connect 11 0 14 0; 633 | #X connect 12 0 77 0; 634 | #X connect 12 1 11 1; 635 | #X connect 13 0 14 1; 636 | #X connect 14 0 38 0; 637 | #X connect 15 0 13 0; 638 | #X connect 16 0 39 0; 639 | #X connect 17 0 18 0; 640 | #X connect 18 0 16 1; 641 | #X connect 19 0 20 0; 642 | #X connect 20 0 46 0; 643 | #X connect 21 0 19 1; 644 | #X connect 22 0 12 0; 645 | #X connect 23 0 24 0; 646 | #X connect 24 0 54 0; 647 | #X connect 25 0 23 1; 648 | #X connect 26 0 5 1; 649 | #X connect 27 0 53 0; 650 | #X connect 28 0 31 1; 651 | #X connect 29 0 20 0; 652 | #X connect 29 0 24 0; 653 | #X connect 29 0 27 0; 654 | #X connect 29 0 33 0; 655 | #X connect 29 0 48 0; 656 | #X connect 30 0 29 0; 657 | #X connect 31 0 27 0; 658 | #X connect 32 0 33 0; 659 | #X connect 33 0 51 0; 660 | #X connect 34 0 32 1; 661 | #X connect 35 0 52 0; 662 | #X connect 36 0 37 1; 663 | #X connect 37 0 35 0; 664 | #X connect 38 0 0 0; 665 | #X connect 39 0 3 0; 666 | #X connect 40 0 4 1; 667 | #X connect 41 0 61 1; 668 | #X connect 42 0 61 2; 669 | #X connect 43 0 61 3; 670 | #X connect 44 0 61 4; 671 | #X connect 45 0 61 5; 672 | #X connect 47 0 48 0; 673 | #X connect 48 0 50 0; 674 | #X connect 49 0 47 1; 675 | #X connect 55 0 61 6; 676 | #X connect 57 0 63 1; 677 | #X connect 58 0 61 7; 678 | #X connect 60 0 19 0; 679 | #X connect 60 1 23 0; 680 | #X connect 60 2 31 0; 681 | #X connect 60 3 37 0; 682 | #X connect 60 4 32 0; 683 | #X connect 60 5 47 0; 684 | #X connect 60 6 56 0; 685 | #X connect 60 7 59 0; 686 | #X connect 61 0 65 0; 687 | #X connect 62 0 8 0; 688 | #X connect 62 0 63 0; 689 | #X connect 62 2 7 0; 690 | #X connect 62 3 6 0; 691 | #X connect 63 0 64 0; 692 | #X connect 64 0 3 0; 693 | #X connect 65 0 3 0; 694 | #X connect 66 0 60 0; 695 | #X connect 67 0 66 1; 696 | #X connect 68 0 66 1; 697 | #X connect 69 0 73 0; 698 | #X connect 70 0 69 1; 699 | #X connect 71 0 69 1; 700 | #X connect 73 0 72 0; 701 | #X connect 74 0 2 0; 702 | #X connect 74 1 67 0; 703 | #X connect 74 1 71 0; 704 | #X connect 74 2 1 0; 705 | #X connect 75 0 0 0; 706 | #X connect 76 0 75 0; 707 | #X connect 76 1 68 0; 708 | #X connect 76 1 70 0; 709 | #X connect 77 0 76 0; 710 | #X connect 77 1 74 0; 711 | #X connect 77 2 11 0; 712 | #X restore 588 193 pd state-saving-via-preset-manager-module; 713 | #N canvas 1151 367 615 566 parameter-nudging-system 0; 714 | #N canvas 0 50 484 497 param-nudge 0; 715 | #X obj 124 234 random; 716 | #X obj 232 335 f; 717 | #X obj 232 368 +; 718 | #X obj 257 166 random 2; 719 | #X obj 124 275 t f f; 720 | #X obj 124 351 t b f; 721 | #X obj 124 297 *; 722 | #X obj 257 188 sel 0 1; 723 | #X msg 257 280 -1; 724 | #X msg 335 280 1; 725 | #X obj 124 149 t b b b; 726 | #X obj 124 123 r NUDGE!; 727 | #X obj 157 193 r NUDGE-RANGE; 728 | #X obj 247 308 inlet; 729 | #X obj 232 397 outlet; 730 | #X connect 0 0 4 0; 731 | #X connect 1 0 2 0; 732 | #X connect 2 0 14 0; 733 | #X connect 3 0 7 0; 734 | #X connect 4 0 6 0; 735 | #X connect 5 0 2 0; 736 | #X connect 5 1 2 1; 737 | #X connect 6 0 5 0; 738 | #X connect 7 0 8 0; 739 | #X connect 7 1 9 0; 740 | #X connect 8 0 6 1; 741 | #X connect 9 0 6 1; 742 | #X connect 10 0 0 0; 743 | #X connect 10 1 1 0; 744 | #X connect 10 2 3 0; 745 | #X connect 11 0 10 0; 746 | #X connect 12 0 0 1; 747 | #X connect 13 0 1 1; 748 | #X restore 23 125 pd param-nudge; 749 | #N canvas 472 60 484 497 param-nudge 0; 750 | #X obj 124 234 random; 751 | #X obj 232 335 f; 752 | #X obj 232 368 +; 753 | #X obj 257 166 random 2; 754 | #X obj 124 275 t f f; 755 | #X obj 124 351 t b f; 756 | #X obj 124 297 *; 757 | #X obj 257 188 sel 0 1; 758 | #X msg 257 280 -1; 759 | #X msg 335 280 1; 760 | #X obj 124 149 t b b b; 761 | #X obj 124 123 r NUDGE!; 762 | #X obj 157 193 r NUDGE-RANGE; 763 | #X obj 247 308 inlet; 764 | #X obj 232 397 outlet; 765 | #X connect 0 0 4 0; 766 | #X connect 1 0 2 0; 767 | #X connect 2 0 14 0; 768 | #X connect 3 0 7 0; 769 | #X connect 4 0 6 0; 770 | #X connect 5 0 2 0; 771 | #X connect 5 1 2 1; 772 | #X connect 6 0 5 0; 773 | #X connect 7 0 8 0; 774 | #X connect 7 1 9 0; 775 | #X connect 8 0 6 1; 776 | #X connect 9 0 6 1; 777 | #X connect 10 0 0 0; 778 | #X connect 10 1 1 0; 779 | #X connect 10 2 3 0; 780 | #X connect 11 0 10 0; 781 | #X connect 12 0 0 1; 782 | #X connect 13 0 1 1; 783 | #X restore 211 45 pd param-nudge; 784 | #N canvas 0 50 484 497 param-nudge 0; 785 | #X obj 124 234 random; 786 | #X obj 232 335 f; 787 | #X obj 232 368 +; 788 | #X obj 257 166 random 2; 789 | #X obj 124 275 t f f; 790 | #X obj 124 351 t b f; 791 | #X obj 124 297 *; 792 | #X obj 257 188 sel 0 1; 793 | #X msg 257 280 -1; 794 | #X msg 335 280 1; 795 | #X obj 124 149 t b b b; 796 | #X obj 124 123 r NUDGE!; 797 | #X obj 157 193 r NUDGE-RANGE; 798 | #X obj 247 308 inlet; 799 | #X obj 232 397 outlet; 800 | #X connect 0 0 4 0; 801 | #X connect 1 0 2 0; 802 | #X connect 2 0 14 0; 803 | #X connect 3 0 7 0; 804 | #X connect 4 0 6 0; 805 | #X connect 5 0 2 0; 806 | #X connect 5 1 2 1; 807 | #X connect 6 0 5 0; 808 | #X connect 7 0 8 0; 809 | #X connect 7 1 9 0; 810 | #X connect 8 0 6 1; 811 | #X connect 9 0 6 1; 812 | #X connect 10 0 0 0; 813 | #X connect 10 1 1 0; 814 | #X connect 10 2 3 0; 815 | #X connect 11 0 10 0; 816 | #X connect 12 0 0 1; 817 | #X connect 13 0 1 1; 818 | #X restore 413 45 pd param-nudge; 819 | #N canvas 0 50 484 497 param-nudge 0; 820 | #X obj 124 234 random; 821 | #X obj 232 335 f; 822 | #X obj 232 368 +; 823 | #X obj 257 166 random 2; 824 | #X obj 124 275 t f f; 825 | #X obj 124 351 t b f; 826 | #X obj 124 297 *; 827 | #X obj 257 188 sel 0 1; 828 | #X msg 257 280 -1; 829 | #X msg 335 280 1; 830 | #X obj 124 149 t b b b; 831 | #X obj 124 123 r NUDGE!; 832 | #X obj 157 193 r NUDGE-RANGE; 833 | #X obj 247 308 inlet; 834 | #X obj 232 397 outlet; 835 | #X connect 0 0 4 0; 836 | #X connect 1 0 2 0; 837 | #X connect 2 0 14 0; 838 | #X connect 3 0 7 0; 839 | #X connect 4 0 6 0; 840 | #X connect 5 0 2 0; 841 | #X connect 5 1 2 1; 842 | #X connect 6 0 5 0; 843 | #X connect 7 0 8 0; 844 | #X connect 7 1 9 0; 845 | #X connect 8 0 6 1; 846 | #X connect 9 0 6 1; 847 | #X connect 10 0 0 0; 848 | #X connect 10 1 1 0; 849 | #X connect 10 2 3 0; 850 | #X connect 11 0 10 0; 851 | #X connect 12 0 0 1; 852 | #X connect 13 0 1 1; 853 | #X restore 21 326 pd param-nudge; 854 | #X obj 23 157 clip 0 127; 855 | #X obj 211 67 clip 0 127; 856 | #X obj 413 67 clip 0 127; 857 | #X obj 23 249 s \$0-sampler-pitch-r; 858 | #X obj 211 139 s \$0-sampler-length-r; 859 | #X obj 413 139 s \$0-sampler-start-r; 860 | #X obj 21 397 s \$0-sampler-pitch-att-r; 861 | #X obj 21 348 clip 0 127; 862 | #N canvas 0 50 484 497 param-nudge 0; 863 | #X obj 124 234 random; 864 | #X obj 232 335 f; 865 | #X obj 232 368 +; 866 | #X obj 257 166 random 2; 867 | #X obj 124 275 t f f; 868 | #X obj 124 351 t b f; 869 | #X obj 124 297 *; 870 | #X obj 257 188 sel 0 1; 871 | #X msg 257 280 -1; 872 | #X msg 335 280 1; 873 | #X obj 124 149 t b b b; 874 | #X obj 124 123 r NUDGE!; 875 | #X obj 157 193 r NUDGE-RANGE; 876 | #X obj 247 308 inlet; 877 | #X obj 232 397 outlet; 878 | #X connect 0 0 4 0; 879 | #X connect 1 0 2 0; 880 | #X connect 2 0 14 0; 881 | #X connect 3 0 7 0; 882 | #X connect 4 0 6 0; 883 | #X connect 5 0 2 0; 884 | #X connect 5 1 2 1; 885 | #X connect 6 0 5 0; 886 | #X connect 7 0 8 0; 887 | #X connect 7 1 9 0; 888 | #X connect 8 0 6 1; 889 | #X connect 9 0 6 1; 890 | #X connect 10 0 0 0; 891 | #X connect 10 1 1 0; 892 | #X connect 10 2 3 0; 893 | #X connect 11 0 10 0; 894 | #X connect 12 0 0 1; 895 | #X connect 13 0 1 1; 896 | #X restore 211 326 pd param-nudge; 897 | #X obj 211 348 clip 0 127; 898 | #N canvas 0 50 484 497 param-nudge 0; 899 | #X obj 124 234 random; 900 | #X obj 232 335 f; 901 | #X obj 232 368 +; 902 | #X obj 257 166 random 2; 903 | #X obj 124 275 t f f; 904 | #X obj 124 351 t b f; 905 | #X obj 124 297 *; 906 | #X obj 257 188 sel 0 1; 907 | #X msg 257 280 -1; 908 | #X msg 335 280 1; 909 | #X obj 124 149 t b b b; 910 | #X obj 124 123 r NUDGE!; 911 | #X obj 157 193 r NUDGE-RANGE; 912 | #X obj 247 308 inlet; 913 | #X obj 232 397 outlet; 914 | #X connect 0 0 4 0; 915 | #X connect 1 0 2 0; 916 | #X connect 2 0 14 0; 917 | #X connect 3 0 7 0; 918 | #X connect 4 0 6 0; 919 | #X connect 5 0 2 0; 920 | #X connect 5 1 2 1; 921 | #X connect 6 0 5 0; 922 | #X connect 7 0 8 0; 923 | #X connect 7 1 9 0; 924 | #X connect 8 0 6 1; 925 | #X connect 9 0 6 1; 926 | #X connect 10 0 0 0; 927 | #X connect 10 1 1 0; 928 | #X connect 10 2 3 0; 929 | #X connect 11 0 10 0; 930 | #X connect 12 0 0 1; 931 | #X connect 13 0 1 1; 932 | #X restore 411 326 pd param-nudge; 933 | #X obj 411 348 clip 0 127; 934 | #X obj 211 397 s \$0-sampler-length-att-r; 935 | #X obj 411 397 s \$0-sampler-start-att-r; 936 | #X obj 23 22 r \$0-sampler-pitch-s; 937 | #X obj 211 22 r \$0-sampler-length-s; 938 | #X obj 413 22 r \$0-sampler-start-s; 939 | #X obj 21 303 r \$0-sampler-pitch-att-s; 940 | #X obj 211 303 r \$0-sampler-length-att-s; 941 | #X obj 411 303 r \$0-sampler-start-att-s; 942 | #X obj 23 178 / 127; 943 | #X obj 23 200 * 4; 944 | #X obj 23 222 - 2; 945 | #X obj 23 49 + 2; 946 | #X obj 23 71 / 4; 947 | #X obj 23 93 * 127; 948 | #X text 58 221 Scale back to -2 - 2; 949 | #X text 72 92 Scale to 0 - 127; 950 | #X connect 0 0 4 0; 951 | #X connect 1 0 5 0; 952 | #X connect 2 0 6 0; 953 | #X connect 3 0 11 0; 954 | #X connect 4 0 24 0; 955 | #X connect 5 0 8 0; 956 | #X connect 6 0 9 0; 957 | #X connect 11 0 10 0; 958 | #X connect 12 0 13 0; 959 | #X connect 13 0 16 0; 960 | #X connect 14 0 15 0; 961 | #X connect 15 0 17 0; 962 | #X connect 18 0 27 0; 963 | #X connect 19 0 1 0; 964 | #X connect 20 0 2 0; 965 | #X connect 21 0 3 0; 966 | #X connect 22 0 12 0; 967 | #X connect 23 0 14 0; 968 | #X connect 24 0 25 0; 969 | #X connect 25 0 26 0; 970 | #X connect 26 0 7 0; 971 | #X connect 27 0 28 0; 972 | #X connect 28 0 29 0; 973 | #X connect 29 0 0 0; 974 | #X restore 589 165 pd parameter-nudging-system; 975 | #X text 118 448 Open the sample; 976 | #X obj 175 328 cnv 5 5 5 empty empty OUT_R 0 0 0 8 -262144 -66577 0 977 | ; 978 | #X obj 107 268 hsl 128 15 0 127 0 1 \$0-sampler-length-att-s \$0-sampler-length-att-r 979 | LENGTH 133 7 0 10 -158136 -1 -1 0 1; 980 | #X obj 107 283 hsl 128 15 0 127 0 1 \$0-sampler-start-att-s \$0-sampler-start-att-r 981 | START 133 7 0 10 -158136 -1 -1 3800 1; 982 | #X obj 107 253 hsl 128 15 0 127 0 1 \$0-sampler-pitch-att-s \$0-sampler-pitch-att-r 983 | PITCH 133 7 0 10 -158136 -1 -1 100 1; 984 | #X obj 670 594 *~; 985 | #X obj 679 76 inlet~ PITCH; 986 | #X obj 679 98 throw~ \$0-sampler-PITCH; 987 | #X obj 670 539 *~; 988 | #X obj 687 513 line~; 989 | #X obj 854 76 inlet~ LENGTH; 990 | #X obj 864 109 throw~ \$0-sampler-LENGTH; 991 | #X text 568 595 Sample pitch; 992 | #X obj 1043 98 throw~ \$0-sample-START; 993 | #X obj 227 496 t f f; 994 | #X obj 1043 76 inlet~ START; 995 | #X obj 855 131 throw~ \$0-sampler-LENGTH2; 996 | #N canvas 693 365 353 379 sample-length 0; 997 | #X obj 30 21 r \$0-sampler-length-s; 998 | #X obj 30 87 line~; 999 | #X obj 30 282 clip~ 0 1; 1000 | #X obj 47 119 catch~ \$0-sampler-LENGTH; 1001 | #X obj 29 260 +~; 1002 | #X obj 65 144 r \$0-sampler-length-att-s; 1003 | #X obj 47 233 *~; 1004 | #X obj 65 210 line~; 1005 | #X obj 30 315 outlet~; 1006 | #X obj 65 166 / 127; 1007 | #X obj 30 43 / 127; 1008 | #X obj 65 188 pack 0 50; 1009 | #X obj 30 65 pack 0 50; 1010 | #X connect 0 0 10 0; 1011 | #X connect 1 0 4 0; 1012 | #X connect 2 0 8 0; 1013 | #X connect 3 0 6 0; 1014 | #X connect 4 0 2 0; 1015 | #X connect 5 0 9 0; 1016 | #X connect 6 0 4 1; 1017 | #X connect 7 0 6 1; 1018 | #X connect 9 0 11 0; 1019 | #X connect 10 0 12 0; 1020 | #X connect 11 0 7 0; 1021 | #X connect 12 0 1 0; 1022 | #X restore 688 388 pd sample-length; 1023 | #N canvas 186 336 428 589 sample-pitch 0; 1024 | #X obj 47 27 r \$0-sampler-pitch-s; 1025 | #X obj 47 123 line~; 1026 | #X obj 46 364 +~; 1027 | #X obj 65 175 catch~ \$0-sampler-PITCH; 1028 | #X obj 45 457 outlet~; 1029 | #X obj 65 332 *~; 1030 | #X obj 82 309 line~; 1031 | #X obj 82 236 r \$0-sampler-pitch-att-s; 1032 | #X obj 82 263 / 127; 1033 | #X obj 93 399 snapshot~; 1034 | #X obj 109 374 metro 100; 1035 | #X floatatom 93 421 10 0 0 0 - - -, f 10; 1036 | #X obj 109 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1037 | 1; 1038 | #X obj 65 197 *~ 127; 1039 | #X obj 82 287 pack 0 50; 1040 | #X obj 47 101 pack 0 50; 1041 | #X connect 0 0 15 0; 1042 | #X connect 1 0 2 0; 1043 | #X connect 2 0 4 0; 1044 | #X connect 2 0 9 0; 1045 | #X connect 3 0 13 0; 1046 | #X connect 5 0 2 1; 1047 | #X connect 6 0 5 1; 1048 | #X connect 7 0 8 0; 1049 | #X connect 8 0 14 0; 1050 | #X connect 9 0 11 0; 1051 | #X connect 10 0 9 0; 1052 | #X connect 12 0 10 0; 1053 | #X connect 13 0 5 0; 1054 | #X connect 14 0 6 0; 1055 | #X connect 15 0 1 0; 1056 | #X restore 689 568 pd sample-pitch; 1057 | #X obj 635 408 sig~ 1; 1058 | #X obj 671 435 /~; 1059 | #N canvas 693 365 353 379 sample-length2 0; 1060 | #X obj 23 11 r \$0-sampler-length-s; 1061 | #X obj 23 77 line~; 1062 | #X obj 23 282 clip~ 0 1; 1063 | #X obj 22 260 +~; 1064 | #X obj 58 146 r \$0-sampler-length-att-s; 1065 | #X obj 40 233 *~; 1066 | #X obj 58 210 line~; 1067 | #X obj 23 315 outlet~; 1068 | #X obj 40 121 catch~ \$0-sampler-LENGTH2; 1069 | #X obj 58 167 / 127; 1070 | #X obj 23 34 / 127; 1071 | #X obj 58 188 pack 0 50; 1072 | #X obj 23 55 pack 0 50; 1073 | #X connect 0 0 10 0; 1074 | #X connect 1 0 3 0; 1075 | #X connect 2 0 7 0; 1076 | #X connect 3 0 2 0; 1077 | #X connect 4 0 9 0; 1078 | #X connect 5 0 3 1; 1079 | #X connect 6 0 5 1; 1080 | #X connect 8 0 5 0; 1081 | #X connect 9 0 11 0; 1082 | #X connect 10 0 12 0; 1083 | #X connect 11 0 6 0; 1084 | #X connect 12 0 1 0; 1085 | #X restore 689 897 pd sample-length2; 1086 | #N canvas 786 589 394 334 sample-start 0; 1087 | #X obj 24 18 r \$0-sampler-start-s; 1088 | #X obj 24 89 line~; 1089 | #X obj 24 241 +~; 1090 | #X obj 24 263 clip~ 0 1; 1091 | #X obj 42 115 catch~ \$0-sample-START; 1092 | #X obj 42 207 *~; 1093 | #X obj 60 140 r \$0-sampler-start-att-s; 1094 | #X obj 24 285 outlet~; 1095 | #X obj 60 161 / 127; 1096 | #X obj 24 44 / 127; 1097 | #X obj 24 67 pack 0 50; 1098 | #X connect 0 0 9 0; 1099 | #X connect 1 0 2 0; 1100 | #X connect 2 0 3 0; 1101 | #X connect 3 0 7 0; 1102 | #X connect 4 0 5 0; 1103 | #X connect 5 0 2 1; 1104 | #X connect 6 0 8 0; 1105 | #X connect 8 0 5 1; 1106 | #X connect 9 0 10 0; 1107 | #X connect 10 0 1 0; 1108 | #X restore 688 959 pd sample-start; 1109 | #X obj 669 1103 tabread4~ \$0-sample-L; 1110 | #X obj 737 1132 tabread4~ \$0-sample-R; 1111 | #X obj 726 597 r \$0-bang; 1112 | #X msg 726 685 0; 1113 | #X obj 849 689 sel 1; 1114 | #X msg 849 716 1; 1115 | #X text 518 791 Detect end of sample; 1116 | #X obj 807 620 t f f; 1117 | #N canvas 65 231 809 734 detect-end-of-sample 0; 1118 | #X obj 128 641 outlet bang-on-end; 1119 | #X msg 28 515 0; 1120 | #X obj 27 617 spigot; 1121 | #X obj 27 641 outlet; 1122 | #X obj 98 20 inlet~ pitch; 1123 | #X msg 98 100 1; 1124 | #X obj 98 126 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1125 | 1; 1126 | #X msg 298 97 0; 1127 | #X obj 98 73 threshold~ 0.0001 0 -0.0001 0; 1128 | #X obj 98 168 == 0; 1129 | #X obj 73 197 *~ 1; 1130 | #X obj 27 197 *~ 1; 1131 | #X text 250 270 Reversed; 1132 | #X text 250 246 Normal; 1133 | #X text 359 35 Bang when the sample has ended. We detect the end of 1134 | the sample with [threshold~ 0.9999] \, however \, when the sample is 1135 | played in reverse \, it would trigger this instantly. We need to detect 1136 | when the sample is playing in reverse so that we can use [threshold~ 1137 | 0.0001] to bang the end of the sample. We detect if the sample is reversed 1138 | by checking if the pitch of the phasor~ is negative.; 1139 | #X text 367 192 If loop is set to off \, we also need to mute the audio 1140 | from the phasor when the sample has ended.; 1141 | #X obj 73 401 t b b; 1142 | #X obj 27 401 t b b; 1143 | #X obj 43 424 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 1144 | -1; 1145 | #X obj 112 423 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 1146 | -1 -1; 1147 | #X obj 27 352 spigot; 1148 | #X obj 73 373 spigot; 1149 | #X obj 112 318 r \$0-required-hack; 1150 | #X obj 28 579 t f f; 1151 | #X obj 128 619 spigot; 1152 | #X obj 195 534 sel 1; 1153 | #X msg 195 556 1; 1154 | #X obj 195 488 f; 1155 | #X floatatom 202 512 5 0 0 0 - - -, f 5; 1156 | #X obj 145 526 == 0; 1157 | #X obj 246 510 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 1158 | -1 -1; 1159 | #X obj 150 422 sel 0; 1160 | #X obj 162 443 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 1161 | -1 -1; 1162 | #X text 356 415 We also piggy back off of \$0-required-hack to get 1163 | a bang whenver a new trigger is recieved \, so we can reset the spigots 1164 | at the bottom.; 1165 | #X text 253 318 <-------------; 1166 | #X obj 195 19 inlet loop-on-off; 1167 | #X obj 26 18 inlet~; 1168 | #X floatatom 145 548 5 0 0 0 - - -, f 5; 1169 | #X text 359 503 This is a mess of spigots \, but since we are using 1170 | a phasor~ object \, we are constanly cycling from 0 to 1 (or 1 to 0 1171 | if reversed). When loop is set to OFF \, we need to send the bang -on-end 1172 | \, send a 0 out of the left outlet \, then finally turn off both the 1173 | left and right outlet. The phasor~ will keep cycling \, but the patch 1174 | won't be outputting anything anymore.; 1175 | #X text 360 594 When loop is ON \, we need to turn both outlet back 1176 | on \, and disable them from being turned off. This is controlled using 1177 | spigots after the 0 message box.; 1178 | #X text 253 418 <-------------; 1179 | #X text 253 538 <-------------; 1180 | #X text 356 319 When the phase is reset to 0 this causes the threshold~ 1181 | to trigger if the sample is being played in reverse. I tried setting 1182 | the phasor~ to 1 if the sample is in reverse \, but it still had this 1183 | problem. All this does is turn off the theshold~ outputs when the phasor~ 1184 | is being reset \, then 5ms later it turns them back on.; 1185 | #X obj 28 553 spigot; 1186 | #X obj 67 535 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 1187 | -1; 1188 | #X obj 27 240 threshold~ 0.999 0 0.5 0; 1189 | #X obj 73 271 threshold~ 0.001 0 0.5 0; 1190 | #X connect 1 0 43 0; 1191 | #X connect 1 0 44 0; 1192 | #X connect 2 0 3 0; 1193 | #X connect 4 0 8 0; 1194 | #X connect 5 0 6 0; 1195 | #X connect 6 0 9 0; 1196 | #X connect 6 0 11 1; 1197 | #X connect 7 0 6 0; 1198 | #X connect 8 0 5 0; 1199 | #X connect 8 1 7 0; 1200 | #X connect 9 0 10 1; 1201 | #X connect 10 0 46 0; 1202 | #X connect 11 0 45 0; 1203 | #X connect 16 0 1 0; 1204 | #X connect 16 1 19 0; 1205 | #X connect 16 1 24 0; 1206 | #X connect 17 0 1 0; 1207 | #X connect 17 1 18 0; 1208 | #X connect 17 1 24 0; 1209 | #X connect 20 0 17 0; 1210 | #X connect 21 0 16 0; 1211 | #X connect 22 0 20 1; 1212 | #X connect 22 0 21 1; 1213 | #X connect 22 0 31 0; 1214 | #X connect 23 0 24 1; 1215 | #X connect 23 0 2 1; 1216 | #X connect 23 1 2 0; 1217 | #X connect 24 0 0 0; 1218 | #X connect 25 0 26 0; 1219 | #X connect 26 0 24 1; 1220 | #X connect 26 0 2 1; 1221 | #X connect 27 0 25 0; 1222 | #X connect 27 0 28 0; 1223 | #X connect 27 0 29 0; 1224 | #X connect 27 0 30 0; 1225 | #X connect 29 0 37 0; 1226 | #X connect 29 0 43 1; 1227 | #X connect 31 0 26 0; 1228 | #X connect 31 0 32 0; 1229 | #X connect 35 0 27 0; 1230 | #X connect 36 0 11 0; 1231 | #X connect 36 0 10 0; 1232 | #X connect 43 0 23 0; 1233 | #X connect 45 0 20 0; 1234 | #X connect 46 0 21 0; 1235 | #X restore 689 797 pd detect-end-of-sample; 1236 | #X text 87 708 Create an array without the gui!; 1237 | #X obj 932 731 s \$0-required-hack; 1238 | #X obj 726 641 t b b b; 1239 | #X msg 957 684 0; 1240 | #X msg 913 705 1; 1241 | #X text 894 656 Used in detect-end-of-sample; 1242 | #X obj 913 685 del 5; 1243 | #X obj 726 619 t b b; 1244 | #X text 460 1017 Wrap around if we go past end; 1245 | #X text 498 1125 Finally play the sample; 1246 | #X text 318 120 Bang resets the phasor~ to 0; 1247 | #X obj 807 598 r \$0-loop-on-off-s; 1248 | #X text 38 1002 This is a stereo sample player designed for AUTOMATONISM. 1249 | ; 1250 | #X obj 521 96 threshold~ 0.99 0 1 0; 1251 | #X obj 521 74 inlet~ trig; 1252 | #X obj 104 109 cnv 5 5 5 empty empty TRIG 0 0 0 8 -262144 -226533 0 1253 | ; 1254 | #X obj 149 109 cnv 5 5 5 empty empty PITCH 0 0 0 8 -262144 -120682 1255 | 0; 1256 | #X msg 847 820 1 0 \, 0 1 1; 1257 | #X obj 847 842 vline~; 1258 | #X obj 847 864 outlet~; 1259 | #X text 906 865 Output trig on end; 1260 | #X obj 452 92 loadbang; 1261 | #X obj 134 188 bng 15 250 50 0 \$0-pitch-presets-1-s \$0-pitch-presets-1-r 1262 | -1 0 -6 0 10 -204800 -1 -1; 1263 | #X obj 149 188 bng 15 250 50 0 \$0-pitch-presets-2-s \$0-pitch-presets-1-r 1264 | empty -5 -6 0 10 -204800 -1 -1; 1265 | #X obj 164 188 bng 15 250 50 0 \$0-pitch-presets-3-s \$0-pitch-presets-1-r 1266 | 0 5 -6 0 10 -204800 -1 -1; 1267 | #X obj 179 188 bng 15 250 50 0 \$0-pitch-presets-4-s \$0-pitch-presets-1-r 1268 | empty -1 -6 0 10 -204800 -1 -1; 1269 | #X obj 194 188 bng 15 250 50 0 \$0-pitch-presets-5-s \$0-pitch-presets-1-r 1270 | 1 5 -6 0 10 -204800 -1 -1; 1271 | #X obj 209 188 bng 15 250 50 0 \$0-pitch-presets-5-s \$0-pitch-presets-1-r 1272 | empty 30 7 0 10 -204800 -1 -1; 1273 | #X obj 119 188 bng 15 250 50 0 \$0-pitch-presets--2-s \$0-pitch-presets--2-s 1274 | empty 0 -6 0 10 -204800 -1 -1; 1275 | #X obj 224 188 bng 15 250 50 0 \$0-pitch-presets-5-s \$0-pitch-presets-1-r 1276 | 2 5 -6 0 10 -204800 -1 -1; 1277 | #X obj 104 188 bng 15 250 50 0 \$0-pitch-presets-1-s \$0-pitch-presets-1-r 1278 | -2 0 -6 0 10 -204800 -1 -1; 1279 | #N canvas 591 509 450 351 apply-pitch-presets 0; 1280 | #X obj 191 232 f; 1281 | #X obj 191 255 s \$0-sampler-pitch-r; 1282 | #X obj 48 43 inlet; 1283 | #X obj 87 43 inlet; 1284 | #X obj 126 43 inlet; 1285 | #X obj 165 43 inlet; 1286 | #X obj 204 43 inlet; 1287 | #X obj 243 43 inlet; 1288 | #X obj 282 43 inlet; 1289 | #X obj 321 43 inlet; 1290 | #X obj 360 43 inlet; 1291 | #X msg 48 135 -2; 1292 | #X msg 87 110 -1.5; 1293 | #X msg 126 135 -1; 1294 | #X msg 165 109 -0.5; 1295 | #X msg 204 134 0; 1296 | #X msg 243 109 0.5; 1297 | #X msg 282 133 1; 1298 | #X msg 321 110 1.5; 1299 | #X msg 360 135 2; 1300 | #X connect 0 0 1 0; 1301 | #X connect 2 0 11 0; 1302 | #X connect 3 0 12 0; 1303 | #X connect 4 0 13 0; 1304 | #X connect 5 0 14 0; 1305 | #X connect 6 0 15 0; 1306 | #X connect 7 0 16 0; 1307 | #X connect 8 0 17 0; 1308 | #X connect 9 0 18 0; 1309 | #X connect 10 0 19 0; 1310 | #X connect 11 0 0 0; 1311 | #X connect 12 0 0 0; 1312 | #X connect 13 0 0 0; 1313 | #X connect 14 0 0 0; 1314 | #X connect 15 0 0 0; 1315 | #X connect 16 0 0 0; 1316 | #X connect 17 0 0 0; 1317 | #X connect 18 0 0 0; 1318 | #X connect 19 0 0 0; 1319 | #X restore 304 203 pd apply-pitch-presets; 1320 | #X obj 104 303 nbx 6 14 -1e+037 1e+037 0 0 \$0-sample-rate-s \$0-sample-rate-r 1321 | SAMPLE_RATE 65 7 0 10 -262144 -1 -1 44100 256; 1322 | #X obj 292 250 loadbang; 1323 | #X msg 292 272 44100; 1324 | #X obj 292 294 s \$0-sample-rate-r; 1325 | #X obj 79 553 r \$0-sample-rate-s; 1326 | #X obj 227 609 f 44100; 1327 | #X obj 812 826 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 1328 | -1 -1; 1329 | #X obj 236 328 cnv 5 5 5 empty empty END_TRIG 0 0 0 8 -262144 -226533 1330 | 0; 1331 | #X obj 79 575 pipe 5; 1332 | #X obj 122 735 array define \$0-sample-L; 1333 | #X obj 122 755 array define \$0-sample-R; 1334 | #X obj 687 491 pack 0 1; 1335 | #X obj 104 118 bng 15 50 50 0 empty \$0-trig-r empty 17 7 0 10 -262144 1336 | -226533 -1; 1337 | #X obj 591 118 s \$0-trig-r; 1338 | #X obj 261 305 bng 15 50 50 0 empty \$0-end-trig-r empty 17 7 0 10 1339 | -262144 -226533 -1; 1340 | #X obj 866 800 s \$0-end-trig-r; 1341 | #X text 76 976 _megalon_ 2017 v1.3; 1342 | #X text 343 272 <-- DEFAULT SAMPLE RATE; 1343 | #X obj 104 147 cnv 5 5 5 empty \$0-sample-display-name SAMPLER 0 0 1344 | 0 12 -262144 -66577 0; 1345 | #X connect 7 0 33 0; 1346 | #X connect 8 0 61 0; 1347 | #X connect 9 0 36 0; 1348 | #X connect 10 0 116 0; 1349 | #X connect 10 1 9 1; 1350 | #X connect 11 0 70 0; 1351 | #X connect 11 0 71 0; 1352 | #X connect 12 0 13 0; 1353 | #X connect 13 0 35 0; 1354 | #X connect 17 0 29 0; 1355 | #X connect 17 0 78 0; 1356 | #X connect 28 0 33 0; 1357 | #X connect 29 0 12 0; 1358 | #X connect 33 0 8 0; 1359 | #X connect 35 0 11 0; 1360 | #X connect 37 0 122 0; 1361 | #X connect 39 0 11 1; 1362 | #X connect 41 0 43 0; 1363 | #X connect 43 0 44 0; 1364 | #X connect 44 0 42 0; 1365 | #X connect 52 0 17 0; 1366 | #X connect 52 0 78 1; 1367 | #X connect 53 0 54 0; 1368 | #X connect 55 0 52 0; 1369 | #X connect 56 0 55 1; 1370 | #X connect 57 0 58 0; 1371 | #X connect 57 0 63 0; 1372 | #X connect 61 0 10 0; 1373 | #X connect 61 1 38 0; 1374 | #X connect 62 0 60 0; 1375 | #X connect 64 0 67 1; 1376 | #X connect 65 0 52 1; 1377 | #X connect 66 0 67 0; 1378 | #X connect 67 0 55 0; 1379 | #X connect 68 0 12 1; 1380 | #X connect 69 0 13 1; 1381 | #X connect 70 0 26 0; 1382 | #X connect 71 0 40 0; 1383 | #X connect 72 0 86 0; 1384 | #X connect 73 0 17 1; 1385 | #X connect 74 0 75 0; 1386 | #X connect 75 0 29 1; 1387 | #X connect 77 0 78 2; 1388 | #X connect 77 1 74 0; 1389 | #X connect 78 0 29 1; 1390 | #X connect 78 1 96 0; 1391 | #X connect 78 1 117 0; 1392 | #X connect 78 1 126 0; 1393 | #X connect 81 0 85 0; 1394 | #X connect 81 1 73 0; 1395 | #X connect 81 2 82 0; 1396 | #X connect 82 0 80 0; 1397 | #X connect 83 0 80 0; 1398 | #X connect 85 0 83 0; 1399 | #X connect 86 0 81 0; 1400 | #X connect 86 1 75 0; 1401 | #X connect 90 0 77 0; 1402 | #X connect 92 0 32 0; 1403 | #X connect 92 0 124 0; 1404 | #X connect 93 0 92 0; 1405 | #X connect 96 0 97 0; 1406 | #X connect 97 0 98 0; 1407 | #X connect 100 0 32 0; 1408 | #X connect 101 0 110 2; 1409 | #X connect 102 0 110 3; 1410 | #X connect 103 0 110 4; 1411 | #X connect 104 0 110 5; 1412 | #X connect 105 0 110 6; 1413 | #X connect 106 0 110 7; 1414 | #X connect 107 0 110 1; 1415 | #X connect 108 0 110 8; 1416 | #X connect 109 0 110 0; 1417 | #X connect 112 0 113 0; 1418 | #X connect 113 0 114 0; 1419 | #X connect 115 0 119 0; 1420 | #X connect 116 0 9 0; 1421 | #X connect 119 0 116 0; 1422 | #X connect 122 0 56 0; 1423 | #X coords 0 -1 1 1 180 235 2 100 100; 1424 | --------------------------------------------------------------------------------