Készíts egy dalt
Nagyszerű! Most már jól sikerült futtatnod a dalt, folyamatosan ütemezve és basszussal ellátva, mellette van a dallam. Most valami igazán jó dolgot csinálunk, és felszabadítjuk a Sonic Pi valódi lehetőségeit. Adjunk hozzá néhány generáló elemet a számhoz, és programozzuk a számítógépet, hogy komponáljon nekünk!
A transzponálás azt jelenti, hogy a hangmagasságot felfelé vagy lefelé kell megváltoztatni. Időről időre véletlenszerűen transzponálhatjuk a dallamot, hogy adjunk némi fűszert a számhoz. Dobhatsz egy kockát, annak eldöntésére, mikor kell emelni a hangmagasságot a dallamhoz. Íme egy példa:
live_loop :melody do
if one_in(6)
use_transpose 2
else
use_transpose 0
end
play_pattern_timed [:c4, :e4, :f4, :g4, :f4, :e4, :f4, :g4, :f4, :e4, :f4], [0.25, 0.25, 0.25, 1.5, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], attack: 0, release: 0.2
endLCsináljunk valami érdekeset a basszus számára. A .choose utasítás használata egy praktikus módszer, amely véletlenszerűen választ ki egy elemet egy listából. Mint ez:
play [:c, :e, :g].choose[:c, :e, :g] a hangjegyek listája (ebben az esetben a C-dúr akkord hangjegyei). .choose véletlenszerűen választja ki az egyik hangjegyet. Hangjegyek helyett bármi is szerepelhet a listában. Például a várakozási értékek:
loop do
use_octave [0, 1].choose
play [:c, :e, :g].choose
sleep [0.25, 0.25, 0.5, 1].choose
endNem is kell emlékezned arra, hogy milyen hangok vannak az akkordokban. A Sonic Pi ezt kezelni tudja neked. A [:c, :e, :g], írása helyett használhatod ezt (chord :C, :major). Ez automatikusan létrehozza a megfelelő hangjegyek listáját. Íme egy példa:
loop do
play (chord :c, :major).choose
sleep [0.25, 0.25, 0.5, 1].choose
endHasználjuk ezt a varázslatot egy pezsgő basszushoz. Mentsd el munkádat, és másold át az aktuális :bass ciklust egy másik pufferbe, arra az esetre, ha vissza akarsz hozzá térni. Ezután hagyj helyet az új basszusnak, és töröld a ciklus tartalmát. Használjuk a klasszikus :tb303 szintetizátort, és játsszunk véletlenszerű 16-od hangjegyeket a C-dúr akkordból:
live_loop :bass do
use_synth :tb303
play (chord :C2, :major).choose
sleep 0.25
endAjaj! Nem egészen igaz. Add hozzá a , release: 0.125 paramétert a lejátszási parancs végén, így:
live_loop :bass do
use_synth :tb303
play (chord :C2, :major).choose, release: 0.125
sleep 0.25
endEz jobb, de még mindig kell egy kis csiszolás. Eddig az attack: és a release: paramétereket használtad a lejátszási parancshoz. Az alkalmazott szinetizátortól függően sokkal több paraméter használható. Például a tb303 szintetizátor 45 különböző beállítási lehetőséget kínál. A basszushoz használjuk a cutoff nevű paramétert. A cutoff eltávolítja az összes frekvenciát, amely a cutoff frekvencia felett van. 0-130 közötti értékeket használhatsz.
De ne csak egy rögzített küszöbértéket használj, ha véletlenszerű értékkel is rendelkezhetsz! Az rrand(min, max) segítségével véletlenszerű számokat generálhatsz egy adott tartományban. Próbáld ki ezt:
live_loop :bass do
use_synth :tb303
play (chord :C2, :major).choose, release: 0.125, cutoff: rrand(60, 110)
sleep 0.25
endNagyszerű! Ne felejtsd felfedezni és kipróbálni a különböző dolgokat. Összefoglalva, itt van egy példa arra, hogy mik a további lehetőségek ettől a ponttól:
use_bpm 120
live_loop :drums do
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
end
live_loop :hihat do
sample :drum_cymbal_closed
sleep 0.25
sample :drum_cymbal_pedal
sleep 1
end
live_loop :bass do
use_synth :tb303
play (chord :C2, :major).choose, release: 0.125, cutoff: rrand(60, 110)
sleep 0.25
end
live_loop :melody do
if one_in(6)
use_transpose 2
else
use_transpose 0
end
play_pattern_timed [:c4, :e4, :f4, :g4, :f4, :e4, :f4, :g4, :f4, :e4, :f4], [0.25, 0.25, 0.25, 1.5, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], attack: 0, release: 0.2
end