# Live-kodning

Et af de mest interessante aspekter af Sonic Pi er, at det giver dig mulighed for at skrive og ændre kode live for at lave musik, præcis som man måske vil spille live på en guitar. Det betyder at når du har øvet dig, kan du tage Sonic Pi med på scenen og spille med det.

## Frigør dine tanker

Før vi rigtig går i detaljerne med hvordan Sonic Pi virker i resten af denne vejledning, vil jeg gerne give dig en oplevelse af, hvordan det er at kode live. Bliv ikke urolig hvis du ikke forstår meget (hvis noget) af koden. Hold fast i stolen og nyd det…

## En live-løkke

Lad os starte! Kopier det følgende kode ind i et tomt kodefelt ovenfor:

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

Hvis du nu trykker på `Run`-knappen, vil du høre lyden af en hurtig stortromme. Hvis du ønsker at stoppe, trykker du på `Stop`-knappen. Men tryk ikke på den endnu… følg i stedet disse skridt:

1. Sørg for, at lyden af stortrommen stadig kører
2. Prøv at ændre værdien for `sleep` fra `0.5` til en højere værdi, fx `1`.
3. Tryk på `Run`-knappen igen
4. Læg mærke til, hvordan trommelydens hastighed har ændret sig.
5. Til sidst, husk øjeblikket, dette er første gang du har live-kodet med Sonic Pi, men sandsynligvis ikke den sidste…

Okay, det var enkelt nok. Lad os tilføje noget mere. Over `sample: bd_haus` tilføj linjen `sample :ambi_choir, rate: 0.3`. Din kode skal se sådan ud:

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

Tid til at lege lidt. Skift satserne - hvad sker der når du bruger store værdier, små værdier eller negative værdier? Se hvad der sker når du ændrer `rate:`-værdien for lydklippet `:ambi_choir` en smule (fx til `0.29`). Hvad sker der hvis du vælger en meget kort `sleep`-værdi? Se om du kan få det til at gå så hurtigt at din computer vil stoppe med en fejl fordi den ikke kan følge med (hvis det sker, skal du bare vælge en længere `sleep`-tid og trykke på `Run` igen).

Prøv at udkommentere en af `sample`-linjerne ved at tilføje et `#` i starten af linjen:

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

Bemærk hvordan linjen bliver ignoreret af computeren, så vi ikke hører den. Dette kaldes en kommentar. I Sonic Pi kan vi bruge kommentarer til at fjerne og tilføje dele mens man mixer.

Lad mig afslutningsvis give dig lidt sjovt at lege med. Tag koden herunder, og kopier den til et ekstra kodefelt. Du behøver ikke at forstå præcis hvad koden gør, andet end at der er to løkker - to dele der bliver gentaget samtidig. Gør nu det, du gør bedst - eksperimentér og leg. Her er nogle forslag:

- Prøv at ændre den blå `rate:`-værdi og hør hvordan lydklippet ændrer sig.
- Prøv at ændre `sleep`-tiderne og hør efter hvordan begge løkker kan køre rundt på forskellige hastigheder.
- Prøv at fjerne kommenteringen på `sample`-linjen (fjern `#`) og nyd lyden af guitaren der spiller baglæns.
- Prøv at ændre nogen af de blå `mix:`-værdier til tal mellem `0` (ikke med i mixet) og `1` (helt med i mixet).

Husk at trykke `Run`. Så vil du høre ændringen næste gang løkken starter. Hvis du ender med noget rod, så bare rolig: Tryk `Stop`, slet koden i kodefeltet og sæt en frisk kopi ind. Så er du klar til at lave musik igen. At lave fejl er en af de bedste måder at lære på…

    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

Bliv ved med at eksperimentere indtil du bliver nysgerrig på hvordan det hele faktisk virker, og du begynder at spekulere på hvad ellers du kan lave. Nu er du klar til at følge resten af vejledningen.

Så hvad venter du på…?