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:

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å…?