W bieżącym numerze tego poradnika o Sonic Pi zobaczymy, w jaki sposób możesz zacząć traktować Sonic Pi jak prawdziwy instrument. Musimy zatem zacząć myśleć o kodzie w zupełnie nowy sposób. Osoby kodujące na żywo myślą o kodzie w sposób podobny do tego, w jaki skrzypkowie myślą o swoich smyczkach. W rzeczy samej tak jak skrzypek potrafi wykorzystać różne techniki smyczkowania, aby stworzyć różne dźwięki (długie powolne ruchy kontra szybkie krótkie pociągnięcia), tak samo my poznamy pięć podstawowych technik kodowania na żywo, które umożliwia Sonic Pi. Pod koniec tego artykułu będziesz mógł samodzielnie ćwiczyć na potrzeby swoich własnych występów przed publicznością.
Pierwszą wskazówką w kodowaniu na żywo z Sonic Pi jest zaczęcie używania skrótów klawiszowych. Na przykład zamiast tracić cenny czas na sięganie po myszkę, przesuwanie ją na przycisk Run i kliknięcie, możesz po prostu nacisnąć jednocześnie przyciski alt
i r
. Będzie to dużo szybsze i dzięki temu wciąż będziesz miał palce na klawiaturze gotowe do kolejnej edycji kodu. Możesz poznać wszystkie skróty klawiszowe dotyczące przycisków na górze poprzez najechanie na nie myszką i poczekanie chwilę, aż pokaże się opis. Aby zobaczyć pełną listę skrótów klawiszowych, udaj się do sekcji 10.2 samouczka wbudowanego w Sonic Pi.
Jedną z fajniejszych rzeczy, które można zrobić podczas występów na żywo, jest nadanie Twoim ruchom finezji, gdy naciskasz skróty klawiszowe. Na przykład bardzo dobrą rzeczą jest zakomunikowanie publiczności, że zamierzasz wprowadzić zmianę - postaraj się więc ozdobić Twój ruch, gdy naciskasz alt-r
dokładnie w taki sam sposób, w jaki zrobiłby to gitarzysta gdy uderza o struny, aby zagrać fantastyczny “akord mocy” (ang. power chord).
Teraz potrafisz już natychmiast uruchamiać kod za pomocą klawiatury, możesz więc od razu zacząć wykorzystywać tę umiejętność przy drugiej technice polegającej na ręcznym układaniu kolejnej warstwy Twojej kompozycji. Zamiast ‘komponowania’ przy wykorzystaniu wielu poleceń play
i sample
oddzielonych odwołaniami do sleep
, będziemy mieli tylko jedno wywołanie polecenia play
, które będziemy manualnie zmieniać, używając polecenia alt-r
. Spróbujmy zatem! Wpisz poniższy kod do pustego bufora:
synth :tb303, note: :e2 - 0, release: 12, cutoff: 90
A teraz naciśnij przycisk Run
i gdy dźwięk wciąż jeszcze gra, popraw kod, aby dorzucić cztery nuty poprzez zmianę kodu na następujący:
synth :tb303, note: :e2 - 4, release: 12, cutoff: 90
A teraz naciśnij ponownie przycisk Run
, aby usłyszeć oba dźwięki grające w tym samym czasie. Dzieje się tak, ponieważ przycisk Run
dostępny w Sonic Pi nie czeka w ogóle na zakończenie jakiegokolwiek poprzedniego kodu, lecz zamiast tego uruchamia nasz kod w tym samym czasie. Oznacza to, że możesz ręcznie w bardzo łatwy sposób nawarstwić wiele razy różne dźwięki z małymi lub dużymi zmianami pomiędzy każdym uruchomieniem. Na przykład spróbuj zmienić za jednym razem opcje note:
i cutoff:
, a następnie odpalić kod ponownie.
Możesz spróbować tej techniki z długimi abstrakcyjnymi samplami. Na przykład:
sample :ambi_lunar_land, rate: 1
Spróbuj zacząć z wyłączonym samplem, a następnie sukcesywnie zmniejszaj o połowę wartości opcji rate:
pomiędzy kolejnymi naciśnięciami Run
. Zacznij od 1
, potem 0.5
, 0.25
aż do 0.125
- sprawdź nawet jakieś liczby ujemne, na przykład -0.5
. Spróbuj nawarstwić te dźwięki na siebie i zobacz, dokąd uda Ci się to doprowadzić. Na koniec spróbuj dodać jakiś efekt.
Kiedy występujesz na żywo, pracując w ten sposób z prostymi liniami kodu, to publiczność, dla której Sonic Pi jest czymś nowym, ma całkiem niezłą szansę na to, żeby śledzić to, co robisz i kod, który tworzysz, dzięki czemu mogą czytać docierający do nich dźwięk.
Kiedy pracujemy z bardziej rytmiczną muzyką, uruchamianie wszystkiego z ręki przy utrzymaniu odpowiedniego tempa może być dosyć trudne, jeśli nie niemożliwe. Zamiast tego dużo lepiej jest skorzystać z żywej pętli live_loop
. Pozwala Ci to na powtarzanie Twojego kodu, a jednocześnie masz możliwość edycji i przygotowania go na kolejny przebieg pętli. Ponadto będą one uruchomione w tym samym czasie co inne żywe pętle live_loop
- oznacza to, że możesz połączyć je razem ze sobą oraz z manualnym uruchamianiem kodu. Zerknij na sekcję 9.2 wbudowanego samouczka, aby uzyskać więcej informacji o tym, jak możesz pracować z żywymi pętlami.
Kiedy występujesz na żywo, pamiętaj, aby korzystać z dostępnej dla polecenia live_loop
opcji sync:
. Pozwoli Ci to na naprawienie nieoczekiwanych pomyłek, które powodują zatrzymanie danego kawałka kodu ze względu na błąd. Jeśli posiadasz już opcję sync:
, która wskazuje na inną istniejącą i poprawną pętlę live_loop
, to możesz szybko naprawić błąd i ponownie uruchomić kod, co pozwoli na zresetowanie całej sytuacji bez utraty choćby jednego beatu.
Jednym z najpilniej strzeżonych sekretów Sonic Pi jest to, że posiada on główny mikser, przez który przepływają wszystkie dźwięki. Mikser ten posiada zarówno filtr niskich częstotliwości jak i filtr wysokich częstotliwości. Możesz więc bardzo łatwo wprowadzać globalne modyfikacje dźwięku. Dostęp do głównego miksera uzyskasz za pomocą funkcji set_mixer_control!
. Przykładowo, kiedy został uruchomiony kod i odtwarzany jest dźwięk, wprowadź to do zapasowego bufora i naciśnij Run
:
set_mixer_control! lpf: 50
Po uruchomieniu tego kodu wszystkie nowe dźwięki będą miały zaaplikowany filtr niskich tonów i w związku z tym zostaną bardziej stłumione. Zauważ, że oznacza to, iż nowe wartości miksera zostaną takie same, dopóki nie zostaną ponownie zmienione. Jeśli jednak chcesz, możesz zawsze zresetować mikser do domyślnego poziomu poprzez użycie reset_mixer!
. Kilkoma obecnie wspieranymi opcjami są: pre_amp:
, lpf:
hpf:
oraz amp:
. Aby zobaczyć pełną listę dostępnych parametrów, wystarczy, że zajrzysz do wbudowanej dokumentacji dostępnej dla polecenia set_mixer_control!
.
Użyj opcji typu *slide
, aby zmienić poziom wartości jednej lub wielu opcji w taki sposób, jakbyś używał do tego celu suwaka na mikserze. Posługując się przykładem, żeby powoli przesunąć na mikserze filtr niskich częstotliwości w dół z obecnej wartości do 30, użyj poniższego:
set_mixer_control! lpf_slide: 16, lpf: 30
Po tym przesunięciu możesz szybko wrócić do wyższej wartości za pomocą:
set_mixer_control! lpf_slide: 1, lpf: 130
Kiedy występujesz, często przydatne jest zachowanie czystego bufora do pracy z takim mikserem jak ten.
Najważniejszą techniką do nauki żywego kodowania jest praktyka. Tę metodę wykorzystuje wielu profesjonalnych muzyków - grają oni na swoich instrumentach przez kilka godzin dziennie, by stać się coraz to lepszymi twórcami. Trenowanie jest tak samo ważne zarówno dla osoby kodującej na żywo, jak i gitarzysty. Pozwala ono Twoim palcom na zapamiętanie pewnych wzorców, co umożliwia im następnie o wiele płynniejszą pracę. Praktyka daje również możliwości do odkrywania nowych dźwięków i składni kodów.
Podczas występów na żywo zauważysz, że im więcej ćwiczysz, tym łatwiej będzie Ci się rozluźnić na imprezie. Ponadto dzięki praktyce zdobędziesz sporo doświadczenia, które będziesz mógł potem wykorzystać. Także pomoże Ci zrozumieć, które typy zmian będą interesujące oraz czy będą dobrze współgrać z aktualnie grającymi dźwiękami.
W tym miesiącu zamiast dawać Ci końcowy przykład, który bardzo dobrze wkomponowywał się w tematy omawiane w danym numerze, proponuję małe wyzwanie. Zobacz, czy jesteś w stanie spędzić cały tydzień, ćwicząc każdego dnia jedną z wymienionych technik. Na przykład jednego dnia ćwicz ręczne uruchamianie kodu, następnego spróbuj popracować z jakąś prostą żywą pętlą live_loop
, a kolejnego dnia spróbuj pobawić się z głównym mikserem. Powtórz to raz jeszcze. Nie przejmuj się, jeśli na początku będziesz odczuwać, że idzie to jak po grudzie - po prostu staraj się ćwiczyć, a zanim się obejrzysz, zaczniesz kodować na żywo przed prawdziwą publicznością.