1.1 Live-kodning

# Live-kodning

En av de med spännande sakerna med Sonic Pi är att den låter dig skriva och *förändra koden live* när du gör musik, precis som när du uppträder live med en gitarr. Så om du övar lite så kan du ta med dig Sonic Pi upp på scenen när du kör ett "gig".

## Öppna ditt sinne

Innan vi går in på djupet hur Sonic Pi fungerar i resten av denna manual så skulle jag vilja att du får uppleva hur det är att live-koda. Du behöver inte förstå allt ännu, håll bara i dig så startar vi äventyret ...

## En live-slinga

Låt oss börja, kopiera följande program till en tom buffert ovanför:

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

Tryck nu på `Kör`-knappen och du kommer höra en skön, snabb bastrumma som dunkar på. Om du vill stoppa ljudet, kan du när som helst trycka på `Stopp`-knappen. Tryck inte på den riktigt än...Följ istället dessa steg:

1. Se till att ljudet från bastrumman fortfarande kör
2. Ändra på värdet för `sleep` från `0.5` till något högre, exempelvis `1`.
3. Tryck på `Kör`-knappen igen
4. Notera hur tempot på trumman har förändrats.
5. Slutligen, *kom ihåg detta ögonblick*, det är första gången du live-kodar med Sonic Pi, men troligtvis inte den sista...

Ok, det var väl rätt enkelt. Låt oss mixa in något annat också. Ovanför `sample :bd_haus` lägg till raden `sample :ambi_choir, rate: 0.3`. Koden skall nu se ut så här:

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

Så, dags att leka runt lite. Ändra siffrorna - vad händer när du skriver in höga, låga eller negativa värden? Se vad som händer när du ändrar värdet på `rate:` för `:ambi_choir'  lite grann (säg till `0.29`). Vad händer om du väljer en riktigt litet värde på `sleep`?  Se om du kan få den att gå så snabbt att körningen avslutas med ett felmeddelande för att datorn inte kan hänga med (om det händer, välj bara ett större värde på `sleep` och tryck på `Kör` igen).

Pröva att kommentera ut en av `sample`-raderna genom att skriva in ett `#`-tecken i början av raden:

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

Notera hur denna rad hoppas över av datorn, så att vi inte hör den. Detta kallas för en kommenterad rad. I Sonic Pi kan vi använda kommentarer för att ta bort och lägga till saker då man mixar.

Låt mig avslutningsvis ge dig något kul att leka med. Ta koden nedan och kopiera den till en ledig buffert. Du behöver inte försöka förstå exakt vad den gör, förutom att det finns två slingor - så två saker kör runt samtidigt. Gör nu det du är bäst på - experimentera och pröva dig fram. Här är lite förslag:

* Testa att ändra de blåfärgade `rate:`-värdena och hör hur det samplade ljudet förändras.
* Pröva att ändra värdena för `sleep`-tiderna och hör att båda slingorna kan köra runt med olika hastighet.
* Pröva att avkommentera sample-raden (ta bort `#`-tecknet) och njut av hur en gitarr som spelas baklänges låter.
* Nu kan du försöka ändra någon av de blåfärgade 'mix:'-värdena till tal mellan `0` (inte med i mixen) och `1` (helt med i mixen).

Kom ihåg att trycka på `Kör`-knappen och du kommer höra förändringen nästa gång slingan börjar om. Det är ingen fara om du trasslar till det och det inte fungerar längre - tryck på `Stopp`, ta bort koden i bufferten och klistra in en ny kopia av koden, så är du klar att jamma loss igen. Det är genom att göra misstag som man lär sig snabbast...


```
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
```

Fortsätt gärna med att spela och experimentera tills din nyfikenhet på hur detta egentligen fungerar tar överhanden och du börjar fundera på vad mer du kan göra med det. Du är nu så förberedd att du är färdig att ta del av resten av handboken.

Så, vad väntar du på...
