1.1 Codificació en viu

# Live Coding (Programació en viu)

Un dels aspectes més emocionants de Sonic Pi és que et permet escriure i *modificar el codi en directe* per fer música, igual que podries actuar en directe amb una guitarra. Això significa que, amb una mica de pràctica, pots portar Sonic Pi a l'escenari i actuar-hi.

## Allibera la teva ment

Abans d'entrar en els detalls reals de com funciona Sonic Pi a la resta d'aquest tutorial, m'agradaria mostrar-te l’experiència de codificar en viu. No et preocupis si no entens gaire (o res) d'això. Només es tracta de mantenir-te al teu seient i gaudir...

## Un live loop (bucle en directe)

Comencem! Copia el codi següent en un buffer buit:

```
live_loop :flibble do
  sample :bd_haus, rate: 1
  sleep 0.5
end
```

Ara, prem el botó `Run` (Executa) i escoltaràs un so greu de bombo amb ritme ràpid. Si en qualsevol moment desitges aturar el so, només cal prémer el botó `Stop` (Atura). Però no l'atures encara... Abans, segueix aquestos passos:

1. Assegura't que el so de bombo segueix sonant
2. Canvia el valor `sleep` de `0.5` a una mica més alt, per exemple `1`.
3. Prem novament el botó `Run`
4. Fixa't com ha canviat la velocitat del bombo.
5. Ja per acabar, *recorda aquest moment*. Aquesta és la primera vegada que has programat en temps real amb Sonic Pi i de ben segur que no serà l'última...

D'acord, això ha sigut bastant senzill. Afegim alguna cosa més a la mescla. Damunt de `sample :bd_haus, afegeix la línia `sample :ambi_choir, rate: 0.3`. El teu codi hauria de ser així:

```
live_loop :flibble do
  sample :ambi_choir, rate: 0.3
  sample :bd_haus, rate: 1
  sleep 1
end
```

Ara, juguem-hi. Canvia els valors. Què passa quan fas servir valors alts, baixos o negatius? Veges què passa quan canvies el valor de `rate:`del sample `:ambi_choir`lleugerament (diguem-ne a `0.29`). Què passa si tries un valor per a `sleep`realment xicotet? Prova a fer-lo anar tan ràpid que el teu ordinador es penge amb un error (si passa això, simplement tria un valor més gran per a `sleep` i prem `Run`novament).

Intenteu comentar una de les línies del `sample`afegint un `#` a l'inici:

```
live_loop :flibble do
  sample :ambi_choir, rate: 0.3
#  sample :bd_haus, rate: 1
  sleep 1
end
```

Adona't com li diu a l'ordinador que ho ignore, de manera que no ho escoltem. Açò s'anomena "comentar". A Sonic Pi podem fer servir comentaris per treure o afegir coses a la mescla.

Finalment, et deixo una cosa divertida amb la que jugar. Pren el codi següent i copia'l a un buffer buit. De moment, no intentes comprendre molt més que el fet que hi ha dos bucles - de manera que hi ha dos coses que sonen al mateix temps. Ara, fes el que millor saps: experimenta i juga. Ací tens algunes suggerències:

* Prova a canviar el valor en blau de `rate:`per tal d'escoltar com canvia el sample.
* Prova a canviar els temps de `sleep`i para atenció a com ambdós bucles poden donar voltes a diferents velocitats.
* Prova de descomentar la línia d'exemple (esborra el `#`) i gaudeix del so de la guitarra tocada marxa enrere.
* Prova de canviar qualsevol dels valors blaus de `mix:` a números entre `0` (fora de la mescla) i `1` (totalment en la mescla).

Recorda que has de prémer `Run` per tal d'escoltar el canvi la propera vegada que es reproduïsca el bucle. Si acaba sent un embolic, no et preocupes - prem `Stop`, esborra el codi del buffer i enganxa una còpia nova de l'exemple per tornar a començar. Cometent errades és com aprendràs més ràpidament.


```
live_loop :guit do
  with_fx :echo, mix: 0.3, phase: 0.25 do
    sample :guit_em9, rate: 0.5
  end
#  sample :guit_em9, rate: -0.5
  sleep 8
end
live_loop :boom do
  with_fx :reverb, room: 1 do
    sample :bd_boom, amp: 10, rate: 1
  end
  sleep 8
end
```

Ara, segueix tocant i experimentant fins que despertes la teua curiositat sobre com funciona tot açò i et preguntes què més pots fer. Ja estàs preparat per llegir la resta del tutorial.

A què esperes?
