Multi Threading
Kunsten, at gøre flere ting samtidigt ... eller, at lade som om man gør det.
Det magiske trick hedder 'Threads' eller 'Tråde' på dansk.
I SonicPi kan vi tænke på det som flere musikkere, der spiller sammen i et band. De spiller på, hvert sit instrument og følger deres eget sæt noder. Tricket er, at få dem til, at holde takten dvs. være synkroniserede. Det skal vi også tale en del om i dag.
live_loops
Lad os starte med en simpel trommerytme:
live_loop :hihat do sample :drum_cymbal_closed sleep 0.5 end # Hjælp vi kommer ud af takt sleep 0.33 live_loop :drums do sample :drum_bass_hard, amp: 2 sleep 1 sample :drum_snare_hard, amp: 2 sleep 1 end
Hvert live_loop er en musiker, men den er gal med synkroniseringen. Jeg har snydt lidt for, at fremkalde det.
Prøv, at fjerne 'sleep 0.33' uden, at trykke på 'Stop' og tryk derefter på 'Run'. Musikken er stadig ude af takt !!!
sync & cue
I rockmusik er det stor- og lilletromme, der sætter takten så vi sætter dem til, at udsende et signal (et cue) når de starter på en takt. Så kan de andre instrumenter vente på dette signal (med sync) og køre videre når de modtager signalet.
Vi prøver igen, nu med synkronisering:
live_loop :hihat do sync :beat sample :drum_cymbal_closed sleep 0.5 sample :drum_cymbal_closed end # Wait for loops to start sleep 0.33 live_loop :drums do cue :beat sample :drum_bass_hard, amp: 2 sleep 1 cue :beat sample :drum_snare_hard, amp: 2 sleep 1 end
Yeah, nu rocker vi.
Scales & Functions
Lad os sætte en bas på også:
use_bpm 100 live_loop :bass do sync :beat use_synth :tb303 fn_bass sleep 0.5 fn_bass end define :fn_bass do play (scale :d3, :major_pentatonic, num_octaves: 1).choose, release: 0.25, cutoff: rrand(80, 130), amp: 0.25, res: 0.95 end live_loop :hihat do sync :beat sample :drum_cymbal_closed, amp: 2 sleep 0.5 sample :drum_cymbal_closed, amp: 2 end # Wait for loops to start sleep 0.01 live_loop :drums do cue :beat sample :drum_bass_hard, amp: 4 sleep 1 cue :beat sample :drum_snare_hard, amp: 2 sleep 1 end
Ligesom sidste gang, får vi computeren til, at vælge tonerne tilfældigt, men denne gang vælger den ud fra en skala. Den kan stadigvæk ikke spille falsk, men der er flere toner i en skala end i en akkord som vi brugte sidste gang.
Derudover har vi også lavet en funktion for vi giiiiiddddddeeerrrr bare ikke skrive den lange play kommando flere gange.
Melodi stemmen
Vi kan bygge melodistemmen på sammen måde som bassen, men med nogle ændringer:
- Vi skal vælge et andet instrument
- Vi skal gå 1-2 oktaver op i skalaen, men i den samme toneart
- Der skal mere fart på melodistemmen end på bassen.
Herunder er et færdigt eksempel på, hvordan det kan gøres.
Resourcer
Retur til StartSide