#N canvas 0 61 1920 983 12; #X obj 40 277 bpmToMs; #X floatatom 40 359 5 0 0 0 - - -; #X obj 193 495 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 193 450 sel 0 1 2 3, f 35; #X obj 161 277 myCounter; #N canvas 0 50 450 250 (subpatch) 0; #X array mySequence 8 float 3; #A 0 1442.85 2188.54 2644.3 3058.53 3514.23 4259.93 4674.21 5295.62 ; #X coords 0 6000 8 200 200 140 1 0 0; #X restore 1325 339 graph; #X obj 1647 764 dac~; #X floatatom 1672 699 5 0 1 0 - - -; #X floatatom 1648 435 5 0 0 0 - - -; #X msg 1719 726 0; #X msg 1708 479 0; #N canvas 189 137 956 554 dephtFirst 0; #X obj 137 215 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 58 283 23; #X msg 162 287 10; #X obj 162 311 + 2; #X obj 162 335 + 7; #X obj 162 359 * 10; #X floatatom 162 383 5 0 0 0 - - -; #X obj 58 307 + 1; #X floatatom 58 331 5 0 0 0 - - -; #X floatatom 245 288 5 0 0 0 - - -; #X floatatom 162 213 5 0 0 0 - - -; #X obj 162 413 print primo; #X obj 245 313 print secondo; #X obj 460 208 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 485 285 23; #X msg 699 291 10; #X obj 699 315 + 2; #X obj 699 339 + 7; #X obj 699 363 * 10; #X floatatom 699 394 5 0 0 0 - - -; #X obj 485 309 + 1; #X floatatom 485 333 5 0 0 0 - - -; #X obj 485 238 trigger bang float bang, f 31; #X floatatom 592 283 5 0 0 0 - - -; #X floatatom 485 206 5 0 0 0 - - -; #X obj 699 427 print primo; #X obj 592 428 print secondo; #X obj 485 426 print terzo; #X obj 58 354 print terzo; #X text 73 47 quando un bang si dirama \, attraversa ogni percorso fino in fondo prima di eseguire il successivo \; l'ordine dipende dall'ordine di collegamento (indipendentemente dalla lunghezza del "percorso" \; \; la box trigger rende l'ordine esplicito e chiaro; #X connect 0 0 10 0; #X connect 1 0 7 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 11 0; #X connect 7 0 8 0; #X connect 8 0 28 0; #X connect 9 0 12 0; #X connect 10 0 2 0; #X connect 10 0 9 0; #X connect 10 0 1 0; #X connect 13 0 24 0; #X connect 14 0 20 0; #X connect 15 0 16 0; #X connect 16 0 17 0; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 25 0; #X connect 20 0 21 0; #X connect 21 0 27 0; #X connect 22 0 14 0; #X connect 22 1 23 0; #X connect 22 2 15 0; #X connect 23 0 26 0; #X connect 24 0 22 0; #X restore 81 77 pd dephtFirst; #N canvas 1023 273 733 497 sampler 0; #N canvas 0 50 450 250 (subpatch) 0; #X array kick 27367 float 2; #X coords 0 1 27367 -1 200 140 1; #X restore 34 274 graph; #N canvas 0 50 450 250 (subpatch) 0; #X array snare 9568 float 2; #X coords 0 1 9568 -1 200 140 1; #X restore 257 278 graph; #N canvas 0 50 450 250 (subpatch) 0; #X array hihat 5566 float 2; #X coords 0 1 5566 -1 200 140 1; #X restore 484 279 graph; #X obj 32 24 loadbang; #X obj 32 52 t b b b; #X msg 55 118 read -resize ../sources/samples/snare-1.wav snare; #X msg 32 146 read -resize ../sources/samples/hihat.wav hihat; #X obj 55 215 soundfiler; #X msg 78 90 read -resize ../sources/samples/kick.wav kick; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 4 1 5 0; #X connect 4 2 8 0; #X connect 5 0 7 0; #X connect 6 0 7 0; #X connect 8 0 7 0; #X restore 240 735 pd sampler; #X obj 161 734 tabplay~; #X obj 160 850 *~ 0.2; #X obj 160 917 dac~; #X msg 193 586 set kick; #X msg 253 543 set hihat; #X msg 313 590 set snare; #X obj 253 497 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 314 499 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 374 500 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 161 636 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 161 418 t b f; #X msg 246 825 0.2; #X msg 246 853 0; #X text 284 837 volume; #X text 463 469 esempio esplicativo della "depth first" \; lo stesso float del counter viene separato in due eventi distinti attraverso la box "trigger" \; 1 prima seleziona lo strumento \; 2 poi esegue il campione \; \; (anche se sembra avvenire contemporaneamente); #N canvas 261 243 1175 689 gliArray 0; #N canvas 0 50 450 250 (subpatch) 0; #X array myFirstArray 10 float 3; #A 0 0.428566 0.685706 -0.0714289 -0.628566 0.0285701 0.228568 -0.0285722 -0.557138 0.128569 0.457137; #X coords 0 1 10 -1 200 140 1; #X restore 40 200 graph; #X obj 794 27 table hiddenArray; #X text 789 54 la box table crea un array "nascosto" graficamente; #X obj 41 416 tabread myFirstArray; #X obj 207 416 tabread~ myFirstArray; #X obj 38 505 tabwrite myFirstArray; #X obj 208 505 tabwrite~ myFirstArray; #X text 298 198 il grafico rappresenta i valori contenuti \; \; le x sono gli indici (la loro posizione) \; le y sono i valori \; \; PS \; - il range si modifica dalle "Properties" \; - i valori possono essere modificati interattivamente con il mouse; #X text 402 411 per leggere i valori (con messaggi float o segnali) ; #X text 403 502 per scrivere i valori (con messaggi float o segnali) ; #X text 37 31 l'array è un contenitore di valori multipli indicizzati \; \; quando si crea (ctrl-shift-A) dobbiamo: \; 1 assegnare un nome univoco \; 2 settare una dimensione (quantità di valori) \;; #X restore 242 77 pd gliArray; #N canvas 946 325 759 534 rampe 0; #X obj 251 286 line; #X msg 40 133 0.2; #X msg 83 134 1; #X msg 123 135 0; #X msg 308 127 0 1000; #X msg 251 129 1 750; #X floatatom 251 311 10 0 0 0 - - -; #X text 37 75 messaggi singoli \; --> jump al valore; #X text 245 73 liste: \; valoreDiDestinazione Tempo; #X text 489 77 combo \; jump e rampe in sequenza; #X msg 495 135 1 \, 0 1000; #X msg 580 137 0.5 \, 0 1500; #X connect 0 0 6 0; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; #X connect 4 0 0 0; #X connect 5 0 0 0; #X connect 10 0 0 0; #X connect 11 0 0 0; #X restore 517 79 pd rampe; #N canvas 637 158 849 479 liste 0; #X msg 54 90 25; #X msg 95 188 74 27 89; #X msg 100 286 74 27 \, 89; #X obj 54 398 print; #X text 180 179 più valori separati da uno spazio nei messaggi creano una lista (un messaggio :: più valori); #X text 193 293 la virgola spezza il messaggio in più messaggi; #X msg 102 315 74 \, 27 \, 89; #X connect 0 0 3 0; #X connect 1 0 3 0; #X connect 2 0 3 0; #X connect 6 0 3 0; #X restore 382 78 pd liste; #X obj 1647 727 *~ 0; #X obj 1646 653 osc~; #X obj 1077 693 *~; #X obj 1077 806 dac~; #X obj 1186 661 line; #X obj 1077 382 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 1077 511 f; #X obj 1113 511 + 1; #X obj 1077 538 mod 8; #X obj 1077 444 t b b, f 16; #X floatatom 1115 724 5 0 1 0 - - -; #X msg 1162 751 0; #X obj 1077 647 osc~; #X obj 1077 576 tabread mySequence; #X obj 1647 590 tabread~ mySequence; #X obj 1648 541 *~ 8; #X text 1694 434 speed (Hz); #X text 1745 478 restart (phase); #X floatatom 1137 385 5 0 0 0 - - -; #X text 1183 384 speed (ms); #X text 1205 734 volume; #X text 1758 708 volume; #X text 1308 258 l'indice per la lettura dell'array \; può essere gestito da messaggi float \; o da segnali audio; #X text 1332 518 due tipi di sequencer \; <--messages vs signal--> ; #X text 44 218 Esempi:; #X text 82 35 Argomenti trattati:; #X text 952 226 \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \;; #X text 209 150 __________________________________________________________ ; #X text 344 725 esempio di applicazione degli array: un campionatore \; (gli array possono salvare anche file audio); #X msg 922 65 \; pd dsp 1 \;; #X obj 922 27 loadbang; #X msg 1161 724 0.1; #X msg 1718 699 0.1; #X msg 1095 478 0; #X text 1132 478 restart (step); #X obj 1077 416 metro 125; #X msg 1186 628 1 \, 0 100; #X text 1265 628 <-- \; rampa sincronizzata con il bang \; per controllo dell'inviluppo; #X obj 1648 511 phasor~ 1; #X floatatom 199 822 5 0 1 0 - - -; #X obj 1075 751 *~ 0.1; #N canvas 687 316 897 601 dollarSigns 0; #X obj 35 377 addN 5; #X floatatom 35 342 5 0 0 0 - - -; #X floatatom 35 414 5 0 0 0 - - -; #X msg 42 47 \$1; #X text 90 47 nei messaggi raccolgono i valori ricevuti; #X floatatom 42 11 5 0 0 0 - - -; #X obj 42 200 print, f 6; #X msg 96 105 25 75 98; #X text 171 116 i.e. \; selezionano elementi di una lista ricevuta e ricompongono una nuova lista; #X text 117 369 le variabili nelle box oggetto si riferiscono agli argomenti con cui è creata l'abstraction (apri addN per vedere l'esempio) ; #X msg 96 130 \$3 \$1; #X connect 0 0 2 0; #X connect 1 0 0 0; #X connect 3 0 6 0; #X connect 5 0 3 0; #X connect 7 0 10 0; #X connect 10 0 6 0; #X restore 640 78 pd dollarSigns; #X connect 0 0 1 0; #X connect 2 0 16 0; #X connect 3 0 2 0; #X connect 3 1 19 0; #X connect 3 2 20 0; #X connect 3 3 21 0; #X connect 4 0 23 0; #X connect 7 0 31 1; #X connect 8 0 69 0; #X connect 9 0 31 1; #X connect 10 0 69 1; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 14 0 15 1; #X connect 16 0 13 0; #X connect 17 0 13 0; #X connect 18 0 13 0; #X connect 19 0 17 0; #X connect 20 0 18 0; #X connect 21 0 17 0; #X connect 22 0 13 0; #X connect 23 0 22 0; #X connect 23 1 3 0; #X connect 24 0 14 1; #X connect 25 0 14 1; #X connect 31 0 6 0; #X connect 31 0 6 1; #X connect 32 0 31 0; #X connect 33 0 71 0; #X connect 35 0 33 1; #X connect 36 0 66 0; #X connect 37 0 38 0; #X connect 37 0 39 0; #X connect 38 0 37 1; #X connect 39 0 44 0; #X connect 40 0 37 0; #X connect 40 1 67 0; #X connect 41 0 71 1; #X connect 42 0 71 1; #X connect 43 0 33 0; #X connect 44 0 43 0; #X connect 45 0 32 0; #X connect 46 0 45 0; #X connect 49 0 66 1; #X connect 61 0 60 0; #X connect 62 0 71 1; #X connect 63 0 31 1; #X connect 64 0 37 1; #X connect 66 0 40 0; #X connect 67 0 35 0; #X connect 69 0 46 0; #X connect 70 0 14 1; #X connect 71 0 34 0; #X connect 71 0 34 1; #X coords 0 983 1 982 500 60 0;