diff --git a/Corso_2/addN.pd b/Corso_2/addN.pd new file mode 100644 index 0000000..c044ff3 --- /dev/null +++ b/Corso_2/addN.pd @@ -0,0 +1,19 @@ +#N canvas 1041 206 707 324 12; +#X obj 73 184 + \$1; +#X floatatom 73 149 5 0 0 0 - - -; +#X floatatom 73 209 5 0 0 0 - - -; +#X obj 73 114 inlet; +#X obj 73 233 outlet; +#X obj 246 35 f \$0; +#X floatatom 246 59 5 0 0 0 - - -; +#X obj 246 4 loadbang; +#X text 301 34 la variabile \$0 si riferisce al numero univoco che +pd assegna d ogni abstraction; +#X text 130 179 \$1 assume il valore del primo argomento con cui è +creata questa abstraction; +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 2 0 4 0; +#X connect 3 0 1 0; +#X connect 5 0 6 0; +#X connect 7 0 5 0; diff --git a/Corso_2/bpmToMs.pd b/Corso_2/bpmToMs.pd new file mode 100644 index 0000000..47929b0 --- /dev/null +++ b/Corso_2/bpmToMs.pd @@ -0,0 +1,18 @@ +#N canvas 170 468 347 336 12; +#X obj 31 257 /; +#X msg 31 218 60000; +#X floatatom 31 127 5 0 0 1 bpm - -; +#X obj 31 177 t b f; +#X floatatom 83 219 5 0 0 0 - - -; +#X obj 31 299 outlet; +#X msg 31 59 60; +#X obj 31 28 loadbang; +#X connect 0 0 5 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 3 1 4 0; +#X connect 4 0 0 1; +#X connect 6 0 2 0; +#X connect 7 0 6 0; +#X coords 0 -1 1 1 100 60 1 20 100; diff --git a/Corso_2/main.pd b/Corso_2/main.pd new file mode 100644 index 0000000..76a4468 --- /dev/null +++ b/Corso_2/main.pd @@ -0,0 +1,319 @@ +#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; diff --git a/Corso_2/myCounter.pd b/Corso_2/myCounter.pd new file mode 100644 index 0000000..86219f7 --- /dev/null +++ b/Corso_2/myCounter.pd @@ -0,0 +1,26 @@ +#N canvas 540 469 404 476 12; +#X obj 113 344 f; +#X obj 151 346 + 1; +#X msg 131 315 0; +#X obj 113 381 mod 4; +#X obj 113 261 metro 1000; +#X obj 117 130 tgl 24 0 empty empty on/off 30 12 0 10 -258113 -1 -1 +1 1; +#X floatatom 118 167 5 0 0 1 ms - -; +#X obj 131 291 sel 0; +#X obj 113 423 outlet; +#X obj 257 102 loadbang; +#X msg 257 135 500; +#X connect 0 0 1 0; +#X connect 0 0 3 0; +#X connect 1 0 0 1; +#X connect 2 0 0 1; +#X connect 3 0 8 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 5 0 7 0; +#X connect 6 0 4 1; +#X connect 7 0 2 0; +#X connect 9 0 10 0; +#X connect 10 0 6 0; +#X coords 0 -1 1 1 100 100 1 100 100; diff --git a/README.md b/README.md index 8b85ee5..9f5d74b 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,12 @@ - Counter - Sequencer - Primo Oscillatore + +## Seminario n°2 07/04/21 +#### Argomenti trattati: +- Depth First +- Array +- Liste e messaggi +- Rampe +- Variabili (dollarSigns) +- Sequencer "analogico" diff --git a/sources/samples/hihat.wav b/sources/samples/hihat.wav new file mode 100644 index 0000000..cff7e00 Binary files /dev/null and b/sources/samples/hihat.wav differ diff --git a/sources/samples/kick-1.wav b/sources/samples/kick-1.wav new file mode 100644 index 0000000..e30db12 Binary files /dev/null and b/sources/samples/kick-1.wav differ diff --git a/sources/samples/kick.wav b/sources/samples/kick.wav new file mode 100644 index 0000000..7e76768 Binary files /dev/null and b/sources/samples/kick.wav differ diff --git a/sources/samples/snare-1.wav b/sources/samples/snare-1.wav new file mode 100644 index 0000000..f5b7dfe Binary files /dev/null and b/sources/samples/snare-1.wav differ