# Live Coding (Programació en viu)

Un dels aspectes més emocionants de Sonic Pi és que et permet escriure i modificar codi en viu per fer música, de la mateixa manera que ho faries tocant una guitarra en un concert. Això significa que amb una mica de pràctica podràs fer música amb Sonic Pi a l’escenari.

## Obri la teua ment

Abans d’entrar en detalls de com funciona Sonic Pi en la resta d’aquest tutorial, m’agradaria ensenyar-te què és programar en directe. No et preocupes si no ho entens massa (o gens). Simplement seu i gaudeix…

## 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?