9.4 Ticchettio

# Ticchettio

Una cosa che ti troverai a fare spesso programmando live è utilizzare gli anelli. Inserirai note dentro anelli per le melodie, sleep per il ritmo, progressioni armoniche, variazioni di timbro, ecc...

## Ticchettio con anelli

Sonic Pi ha uno strumento *veramente* utile per lavorare con gli anelli all'interno dei `live_loop`. È chiamato sistema di ticchettio (tick system NdT). Nella sezione relativa agli anelli, abbiamo parlato del contatore che cresce costantemente, come, ad esempio, il numero di battiti. Il ticchettio implementa questa idea. Ci permette di usare il *ticchettio con gli anelli*. Vediamo un esempio:

```
counter = 0
live_loop :arp do
  play (scale :e3, :minor_pentatonic)[counter], release: 0.1
  counter += 1
  sleep 0.125
end
```

Questo equivale a:

```
live_loop :arp do
  play (scale :e3, :minor_pentatonic).tick, release: 0.1
  sleep 0.125
end
```

Qui stiamo utilizzando la scala minore pentatonica di E3 ticchettando con ogni elemento. Possiamo farlo utilizzando `.tick` alla fine della dichiarazione della scala. Questo tick è locale in relazione al live loop per cui ogni loop può avere il suo tick indipendente:

```
live_loop :arp do
  play (scale :e3, :minor_pentatonic).tick, release: 0.1
  sleep 0.125
end
live_loop :arp2 do
  use_synth :dsaw
  play (scale :e2, :minor_pentatonic, num_octaves: 3).tick, release: 0.25
  sleep 0.25
end
```

## Tick

You anche usare `tick` come una funzione standard e usare il suo valore come un indice:

```
live_loop :arp do
  idx = tick
  play (scale :e3, :minor_pentatonic)[idx], release: 0.1
  sleep 0.125
end
```

Tuttavia, è meglio chiamare `.tick` alla fine. La funzione `tick` viene usata quando vuoi fare cose particolari con il valore di tick e quando vuoi usare il valore dei tick per altre cose rispetto all'indice negli anelli.


## Look (Guarda)

La cosa magica riguardo tick è che non solo restituisce un nuovo indice (o il valore dell'anello a quell'indice) ma fa in modo che quando viene chiamato successivamente, restituirà il valore successivo. Dai un'occhiata agli esempi nella documentazione relativa a `tick` per capire come lavorarci. A volte può capitare di voler vedere il valore di tick in quel momento senza *incrementarlo*. Questo è possibile grazie alla funzione `look`. Puoi chiamare `look` come una funzione standard oppure aggiungendo `.look` alla fine di un anello.

## Nominare i tick

Infine, a volte hai bisogno di avere più di un tick per live loop. Questo può essere fatto assegnando un nome ai tick:

```
live_loop :arp do
  play (scale :e3, :minor_pentatonic).tick(:foo), release: 0.1
  sleep (ring 0.125, 0.25).tick(:bar)
end
```

Qui usiamo due tick: uno per le note da suonare e un altro per il tempo di sleep. Siccome sono entrambi all'interno dello stesso live loop, per tenerli separati dobbiamo assegnargli nomi unici. È lo stesso identico procedimento che abbiamo visto nel nominare i `live_loop`: usiamo un simbolo anticipato da `:`. Nell'esempio qui sopra, abbiamo chiamato un tick `:foo` e l'altro `:bar`. Se vogliamo usare `look` dobbiamo chiamarli col nome corretto.

## Non renderlo troppo complicato

Gran parte della potenza di questo sistema di tick non è utile quando stai cominciando. Non provare a imparare tutto quello di cui abbiamo parlato in questa sezione. Per il momento concentrati sul ticchettio all'interno di uno stesso anello. Questo sarà sufficiente per darti la gioia di usare i tick all'interno dei tuoi `live_loop`.

Dai un'occhiata alla documentazione alla voce `tick`, troverai molti esempi a riguardo!
