1.1 Forritun í beinni

# Forritun í beinni

Eitt af því sem er mest spennandi við Sonic Pi er þú getur skrifað kóða og *breytt honum á meðan hann keyrir* til að skapa tónlist, svona eins og þegar spilað er á gítar. Það þýðir að þegar þú hefur náð ákveðinni færni gætir þú farið með Sonic Pi á svið og haldið gigg.

## Opnaðu hugann

Áður en við förum í smáatriðin um hvernig Sonic Pi virkar hér á eftir í þessu kennsluefni, langar mig til að láta þig upplifa hvernig það er að kóða beint. Ekki hafa áhyggjur þó þú skiljir lítið (eða ekkert) af þessu. Haltu þér bara fast í sætinu og njóttu ...

## Lifandi lykkja

Byrjum á þessu. Afritaðu þennan kóða inn í tómt rissblað hér fyrir ofan:

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

Ýttu nú á `Run` hnappinn og þá muntu heyra hraðan bassatommuslátt spilaðan. Ef þú vilt stöðva hljóðið getur þú ýtt á `Stop` hnappinn. En ekki ýta á hann strax ...  Fylgdu heldur þessum leiðbeiningum:

1. Gættu þess að bassatrommuhljóðið sé enn að spila
2. Breyttu tölunni fyrir `sleep` úr `0.5` í eitthvað annað, t.d. `1`.
3. Ýttu aftur á `Run` hnappinn
4. Taktu eftir að hraði trommunnar hefur breyst.
5. *Ekki gleyma þessu augnabliki.*  Þetta er í fyrsta sinn sem þú hefur "kóðað lifandi" í Sonic Pi og örugglega ekki í það síðasta ...

Jæja, þetta var nú nógu einfalt. Kryddum nú súpuna aðeins: Bættu við fyrir ofan `sample :bd_haus` nýrri línu `sample :ambi_choir, rate: 0.3`.  Nú ætti kóðinn þinn að vera svona:

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

Fiktaðu nú í þessu. Breyttu `rate ` tölunum (rate=tíðni) - hvað gerist ef þú notar hærri tölur eða litlar tölur eða mínus tölur? Gáðu hvað gerist ef þú breytir `rate` tölunni fyrir `sample:ambi_choir` (sample=sýni) bara örlítið (t.d. í `0.29`). Hvað gerist ef þú notar mjög litla `sleep` tölu (sleep=hvíld)? Gáðu hvort þú getir látið þetta spila svo hratt að tölvan stoppi með villu því hún getur ekki fylgt eftir (ef það gerist þarftu bara að velja stærri `sleep` tölu og ýta svo aftur á `Run`).

Prófaðu að gera eina `sample` línuna óvirka með því að bæta `#` framan við hana:

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

Táknið # lætur tölvuna sleppa línunni, svo hún heyrist ekki. Þetta má nota til að gera línur óvirkar án þess að eyða þeim. Líka til að skrifa athugasemdir (comment) til að útskýra kóða.

Hér að lokum færðu svolítið sem er gaman að fikta við. Veldu kóðann hér fyrir neðan og afritaðu hann yfir á tómt rissblað. Ekki reyna að skilja þetta of mikið nema hvað nú hefurðu tvær lykkjur - eitthvað tvennt sem fer í hringi á sama tíma. Gerðu nú það sem þú gerir best - að gera tilraunir og leika þér með þetta. Hér eru nokkrar hugmyndir:

* Prófaðu að breyta bláu tölunum fyrir `rate`(tíðni) til að heyra hvernig hljóð sýnisins breytist.
* Prófaðu að breyta hvíldartímunum (sleep) og láta lykkjurnar endurtaka sig á mismunandi hraða.
* Prófaðu að virkja `sample` línuna (fjarlægja #) og heyra hvernig gítarinn hljómar spilaður aftur á bak.
* Prófaðu að breyta blárri `mix:` tölu í tölu á milli `0` (ekki með í hljóðblönduninni) og `1` (að fullu blandað).

Mundu að ýta á `Run` eftir breytingar og þá heyrast þær í næstu umferð lykkjunnar. Ef þú lendir í veseni, ekki örvænta. Ýttu bara á `Stop`, eyddu kóðanum á rissblaðinu og límdu nýtt afrit á það og þá geturðu haldið áfram að djamma. Af mistökunum lærir maður best ...


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

Haltu nú áfram að leika þér og gera tilraunir þangað til þú ferð að pæla í hvernig þetta allt saman virkar og þú ferð að velta fyrir þér hvað sé hægt að gera fleira með þessu. Þá munt þú læra sem mest á kennslunni sem fylgir hér á eftir.

Halló, eftir hverju ertu að bíða ...
