# Kodowanie na żywo

Jednym z najbardziej ekscytujących aspektów Sonic Pi jest to, że pozwala Ci na pisanie i modyfikację kodu na żywo, aby móc tworzyć muzykę w czasie rzeczywistym, tak samo jak podczas gry na gitarze na żywo. Oznacza to, że dzięki odpowiednim ćwiczeniom i praktyce możesz wykorzystać Sonic Pi do koncertów przed publicznością na żywo.

## Uwolnij swój umysł

Zanim przejdziemy do dalszej części samouczka i zaczniemy zgłębiać szczegóły tego, w jaki sposób działa Sonic Pi, chciałbym, abyś mógł przez chwilę poczuć, czym jest Kodowanie na żywo (Live Coding). Nie przejmuj się, jeśli nic nie zrozumiesz z tego, co zobaczysz i zrobisz za chwilę. Po prostu usiądź wygodnie, zapnij pasy i poczuj radość…

## Żywa Pętla

Zacznijmy od skopiowania następującego kawałka kodu do pustego buforu:

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

A teraz naciśnij przycisk `Run` - usłyszysz fajne i rytmiczne uderzenia bębna. W każdym momencie możesz zatrzymać dźwięk, naciskając przycisk `Stop`. Na razie wstrzymaj się i jeszcze tego nie rób… Zamiast tego wykonaj następujące kroki:

1. Upewnij się, że wciąż słyszysz dźwięk uderzającego bębna
2. Zmień wartość `0.5` znajdującą się przy poleceniu `sleep` na większą, np. 1.
3. A teraz ponownie naciśnij przycisk `Run`
4. Zauważ, jak zmieniła się szybkość uderzeń bębna.
5. A teraz… zapamiętaj ten moment, gdyż jest to pierwszy (i prawdopodobnie nie ostatni) raz, kiedy kodujesz na żywo w Sonic Pi…

No dobra, to było całkiem łatwe. Wplećmy coś jeszcze do naszego miksu. Powyżej linii `sample :bd_haus` dodaj linijkę `sample :ambi_choir, rate: 0.3`. Twój kod powinien teraz wyglądać następująco:

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

A teraz czas na zabawę. Zacznij zmieniać liczby - co się stanie, gdy użyjesz dużych, małych lub ujemnych liczb? Zobacz przebieg wydarzeń, gdy zmienisz odrobinę wartość parametru `rate:` dla sampla `:ambi_choir` (np. na 0.29). Co się stanie, jeśli wybierzesz naprawdę małą wartość dla parametru `sleep`? Zobacz, czy uda Ci się uruchomić powyższą pętlę w tak szybkim tempie, że Twój komputer zatrzyma się z powodu błędu, gdyż nie będzie w stanie nadążyć (jeśli to się zdarzy, po prostu wybierz większą wartość dla parametru `sleep` i ponownie naciśnij przycisk `Run`).

Spróbuj zrobić komentarz w jednej z linii zawierających polecenie `sample`, dodając na początku linii znak `#`, np.:

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

Zauważ, że dodanie znaku `#` na początku linii nakazuje komputerowi, aby zignorował daną linię, dzięki temu jej nie słyszymy. Taką linijkę nazywamy komentarzem. W Sonic Pi możemy używać komentarzy do usuwania i dodawania różnych rzeczy do naszej muzyki.

Na koniec pozwól, że pozostawię Ci do zabawy coś fajnego. Spójrz na kod poniżej i skopiuj go do wolnego i pustego buforu. Teraz nie próbuj zrozumieć niczego więcej, ponadto że w tym kodzie są dwie pętle (`live_loop`). Oznacza to, że w tym samym czasie dzieją się dwie rzeczy. A teraz rób to, co umiesz najlepiej - eksperymentuj i baw się, próbując zmieniać ten kod. Oto kilka sugestii, co ciekawego możesz zrobić:

- Spróbuj zmienić wartość niebieskich wskaźników `rate:`, aby usłyszeć, jak zmienia się brzmienie sampli.
- Spróbuj zmieniać wartości parametrów `sleep`, dzięki czemu usłyszysz, że obie pętle mogą kręcić się z różną szybkością.
- Spróbuj usunąć komentarz z linijki zawierającą sample (usuń znak `#`), a usłyszysz dźwięk gitary granej od tyłu.
- Spróbuj zmieniać niebieską liczbę znajdującą się przy parametrze `mix:` na wartości pomiędzy `0` (brak dźwięku w naszym utworze) a `1` (brzmienie o normalnej głośności).

Pamiętaj tylko, żeby wcisnąć przycisk `Run`. Dzięki temu usłyszysz zmianę przy kolejnym przebiegu pętli. Jeśli coś pójdzie nie tak i zacznie się kakofonia, nie przejmuj się tym. Wystarczy, że naciśniesz przycisk `Stop`, usuniesz cały kod w buforze, wkleisz świeżą kopię poniższego kodu i będziesz znowu gotowy do zabawy od nowa. Pamiętaj - człowiek najszybciej uczy się na błędach…

    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

Baw się i eksperymentuj tym kawałkiem kodu do momentu, w którym Twoja ciekawość sprawi, że zaczniesz zastanawiać się, jak to wszystko właściwie działa oraz co innego można jeszcze wyczarować za pomocą Sonic Pi. Jeśli ten moment już nastąpił, to jesteś gotów, aby przejść do dalszej części samouczka.

Więc na co czekasz…