Modulatia in amplitudine
Luna asta vom analiza in detaliu unul dintre cele mai puternice efecte audio ale Sonic Pi - â:slicerâ. La sfarsitul acestui articol vei sti sa modifici volumul global al diferitelor parti din sunetul programat live in moduri noi foarte puternice. Asta iti va permita se creezi noi structuri ritmice si timbrale si sa iti largesti capacitatea de exprimare.
Modifica amplitudinea cu â:slicerâ
Ce face de fapt efectul â:slicerâ? Poti sa iti imaginezi ca cineva se joaca cu volumul la televizorul tau sau la amplificatorul audio. Sa aruncam o privire, dar mai intai sa ascultam murmurul produs de bucata asta de cod care foloseste sintetizatorul â:prophetâ:
synth :prophet, note: :e1, release: 8, cutoff: 70
synth :prophet, note: :e1 + 4, release: 8, cutoff: 80
Acum, sa il trecem printr-un efect â:slicerâ:
with_fx :slicer do
synth :prophet, note: :e1, release: 8, cutoff: 70
synth :prophet, note: :e1 + 4, release: 8, cutoff: 80
end
Observa cum efectul slicer actioneaza ca si cand ar opri/porni sunetul intr-un ritm regulat. De asemenea, vei vedea ca â:slicerâ afecteaza toate sunetele generate intre blocurile âdoâ/âendâ. Poti controla viteza cu care porneste si opreste sunetul cu parametrul âphase:â care este o prescurtare de la durata fazei. Valoarea implicita este â0.25â ceea ce inseamna de 4 ori pe secunda la BPM implicit de 60. Sa il facem mai rapid:
with_fx :slicer, phase: 0.125 do
synth :prophet, note: :e1, release: 8, cutoff: 70
synth :prophet, note: :e1 + 4, release: 8, cutoff: 80
end
Acum, joaca-te cu diferite durate pentru âphase:â. Incearca valori mai mari sau mai mici. Vezi ce se intampla cand alegi o durata foarte scurta. De asemenea, incearca diferite sintetizatoare, cum ar fi â:beepâ sau â:dsawâ si note diferite. Priveste diagrama urmatoare pentru a vedea cum schimba diferitele valori pentru â:phaseâ numarul de schimbari de amplitudine intr-un beat.
Durata fazei este timpul pentru un ciclu pornit/oprit. Ca urmare, valori mai mici vor face efectul sa comute mai rapid decat valori mai mari. Valori cu care ai putea experimenta sunt 0.125
, 0.25
, 0.5
si 1
.
Implicit, efectul â:slicerâ foloseste o forma de unda dreptunghiulara pentru a modifica amplitudinea in timp. De acceea auzim sunetul o perioada, apoi imediat dispare, apoi apare din nou. Forma de unda dreptunghiulara este doar una dintre cele 4 care pot fi folosite de catre â:slicerâ. Celelalte sunt tip dinti de fierastrau, triunghiulara si (co)sinusoidala. Priveste diagrama de mai jos pentru a vedea cum arata diecare. Putem sa si auzim cum suna fiecare. De exemplu, codul de mai jos foloseste forma de unda co(sinusoidala) pentru control. Observi ca sunetul nu se opreste/porneste brusc ci are un efect de fade out/fade in:
with_fx :slicer, phase: 0.5, wave: 3 do
synth :dsaw, note: :e3, release: 8, cutoff: 120
synth :dsaw, note: :e2, release: 8, cutoff: 100
end
Joaca-te cu diferite forme de unda schimband parametrul âwave:â la â0â pentru dinti de fierastrau, â1â pentru patrata, â2â pentru triunghiulara si â3â pentru sinusoidala. Observa de asemenea cum suna diferitele forme de unda cu valori diferite pentru âphase:â.
Fiecare dintre aceste forme de unda poate fi inversata folosind parametrul âinvert_wave:â care o oglindeste fata de axa y. De exemplu, pe parcursul unei singure faze unda dinti de fierastrau porneste in general de sus si coboara incet pentru ca apoi sa sara instantaneu din nou la valoarea maxima. Folosind âinvert_wave: 1â, ea va porni de jos si va creste progresiv inainte de a reveni instantaneu la valoarea minima. In plus, forma de unda poate porni din diferite puncte, folosind parametrul âphase_offset:â care trebuie sa aiba o valoare intre â0â si â1â. Jucandu-te cu parametrii phase:
, wave:
, invert_wave:
si phase_offset
poti schimba semnificativ modul in care amplitudinea este modificata in timp.
Stabilirea nivelului
Implicit, â:slicerâ comuta intre valorile â1â (sunet la maximum) si â0â (oprit complet) pentru amplitudine. Acestea pot fi schimbate folosind parametrii amp_min:
si amp_max:
. Poti folosi acesti parametri impreuna cu o unda sinusoidala pentru a crea un efect simplu de tremolo:
with_fx :slicer, amp_min: 0.25, amp_max: 0.75, wave: 3, phase: 0.25 do
synth :saw, release: 8
end
Este ca si cum ai roti putin la stanga si la dreapta butonul de volum de la amplificatorul tau audio pentru ca taria sunetului sa oscileze putin.
Probabilitati
Una dintre caracteristicile importante ale efectului â:slicerâ este posibilitatea de a folosi probabilitatile pentru a alege daca activeaza sau nu modificarea de amplitudine. Inainte ca â:slicerâ sa inceapa o noua faza, el da cu zarul si pe baza rezultatului fie foloseste forma de unda selectata fie mentine amplitudinea la 0. Sa ascultam:
with_fx :slicer, phase: 0.125, probability: 0.6 do
synth :tb303, note: :e1, cutoff_attack: 8, release: 8
synth :tb303, note: :e2, cutoff_attack: 4, release: 8
synth :tb303, note: :e3, cutoff_attack: 2, release: 8
end
Observi ca acum avem un ritm interesant de impulsuri. Incearca sa setezi parametrul âprobability:â la o valoare intre â0â si â1â. Valorile mai apropiate de 0 vor duce la pauze mai mari intre sunete deoarece probabilitatea ca sunetul sa fie redat este mult mai mica.
Un alt lucru de remarcat este ca sistemul de probabilitati din acest efect este la fel ca sistemul de randomizare accesibil prin intermediul functiilor ca ârandâ si âshuffleâ. Ambele sunt complet deterministe. Aceasta inseamna ca de fiecare data cand apesi pe Run vei auzi exact acelasi ritm de impulsuri pentru o probabilitate data. Daca vrei sa schimbi acest lucru poti folosi parametrul âseed:â pentru a selecta un punct de pornire diferit in secventa de numere aleatoare. Acest parametru functioneaza exact ca use_random_seed
, dar afecteaza doar acest efect particular.
In fine, poti schimba pozitia de ârepausâ a undei de control pentru cazul in care testul probabilistic esueaza (deci nu se initiaza modificarea amplitudinii conform formei de unda) de la â0â la orice alta valoare, folosind parametrul âprob_pos:â:
with_fx :slicer, phase: 0.125, probability: 0.6, prob_pos: 1 do
synth :tb303, note: :e1, cutoff_attack: 8, release: 8
synth :tb303, note: :e2, cutoff_attack: 4, release: 8
synth :tb303, note: :e3, cutoff_attack: 2, release: 8
end
Crearea de beat-uri folosind slicing
Un lucru cu adevarat amuzant este sa folosesti â:slicerâ pentru a cioparti un beat de toba:
with_fx :slicer, phase: 0.125 do
sample :loop_mika
end
Acest lucru ne permite sa luam orice esantion si sa cream noi ritmuri, ceea ce este chiar distractiv. Totusi, un lucru de care trebuie sa tinem seama este ca tempo-ul esantionului trebuie sa fie acelasi cu BPM curent din Sonic Pi, altfel slicing-ul va suna total anapoda. De exemplu, incearca sa schimbi :loop_mika
cu loop_amen
pentru a auzi cat de rau suna cand tempo-urile nu coincid.
Schimbarea tempo-ului
Dupa cum am vazut, modificarea BPM implicit cu âuse_bpmâ va faca ca toate pauzele sau duratele anvelopelor pentru esantioane sa creasca sau sa scada pentru a se potrivi cu beat-ul. Efectul â:slicerâ respecta aceeasi regula, parametrul âphase:â fiind de fapt masurat in masuri, nu in secunde. Putem deci corecta problema de mai sus cu âloop_amenâ schimband BPM pentru a se potrivi cu cel al esantionului:
use_sample_bpm :loop_amen
with_fx :slicer, phase: 0.125 do
sample :loop_amen
end
Sa punem totul cap la cap
Sa aplicam toate aceste idei intr-un exemplu final care foloseste doar efectul â:slicerâ pentru a crea o combinatie interesanta. Da-i drumul, modifica-l si transforma-l in propria ta piesa!
live_loop :dark_mist do
co = (line 70, 130, steps: 8).tick
with_fx :slicer, probability: 0.7, prob_pos: 1 do
synth :prophet, note: :e1, release: 8, cutoff: co
end
with_fx :slicer, phase: [0.125, 0.25].choose do
sample :guit_em9, rate: 0.5
end
sleep 8
end
live_loop :crashing_waves do
with_fx :slicer, wave: 0, phase: 0.25 do
sample :loop_mika, rate: 0.5
end
sleep 16
end