-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path06-funzioni-2.tidal
97 lines (69 loc) · 2.98 KB
/
06-funzioni-2.tidal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
-- Ancora funzioni!
-- Finora abbiamo lavorato con un solo pattern alla volta. Come possiamo averne di più allo stesso momento? Usiamo stack:
d1 $ stack [sound "bd sn", sound "cp*3", sound "hh*8"]
d1
$ stack
[sound "bd sn",
sound "cp*3",
sound "hh*8"]
-- stack prende come argomento una lista di pattern, e li combina così da ottenere un solo pattern che è la "somma" di tutta la lista.
-- possiamo applicare funzioni all'intera stack o ai singoli pattern che ne fanno parte:
d1
$ every 3 (iter 4)
$ stack
[fast 2 $ sound "bd sn",
slow "<1 2>" $ sound "cp*3",
sound "hh*8" # speed 2]
-- se invece di avere i pattern tutti assieme vogliamo alternare tra di essi, possiamo usare cat (o randcat, la versione randomizzata):
d1
$ cat
[fast 2 $ sound "bd sn",
slow "<1 2>" $ sound "cp*3",
sound "hh*8" # speed 2]
d1
$ randcat
[fast 2 $ sound "bd sn",
slow "<1 2>" $ sound "cp*3",
sound "hh*8" # speed 2]
-- vediamo altri modi di moltiplicare i suoni disponibili:
-- superimpose aggiunge un'altra versione di un pattern sopra al pattern stesso, con applicata una funzione:
d1
$ superimpose (fast 2)
$ sound "bd sn hh hh"
d1
$ superimpose (# speed 2)
$ sound "bd sn hh hh"
-- una funzione più complicata è stutWith. vediamone un uso semplice:
d1
$ stutWith 4 (1/8) id
$ sound "bd sn"
-- usato così, stutWith è una sorta di delay. Il primo argomento indica il numero di ripetizioni (3, oltre all'evento originario); il secondo indica quanto tempo dista ogni ripetizione dalla precedente (un ottavo di ciclo); il terzo indica una funzione da applicare a ogni ripetizione (in questo caso abbiamo scelto la funzione identità, che non ha nessun effetto).
-- un paio di cose da notare:
-- il primo argomento è patternabile (possiamo variare ciclicamente tra varie quantità di ripetizioni)
-- il secondo argomento può anche essere 0 (il che permette di creare dei 'cluster' di suoni), o anche essere negativo (il che permette a Tidal di leggere nel futuro)
d1
$ stutWith 4 (1/8) (|* speed 1.5)
$ sound "bd sn"
-- qui abbiamo *moltiplicato* la speed dei campioni per 1.5 a ogni ripetizione. Abbiamo a disposizione altri operatori come questo, ad esempio |+ e |- .
-- qui usiamo un tempo di delay nullo e saliamo di un'ottava a ogni ripetizione, così da avere uno stack di note:
d1
$ stutWith 4 0 (|+ note 12)
$ sound "arpy"
-- arpeggiate prende tutti gli eventi che hanno luogo nello stesso momento e li distribuisce equamente nel tempo.
-- partendo da:
d1
$ stutWith "<4 8 12>" 0 (|+ note 7)
$ sound "arpy*2"
-- compito per i prossimi 5 minuti: capire perché questo pattern funziona così
d1
$ arpeggiate
$ stutWith "<4 8 12>" 0 (|+ note 7)
$ sound "arpy*2"
-- ovviamente non siamo limitati a utilizzare parametri di controllo come funzione! qualunque altra cosa va bene:
d1
$ stutWith 4 0 (fast (slow 3 $ "2 1.5"))
$ sound "bd sn"
-- qui ci sono quattro versioni del pattern, ognuna delle quali è veloce (slow 3 $ "2 1.5") volte la precedente.
d1
$ stutWith 4 0 (fast (slow 8 $ range 1 2 $ sine))
$ sound "bd sn"