1.1 Koding på direkten

# Koding på direkten

En av de mest spennende aspektene ved Sonic Pi er at det lar deg skrive og *endre koden i sanntid*. Lag musikk, akkurat som du gjør med gitar. Med litt øvelse kan du faktisk ta med Sonic Pi på scenen og holde konsert med det.

## Frigjør tankene

Før vi kommer inn på de praktiske detaljene om hvordan Sonic Pi fungerer i fortsettelsen av denne opplæringen, vil jeg deg en erfaring av hva det er å kode i sanntid. Bli ikke bekymret hvis du ikke forstår mye (eller noe) av dette. Bare bli sittende og nyt…

## En levende løkke

La oss komme i gang. Kopier følgende kode inn i et tomt tekstfelt ovenfor:

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

Nå, trykk på "Kjør"-knappen og du vil høre en fin, rask basstromme som hamrer løs. Hvis du vil stoppe lyden kan du når som helst trykke på "Stopp"-knappen. Men ikke trykk riktig ennå... Følg disse trinnene videre:

1. Forsikre deg om at basstrommelyden fremdeles går
2. Endre verdien til `sleep` fra `0.5` til noe høyere, som for eksempel `1`.
3. Trykk på `Kjør`-knappen igjen
4. Legg merke til hvordan trommetakten endret seg.
5. Til slutt, *husk dette øyeblikket*, dette er første gang du har kodet i sanntid med Sonic Pi og det blir sannsynligvis ikke den siste…

OK, det var enkelt nok. La oss legge inn noe mer. Over `sample: bd_haus` legg til linjen `sample: ambi_choir, rate: 0,3`. Koden skal se slik ut:

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

Nå kan du leke deg litt. Endre verdiene, hva skjer når du bruker store, små eller negative verdier? Se hva som skjer hvis du endrer litt på `rate:`-verdien for `: ambi_choir`-lydklippet (til `0.29` for eksempel). Hva skjer hvis du velger en svært lav verdi for `sleep`? Se om du kan få det til å gå så hurtig at datamaskinen din stopper med en feilmelding fordi den ikke kan holde følge med tempoet (hvis det skjer, bare velg en større verdi for `sleep` og trykk `Kjør` igjen).

Prøv å kommentere ut en av `sample`-linjene ved å legge til en `#` på starten av linjen:

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

Legg merke til at den får maskinen til å hoppe over denne linjen, så vi ikke hører den. Dette kalles en kommentar. I Sonic Pi kan vi bruke kommentarer til å ta ut ting fra miksen, og legge dem til igjen.

Til slutt, la meg gi deg noe morsomt å leke med. Ta koden nedenfor, kopier den til et ledig hurtiglager. Du behøver ikke å forstå så mye av den, annet enn å se at det er to sløyfer - så to ting kjører samtidig. Nå, gjør det du gjør best - eksperimentér og lek. Her er noen forslag:

* Prøv å endre den blå `rate:`-verdien for å høre at lydkarakteren til klippet endres.
* Prøv å endre `sleep`-tiden og høre at begge løkkene kan spinne rundt med forskjellige hastigheter.
* Prøv å avkommentere sample-linjen (fjern `#`) og nyt lyden av gitaren spilt baklengs.
* Prøv å endre noen av de blå 'mix:'-verdiene til tall mellom '0' (borte fra miksen) og '1' (helt med i miksen).

Husk å trykke `Kjør` og du vil høre endringen neste gang sløyfen går rundt. Ikke bekymre deg for om du gjør feil og det slutter å fungere, bare trykk 'Stopp', slett koden og lim inn en ny kopi - du er klar å jamme igjen. Det er ved å gjøre feil du lærer raskest...


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

Fortsett gjerne å spille og eksperimentere til nysgjerrigheten på hvordan dette egentlig fungerer tar overhånd. Når du begynne å lure på hva annet du kan gjøre med dette, er du klar til å ta fatt på resten av opplæringen.

Så, venter hva du på…
