Dodawanie Efektów

W tej sekcji przyjrzymy się kilku efektom (FX): reverb i echo. Zobaczymy, w jaki sposób ich używać, jak kontrolować ich parametry oraz jak je łączyć ze sobą w jeden łańcuch.

System efektów w Sonic Pi korzysta z bloków kodu. Jeśli więc do tej pory nie przeczytałeś jeszcze sekcji 5.1, to teraz jest dobry moment, by nadrobić zaległości.

Efekt Reverb

Jeśli chcemy użyć efektu reverb, wystarczy, że napiszemy with_fx :reverb jako specjalny kawałek kodu dla naszego bloku do/end:

with_fx :reverb do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end

Teraz uruchom ten kod, a usłyszysz, jak jest zagrany z nałożonym na niego efektem reverb. Brzmi nieźle, prawda? Wszystko łączy się całkiem fajnie z efektem reverb.

A teraz zobaczmy, co się wydarzy, gdy umieścimy jakiś dodatkowy kod poza naszym blokiem do/end:

with_fx :reverb do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end
sleep 1
play 55

Zauważ, że ostania linia play 55 nie jest zagrana z efektem reverb. Dzieje się tak, ponieważ znajduje się poza blokiem kodu do/end, więc dzięki temu nie jest objęta efektem reverb.

Analogicznie, jeśli zrobisz jakieś dźwięki przed blokiem do/end, to one również nie będą pod wpływem efektu reverb:

play 55
sleep 1
with_fx :reverb do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end
sleep 1
play 55

Efekt Echo

Jest wiele efektów do wyboru. Co powiesz na echo?

with_fx :echo do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end

Jednym z potężnych aspektów bloków efektów w Sonic Pi jest to, że można do nich przekazywać parametry podobne do tych, które już widzieliśmy, gdy korzystaliśmy z poleceń play i sample. Na przykład bardzo fajnym, który nieźle brzmi z efektem echo, jest phase:. Reprezentuje on czas trwania danego efektu przez określoną liczbę uderzeń (ile uderzeń trwa efekt). Spróbujmy sprawić, aby efekt echo był trochę wolniejszy:

with_fx :echo, phase: 0.5 do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end

Spróbujmy też sprawić, aby echo brzmiało szybciej:

with_fx :echo, phase: 0.125 do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end

Sprawmy teraz, aby zanikanie echa trwało dłużej, ustawiając parametr decay na 8 sekund:

with_fx :echo, phase: 0.5, decay: 8 do
  play 50
  sleep 0.5
  sample :elec_plip
  sleep 0.5
  play 62
end

Zagnieżdżanie Efektów

Jednym z najbardziej potężnych aspektów bloków zawierających efekty jest to, że możesz je zagnieżdżać. Pozwala to na bardzo łatwe łączenie ich ze sobą. Przykładowo co, jeśli chciałeś zagrać kawałek jakiegoś kodu z efektami echo i reverb? Łatwizna, po prostu umieść jeden w drugim:

with_fx :reverb do
  with_fx :echo, phase: 0.5, decay: 8 do
    play 50
    sleep 0.5
    sample :elec_blup
    sleep 0.5
    play 62
  end
end

Pomyśl o przepływie dźwięku ze środka na zewnątrz. Dźwięk z najbardziej wewnętrznego bloku kodu, np. play 50 jest najpierw wysyłany do efektu echo, a następnie dźwięk z nałożonym echo jest z kolei do efektu reverb.

Możemy używać wielu takich zagnieżdżeń dla osiągania zwariowanych wyników. Jednakże uważaj - efekty mogą zużywać sporo zasobów. Zagnieżdżając jeden w drugim, uruchamiasz wiele efektów na raz. Bądź więc oszczędny z ich używaniem, zwłaszcza na platformach o słabych parametrach (procesor, pamięć, itd.) na przykład takich jak Raspberry Pi.

Odkrywanie Efektów

W Sonic Pi możesz korzystać z wielu wbudowanych efektów. Aby zobaczyć, które z nich są dostępne, kliknij na ikonę Fx (efekty) w sekcji pomocy, a zobaczysz listę wszystkich dostępnych opcji. Oto kilka moich ulubionych:

A teraz powariuj trochę i dodaj efekty wszędzie, gdzie tylko możesz, aby stworzyć zdumiewające nowe dźwięki!