Amazing amazing thank you all
Here is my attempt to replicate a GoGo Penguin track in Sonic Pi:
I tried uploading one of my ambient tracks to spotify but the free distribution platform Iām using declined my track because my cover wasnāt quality or whatever
When I finally get it posted on spotify Iāll post it here! Also, if anyone here is up to helping me with the cover art that would be nice. My cover photo was just a frame of a modified preset on hydra. Hereās the hydra code if anyoneās interested:
osc(-5.38, 0.0021, -0.478).color(0.056, 0.441, 0.313).rotate(0.585, 0.124).modulate(noise(-1.075), () => 1.376 * Math.sin(0.019 * time)).out(o0);
would love to help with your artwork
This is awesome!
Here are the links to all my current work:
Still incredibly impressed by this.
Thanks for the feature!!!
All the albums that I posted so far on https://enkid0.bandcamp.com are made 100% with Sonic Pi. Is that url sufficient for you, or would you rather have a link per album (8 links) orā¦ a link per track? (that would be more complicated =)).
Thanks for the continual share ā¦ I have some exciting news coming soon ā¦
Thank you! It means a lot to me.
Iām putting my Sonic Pi-made tracks in here. Primarily Iām using SPi to arrange āliving backing tracksā for others in the band to play to. But Iāve started to try composing in SPi too.
Iāll add that some of samples are made with tools outside SPi, but Iām using a lot of the in-built sounds too.
Thatās ace. Can I ask what are you using for the bass on this track?
Robin - what a mix. How did you code in all that Bach? So many notes, hard enough when I used to try playing it. I especially like the Rachmaninoff, thatās a great sound going on there.
Some of the tracks remind me of the Radiophonic workshop - not so much their left-field stuff but when then made those synth-based theme tunes for bbc programmes. Is it the sine waves?
Believe it or not, I just used the SPi fm synth, which doesnāt always sound right, but with some tweaking sometimes itās surprisingly believable. My goal was to complete this project with SPi built-in samples and synths only. Here is the entire code: https://github.com/garenhart/gogo-penguin-hopopono. Just make sure to read the readme if you want to run it. BTW, I really enjoyed listening to your tracks!
Thanks so much, great to see the code - and well commented too. Iām definitely going to steal your bass sound though
All 4 tracks are coolā¦ but āOne Dropā really hits.
As a lover of dub Iād really like to see that code, Sir.
Might I offer this as a trade?
Respec.
Eliā¦
Thanks for the kind words, and nice work yourself! Lots of good-sounding elements in there which I will shamelessly copy Iāll single out the ruff on the snare, thatās good. I need more of those touches.
One of my band wanted a dub track, so mine is a live/endless backing track for that, King Tubby style - well, hopefully. In performance Iāll switch the different bits in an out and muck about with the reverb. Take it down to the bare minimum and bring it up again, you know.
Thereās a few samples in there, mostly mine, one from Freesound. Although the samples were made in SPi and recorded - the reason being the effects (echo and reverb) were taking too much CPU run live.
As requested:
# Rubber Dub
# Coded by: KniKnoo. https://gist.github.com/kniknoo/9bba301ab048cbfa350777d39a6098f6
# Remixed by: Just Eli... https://soundcloud.com/just-eli-139271289/
use_bpm 75
use_debug false
use_random_seed 98736
set_sched_ahead_time! 1
# Array used to start and stop loops outputting sounds,
tracker = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
n = (ring :r, :r, :d2, :d3, :f3, :r, :d1, :f2)
fade_in = (line 0, 2, inclusive: true, steps: 40).ramp
fade_in1 = (line 0, 3, inclusive: true, steps: 15).ramp
fade_out = (line 3, 1, inclusive: true, steps: 40).ramp
fade_out1 = (line 2, 0.5, inclusive: true, steps: 15).ramp
fade_out2 = (line 3, 1.5, inclusive: true, steps: 40).ramp
fade_through = fade_in+fade_out
fade_through1 = fade_in+fade_out1
fade_through2 = fade_in+fade_out2
dchord = chord(:g4, :minor, num_octaves: 3)
synth_cutoffs = range(60, 100, 0.5).mirror
synth_rhythm = (ring 1.5, 1.5, 1)
synth_transpositions = (stretch 0, 36) + (stretch -12, 6) + (stretch 12, 6)
synth_phases = (stretch 0.75, 15) + [0.25]
synth_pans = (ring -0.5, 0.5)
synth_volume = 1
dubpad_cutoffs = range(70, 100, 5).mirror
dubpad_phases = (ring 8, 8, 8, 0.5)
dubpad_mixes = (ring 0.5, 0.5, 0.5, 0)
dchord = chord(:g4, :minor, num_octaves: 3)
# Repeat a loop.
define :repeat_loop do |i|
tracker[i] = 2
end
define :start_loop do |i|
tracker[i] = 1
end
define :stop_loop do |i|
tracker[i] = 0
end
define :stop_all do
tracker[0] = 0
tracker[1] = 0
tracker[2] = 0
tracker[3] = 0
tracker[4] = 0
tracker[5] = 0
tracker[6] = 0
tracker[7] = 0
tracker[8] = 0
tracker[9] = 0
tracker[10] = 0
tracker[11] = 0
end
define :sn_roll do #|length|
in_thread do
sn_amp = 0.05
4.times do
sample :sn_dolf, amp: sn_amp, sustain: 0, release: 0.125
sleep 0.0625
sn_amp += 0.07
end
end
end
define :dubpad do |ch, amp|
with_fx :echo, amp: amp, mix: dubpad_mixes.look,
phase: 1.5, decay: 2 do
with_fx :reverb, room: 0.8 do
with_fx :ixi_techno, phase: dubpad_phases.tick, cutoff_min: 70 do
with_synth :tb303 do
with_synth_defaults attack: 0.1, release: 8,
cutoff: dubpad_cutoffs.look, res: 0.5 do
play_chord ch
play_chord ch.map { |n| n + 0.3 } # Detune chord
end
end
end
end
end
end
live_loop :bar do
sleep 1
end
live_loop :beats do
sync :bar
sleep 4
end
live_loop :kick do
if tracker[0]>0 then
sample :drum_heavy_kick
sleep 1
else
sleep 1
end
end
with_fx :reverb, mix: 0.35, room: 0.1, damp: 0.9 do
live_loop :snare do
if tracker[1]>0 then
use_sample_defaults sustain: 0, release: 0.25
sleep 0.75
sn_roll if rand > 0.8
sleep 0.25
sample :sn_dolf
del = [0.25, 0.5, 0.75].choose
cue :bass
sleep del
sample :drum_snare_soft, amp: 0.7 if rand > 0.5
sleep 1 - del
else
sleep 1
end
end
end
live_loop :hats do
if tracker[2]>0 then
sample :drum_cymbal_closed, sustain: 0.125, amp: 0.3 if rand > 0.9
sleep 0.5
sample :drum_cymbal_closed, sustain: 0.125, amp: 0.5
sleep 0.5
else
sleep 1
end
end
live_loop :hats2 do
if tracker[2]>0 then
sample [:elec_tick, :elec_blip].choose, sustain: 0.006, amp: 0.8, hpf: 100 if rand > 0.3
sleep 0.25
else
sleep 1
end
end
live_loop :bass do
if tracker[3]>0 then
if rand(1) > 0.75
n = (ring :r, :r, :d2, :d3, :f3, :r, :d1, :f2)
else
n=n.shuffle
end
use_synth :fm
use_transpose +12
use_synth_defaults release: 0.125 + rrand(0, 0.2), amp: 0.25, pan: rrand(-0.5, 0.5)
use_transpose +12
play n.look, cutoff: rrand(30, 130)
sleep 0.25
tick
else
sleep 1
end
end
with_fx :gverb, mix: 0.1, room: 20, amp: 0.6 do
live_loop :skank do
if tracker[4]>0 then
with_fx :bitcrusher, mix: 0.7, amp: 0.5, bits: 8, sample_rate: 3136 do
use_synth :dpulse
use_synth_defaults release: 0.125
sleep 0.5
if rand > 0.8
with_fx :echo, phase: [0.25, 0.333, 0.375, 0.75].choose, decay: 4, mix: 0.5 do
play (chord, :g4, :m, invert: -1)
end
else
play (chord, :g4, :m, invert: -1)
end
3.times do
sleep 1
play (chord, :g4, :m, invert: -1)
end
sleep 0.5
end
else
sleep 1
end
end
end
with_fx :echo, mix: 0.8, phase: 0.75, decay: 4 do
with_fx :flanger, stereo_invert_wave: 1, feedback: 0.5, amp: 0.5 do
live_loop :lead do
if tracker[5]== 1 then
with_fx :flanger, stereo_invert_wave: 1, feedback: 0.5, amp: 0.5 do
sync :bass
sync :bass
use_synth :mod_beep
rps = (range 6, 9).choose
use_synth_defaults res: 0.9, attack: 0.25, noise: 2, release: 2 , cutoff: 100, amp: 0.2,
note_slide: 0.02, sustain: 0.25 * rps / 1.25, decay: 0.25 * rps / 1.25, sustain_level: 0.8,
mod_range: 0.5, mod_phase: 0.125, mod_wave: 2, pulse_width: 0.2
mynote = (note_range, :g4, :g6, pitches: (scale, :g, :minor_pentatonic))
play mynote.reverse.tick
rps.times do
control note: mynote.tick - [0, 12].choose
sleep [0.25, 0.25, 0.5, 0.5, 0.75].choose
end
tracker[5] = 0
sleep 2.5
end
else
sleep 1
end
end
if tracker[5] > 0 then
with_fx :flanger, stereo_invert_wave: 1, feedback: 0.5, amp: 0.5 do
sync :bass
sync :bass
use_synth :mod_beep
rps = (range 6, 9).choose
use_synth_defaults res: 0.9, attack: 0.25, noise: 2, release: 2 , cutoff: 100, amp: 0.2,
note_slide: 0.02, sustain: 0.25 * rps / 1.25, decay: 0.25 * rps / 1.25, sustain_level: 0.8,
mod_range: 0.5, mod_phase: 0.125, mod_wave: 2, pulse_width: 0.2
mynote = (note_range, :g4, :g6, pitches: (scale, :g, :minor_pentatonic))
play mynote.reverse.tick
rps.times do
control note: mynote.tick - [0, 12].choose
sleep [0.25, 0.25, 0.5, 0.5, 0.75].choose
end
sleep 2.5
end
else
sleep 1
end
end
end
live_loop :boom do
sync :kick
if tracker[6] == 1 then
with_fx :reverb, room: 1 do
sample :bd_boom, amp: 3
end
sample :drum_tom_hi_hard, amp: 3, rate: 0.2
tracker[6]=0
sleep 4
end
if tracker[6]>0 then
with_fx :reverb, room: 1 do
sample :bd_boom, amp: 1
end
sample :drum_tom_hi_hard, amp: 3, rate: 0.2
sleep 4
else
sleep 1
end
end
live_loop :alien_woosh do
sync :kick
if tracker[7] == 1 then
with_fx :reverb, room: 1 do
sample :ambi_dark_woosh
tracker[7]=0
sleep 4
end
end
if tracker[7]>0 then
with_fx :reverb, room: 1 do
sample :ambi_dark_woosh
sleep 4
end
else
sleep 1
end
end
live_loop :zawa do
sync :kick
if tracker[8] == 1 then
with_fx :reverb, room: 1 do
with_fx :slicer do
with_fx :pitch_shift, pitch: -12 do
use_synth :zawa
[3,5,6,7,8,10].choose.times do |i|
play chord(:e3, :minor).choose, release: [0.2, 0.4, 0.6, 0.8, 1].choose, pan: [1,0,-1].choose, cutoff: rrand(80, 110)
tracker[8]=0
sleep [0.25,0.5,0.75].choose
end
end
end
end
end
end
live_loop :pad do
sync :kick
if tracker[9] == 1 then
dubpad dchord, 0.125
tracker[9] = 0
sleep 16
end
if tracker[9] > 0 then
dubpad dchord, 0.125
sleep 16
end
sleep 0.1
end
live_loop :synth do
sync :kick
if tracker[10] == 1 then
ch = invert_chord(dchord, rand_i(3))
sleep synth_rhythm.tick
# get random values for 1-shot synth.
tick_advance = rrand_i(0,10)
tick_advance.times do
tick
end
with_fx :echo, amp: synth_volume, mix: 0.3,
decay: 8, phase: synth_phases.look do
with_fx :pan, pan: synth_pans.look do
with_fx :reverb, room: 0.7, damp: 0.8 do
with_synth_defaults attack: 0.05, release: 0.3 do
with_transpose synth_transpositions.look do
with_synth :sine do
play_chord ch
end
cutoff = synth_cutoffs.look
with_fx :ixi_techno, cutoff_min: cutoff,
cutoff_max: cutoff - 30, phase: 1, res: 0.3 do
with_synth :dsaw do
play_chord ch, attack: 0.1
tracker[10] = 0
end
end
end
end
end
end
end
end
if tracker[10] > 0 then
ch = invert_chord(dchord, rand_i(3))
sleep synth_rhythm.tick
with_fx :echo, amp: synth_volume, mix: 0.3,
decay: 8, phase: synth_phases.look do
with_fx :pan, pan: synth_pans.look do
with_fx :reverb, room: 0.7, damp: 0.8 do
with_synth_defaults attack: 0.05, release: 0.3 do
with_transpose synth_transpositions.look do
with_synth :sine do
play_chord ch
end
cutoff = synth_cutoffs.look
with_fx :ixi_techno, cutoff_min: cutoff,
cutoff_max: cutoff - 30, phase: 1, res: 0.3 do
with_synth :dsaw do
play_chord ch, attack: 0.1
end
end
end
end
end
end
end
else
sleep 0.1
end
end
live_loop :burp do
sync :kick
if tracker[11] == 1 then
with_fx :reverb, room: 1 do
with_fx :echo, mix: 0.3, phase: 0.25 do
with_fx :slicer do
with_fx :pitch_shift, pitch: 12 do
sample :misc_burp, rate: 0.2, amp: 3
tracker[11] = 0
sleep 4
end
end
end
end
end
if tracker[11]>0 then
with_fx :reverb, room: 1 do
with_fx :echo, mix: 0.3, phase: 0.25 do
with_fx :slicer do
with_fx :pitch_shift, pitch: 12 do
sample :misc_burp, rate: 0.2, amp: 3
sleep 4
end
end
end
end
else
sleep 1
end
end
kick = 0
snare = 1
hats = 2
bass = 3
skank = 4
lead = 5
boom = 6
alien_whoosh = 7
zawa = 8
dub_pad = 9
dub_synth = 10
burp= 11
boom = 6
start_loop lead
sleep 8
repeat_loop kick
sleep 2
repeat_loop snare
repeat_loop hats
sleep 4
repeat_loop bass
sleep 4
repeat_loop skank
sleep 4
start_loop lead
sleep 8
repeat_loop dub_pad
sleep 16
stop_loop dub_pad
repeat_loop dub_synth
sleep 32
start_loop zawa
sleep 8
start_loop burp
sleep 12
start_loop boom
sleep 12
start_loop burp
sleep 12
start_loop zawa
sleep 12
stop_loop dub_synth
sleep 8
repeat_loop dub_pad
sleep 12
start_loop lead
sleep 16
stop_loop dub_pad
sleep 4
start_loop lead
sleep 16
start_loop zawa
sleep 4
stop_all
And you might also be interested in an effects
suite I called āDub Generationā but never actually
posted to the forums before now I dont think:
" Dub Generation" # V3.0
#___________________________________________________________________________________
"TRACK"#___0___1___2___3___4___5___6___7___8___9__10___11___12___13__14___15___16__17__18 |
track = [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]
" 0 to deactivate, 1 for 1-shot effect, 2 for continuous loop."# |
#_________________________________________________________________________________________|
# __Track___________Track______________Track_____________Track_______ |
# / | | | \ |
# | 0 Kick | 6 Rim | 12 Whoosh | 18 Dub Pad | |
# | 1 Boom | 7 Bass | 13 Train | | |
# | 2 Beat 1 | 8 Skank | 14 Zawa | | |
# | 3 Beat 2 | 9 Swirl | 15 Burp | | |
# | 4 Snare/Roll | 10 Guitar 1 | 16 Ghostly keys | | |
# | 5 Hat | 11_Guitar 2 | 17 Synth tune | | |
# \________________|__________________|_________________|_____________/ |
#_________________________________________________________________________________________|
"KICK PATTERN"# 0___1___2___3___4___5___6___7 |
kick_pattern = [1 , 0 , 0 , 1 , 0 , 1 , 1 , 0].ring
#_________________________________________________________________________________________|
" ALT-R or CLICK 'RUN' to ACTIVATE"# |
#_________________________________________________________________________________________|
#
# Note: Not all effect/volume changes are instantaneous...
# you will need to judge them for yourself.
#
# Control Panel by: Eli...
#
# Extra 'BOOM' added for my friend Xomby. 'Respec'...
x=0
set_bpm = 100
kick = 0
boom = 1
base_drum = 2
secondary_drum = 3
snare = 4
hat = 5
rim = 6
bass = 7
skank = 8
lead = 9
guitar1 = 10
guitar2 = 11
alien_whoosh = 12
train = 13
zawa = 14
burp = 15
ghostly_keys = 16
dub_synth = 17
dub_pad = 18
synth_cutoffs = range(60, 100, 0.5).mirror
synth_rhythm = (ring 1.5, 1.5, 1)
synth_transpositions = (stretch 0, 36) + (stretch -12, 6) + (stretch 12, 6)
synth_phases = (stretch 0.75, 15) + [0.25]
synth_pans = (ring -0.5, 0.5)
synth_volume = 1
dubpad_cutoffs = range(70, 100, 5).mirror
dubpad_phases = (ring 8, 8, 8, 0.5)
dubpad_mixes = (ring 0.5, 0.5, 0.5, 0)
dchord = chord(:e3, :minor, num_octaves: 3)
dubpad_volume = 1
n = (ring :r, :r, :d2, :d3, :f3, :r, :d1, :f2)
define :combo do |s, t, u|
start_loop s
start_loop t
start_loop u
sleep 4
stop_loop s
stop_loop t
stop_loop u
end
define :sn_roll do #|length|
in_thread do
sn_amp = 0.05
4.times do
sample :sn_dolf, amp: sn_amp, sustain: 0, release: 0.125
sleep 0.0625
sn_amp += 0.07
end
end
end
define :dubpad do |ch, amp=0.25|
with_fx :echo, amp: amp, mix: dubpad_mixes.look,
phase: 1.5, decay: 2 do
with_fx :reverb, room: 0.8 do
with_fx :ixi_techno, phase: dubpad_phases.tick, cutoff_min: 70 do
with_synth :tb303 do
with_synth_defaults attack: 0.1, release: 8,
cutoff: dubpad_cutoffs.look, res: 0.5 do
play_chord ch
play_chord ch.map { |n| n + 0.3 } # Detune chord
end
end
end
end
end
end
# Repeat a loop.
define :repeat_loop do |i|
track[i] = 2
end
# Bring in a loop.
define :start_loop do |i|
track[i] = 1
end
# Remove a loop.
define :stop_loop do |i|
track[i] = 0
end
tick_set 1
live_loop :ticker, auto_cue: false do
use_bpm set_bpm
tick
cue :ticker
sleep 1
end
live_loop :beats do
sync :ticker
set :kick, kick_pattern.tick
cue :beats
end
live_loop :bar do
sync :beats
sleep 4
end
live_loop :kick do
if track[0] > 0 then
sync :beats
kicker = get :kick
puts kicker
sample :bd_tek, amp: 1 if kicker == 1
if track[0] == 1 then
track[0] = 0
end
else
sleep 0.25
end
end
live_loop :boom do
use_bpm set_bpm
sync :kick
if track[1] > 0 then
with_fx :reverb, room: 1 do
sample :bd_boom, amp: 3
end
sample :drum_tom_hi_hard, amp: 3, rate: 0.2
if track[1] == 1 then
track[1]=0
sleep 1
end
else
sleep 1
end
end
live_loop :base_drums do
use_bpm set_bpm
sync :kick
if track[2] > 0 then
with_fx :reverb, room: 0.5, phase: 0.5 do
with_fx :echo, mix: 0.3, phase: 0.25 do
2.times do
sample :drum_heavy_kick, amp: 1, release: 1
sleep 1.5
sample :drum_snare_hard, amp: 0.3, release: 1
sleep 1.5
end
if track[2] == 1 then
track[2]=0
end
end
end
else
sleep 1
end
end
live_loop :secondary_drums do
use_bpm set_bpm
sync :kick
if track[3] > 0 then
with_fx :reverb, room: 0.5, phase: 0.5 do
with_fx :echo, mix: 0.3, phase: 0.25 do
sleep 1.5
sample :drum_snare_hard, amp: 0.3, release: 1
sleep 1.5
sample :drum_heavy_kick, amp: 0.8, release: 1
sleep 1.5
sample :drum_snare_hard, amp: 0.5, release: 1
sleep 0.5
sample :drum_bass_soft, amp: 0.25, release: 1
sleep 0.25
sample :drum_bass_hard, amp: 0.75, release: 1
sleep 0.25
sample :drum_bass_soft, amp: 0.5, release: 1
sleep 0.5
if track[3] == 1 then
track[3]=0
end
end
end
else
sleep 1
end
end
with_fx :reverb, mix: 0.35, room: 0.1, damp: 0.9 do
live_loop :snare do
use_bpm set_bpm
if track[4]>0 then
use_sample_defaults sustain: 0, release: 0.25
sleep 0.75
sn_roll if rand > 0.8
sleep 0.25
sample :sn_dolf
del = [0.25, 0.5, 0.75].choose
cue :bass
sleep del
sample :drum_snare_soft, amp: 0.7 if rand > 0.5
sleep 1 - del
if track[4] == 1 then
track[4] = 0
end
else
sleep 1
end
end
end
live_loop :hat1 do
use_bpm set_bpm
if track[5]>0 then
sample :drum_cymbal_closed, sustain: 0.125, amp: 0.3 if rand > 0.9
sleep 0.5
sample :drum_cymbal_closed, sustain: 0.125, amp: 0.5
sleep 0.5
if track[5] == 1 then
track[5] = 0
end
else
sleep 1
end
end
live_loop :rim do
use_bpm set_bpm
if track[6]>0 then
sample [:elec_tick, :elec_blip].choose, sustain: 0.006, amp: 0.8, hpf: 100 if rand > 0.3
sleep 0.25
if track[6] == 1 then
track[6] = 0
end
else
sleep 1
end
end
live_loop :bass do
use_bpm set_bpm
if track[7]>0 then
if rand(1) > 0.75
n = (ring :r, :r, :d2, :d3, :f3, :r, :d1, :f2)
else
n=n.shuffle
end
use_synth :fm
use_transpose +12
use_synth_defaults release: 0.125 + rrand(0, 0.2), amp: 0.25, pan: rrand(-0.5, 0.5)
use_transpose +12
play n.look, cutoff: rrand(30, 130)
sleep 0.25
tick
if track[7] == 1 then
track[7] = 0
end
else
sleep 1
end
end
with_fx :gverb, mix: 0.1, room: 20, amp: 0.6 do
use_bpm set_bpm
live_loop :skank do
if track[8]>0 then
with_fx :bitcrusher, mix: 0.7, amp: 0.5, bits: 8, sample_rate: 3136 do
use_synth :dpulse
use_synth_defaults release: 0.125
sleep 0.5
if rand > 0.8
with_fx :echo, phase: [0.25, 0.333, 0.375, 0.75].choose, decay: 4, mix: 0.5 do
play (chord, :g4, :m, invert: -1)
end
else
play (chord, :g4, :m, invert: -1)
end
3.times do
sleep 1
play (chord, :g4, :m, invert: -1)
end
sleep 0.5
if track[8] == 1 then
track[8] == 0
end
end
else
sleep 1
end
end
end
with_fx :echo, mix: 0.8, phase: 0.75, decay: 4 do
with_fx :flanger, stereo_invert_wave: 1, feedback: 0.5, amp: 0.5 do
live_loop :lead do
use_bpm set_bpm
if track[9] > 0 then
with_fx :flanger, stereo_invert_wave: 1, feedback: 0.5, amp: 0.5 do
sync :bass
sync :bass
use_synth :mod_beep
rps = (range 6, 9).choose
use_synth_defaults res: 0.9, attack: 0.25, noise: 2, release: 2 , cutoff: 100, amp: 0.2,
note_slide: 0.02, sustain: 0.25 * rps / 1.25, decay: 0.25 * rps / 1.25, sustain_level: 0.8,
mod_range: 0.5, mod_phase: 0.125, mod_wave: 2, pulse_width: 0.2
mynote = (note_range, :g4, :g6, pitches: (scale, :g, :minor_pentatonic))
play mynote.reverse.tick
rps.times do
control note: mynote.tick - [0, 12].choose
sleep [0.25, 0.25, 0.5, 0.5, 0.75].choose
end
if track[9]== 1 then
tracker[9] = 0
end
sleep 2.5
end
else
sleep 1
end
end
end
end
live_loop :guitar1 do
use_bpm set_bpm
sync :kick
if track[10] > 0 then
with_fx :reverb, room: 1 do
with_fx :echo, mix: 0.3, phase: 0.25 do
with_fx :slicer do
sample :guit_em9, rate: 1
sleep 4
if track[10] == 1 then
track[10]=0
sleep 1
end
end
end
end
else
sleep 1
end
end
live_loop :guitar2 do
use_bpm set_bpm
sync :kick
if track[11] > 0 then
with_fx :reverb, room: 1 do
with_fx :pitch_shift, pitch: -6 do
sample :guit_e_fifths, rate: 1
sleep 4
if track[11] == 1 then
track[11] = 0
sleep 1
end
end
end
else
sleep 1
end
end
live_loop :alien_woosh do
use_bpm set_bpm
sync :kick
if track[12] > 0 then
with_fx :reverb, room: 1 do
sample :ambi_dark_woosh
sleep 4
if track[12] == 1 then
track[12]=0
sleep 1
end
end
else
sleep 1
end
end
live_loop :train do |s|
use_bpm set_bpm
sync :kick
if track[13] > 0 then
with_fx :reverb, room: 0.5, phase: 0.5 do
if s
sleep 2
end_release = 4
else
end_release = 6
end
use_synth :bnoise
play :Cs3, amp: 0.5, pan: -1
sleep 0.25
play :Es3, amp: 0.25, pan: 1
sleep 0.5
play :Cs2, amp: 0.4, pan: -1
sleep 0.25
play :Es2, amp: 0.25, pan: 1
sleep 0.5
play :Ds3, amp: 0.3, pan: -1
sleep 0.25
play :Bs3, amp: 0.25, pan: 1
sleep 0.5
play :Ds2, amp: 0.3, pan: -1
sleep 0.25
play :Bs2, amp: 0.25, pan: 1, release: end_release
if track[13] == 1 then
track[13]=0
sleep 1.5
end
end
else
sleep 1
end
end
live_loop :zawa do
use_bpm set_bpm
sync :kick
if track[14] > 0 then
with_fx :reverb, room: 1 do
with_fx :slicer do
with_fx :pitch_shift, pitch: -12 do
use_synth :zawa
[3,5,6,7,8,10].choose.times do |i|
play chord(:e4, :minor).choose, release: [0.2, 0.4, 0.6, 0.8, 1].choose, pan: [1,0,-1].choose, cutoff: rrand(80, 110)
sleep [0.25,0.5,0.75].choose
if track[14] == 1 then
track[14]=0
sleep [0.25,0.5,0.75].choose
end
end
end
end
end
else
sleep 1
end
end
live_loop :burp do
use_bpm set_bpm
sync :kick
if track[15] > 0 then
with_fx :reverb, room: 1 do
with_fx :echo, mix: 0.3, phase: 0.25 do
with_fx :slicer do
with_fx :pitch_shift, pitch: 12 do
sample :misc_burp, rate: 0.2, amp: 3
sleep 4
if track[15] == 1 then
track[15] = 0
sleep 4
end
end
end
end
end
else
sleep 1
end
end
live_loop :ghostly_keys do
use_bpm set_bpm
sync :kick
if track[16] > 0 then
with_fx :reverb, room: 0.8 do
with_fx :echo, delay: 0.5, decay: 4 do
use_synth :dark_ambience
play chord([:b3, :b4, :e3, :e4].choose, :minor).choose,
amp: 1.5, release: 6
[5,6,7,8,9,10].choose.times do |i|
use_synth :piano
play chord([:b1, :b2, :b3, :e1, :e2, :e3].choose,
:minor).choose, cutoff: rrand(40, 100),
amp: 0.75, attack: 0, release: rrand(1, 2),
cutoff_max: 110, pan: [-1, 0, 1].choose
sleep [0.25, 0.5, 0.5, 0.5, 1, 1].choose
if track[16] == 1 then
track[16] = 0
sleep 1
end
end
end
end
else
sleep 1
end
end
live_loop :synth do
use_bpm set_bpm
sync :kick
if track[17] > 0 then
ch = invert_chord(dchord, rand_i(3))
sleep synth_rhythm.tick
# get random values for 1-shot synth.
tick_advance = rrand_i(0,10)
tick_advance.times do
tick
end
with_fx :echo, amp: synth_volume, mix: 0.3,
decay: 8, phase: synth_phases.look do
with_fx :pan, pan: synth_pans.look do
with_fx :reverb, room: 0.7, damp: 0.8 do
with_synth_defaults attack: 0.05, release: 0.3 do
with_transpose synth_transpositions.look do
with_synth :sine do
play_chord ch
end
cutoff = synth_cutoffs.look
with_fx :ixi_techno, cutoff_min: cutoff,
cutoff_max: cutoff - 30, phase: 1, res: 0.3 do
with_synth :dsaw do
play_chord ch, attack: 0.1
sleep synth_rhythm.look
if track[17] == 1 then
track[17] = 0
end
end
end
end
end
end
end
end
else
sleep 0.1
end
end
live_loop :pad do
use_bpm set_bpm
sync :kick
if track[18] > 0 then
dubpad dchord, 0.25
sleep 16
if track[18] == 1 then
track[18] = 0
sleep 1
end
else
sleep 1
end
end
Regards,
Eliā¦
Blimey Eli thatās amazing! Iāve got it playing now. Thatās a great idea have the control in an array at the top.