# 221206 2154 exploring prophet as bass synth Markskarnbasse Geotrupes spiniger set get mixer
# Saved 221206 2154
# Backup
# Created by https://linktr.ee/relaxnow
# YT performance https://youtu.be/25NXkcdPTU8
/ Geotrupes spiniger on a november day /
## NB this code struggles on my laptop.
## Recorded on a gamer computer
# manual songform
# vs
# auto songform is a bit offset. I dont understand why??
live_loop :time, delay: 0.01 do
sleep 1
end
live_loop :songform, sync: :time do
tick
puts status
/ auto progression songform /
# songform = knit(1,16, 2,16, 3,32).to_a.look # works
#songform = knit(1,16, 2,16, 4,16, 3,32).look # works
# bass 1-3
# drum 1
# 2
# 3 1/4 kick
# 4
# 5
# tick 1 with bass
# 2 without bass
# arp 1 part A few notes
# 2 part B high notes long seq
# 3 extra bass with no top piano
# piano 1
/ Can I make songform take less space with a define? Yes /
define :songform2 do |bass,drum,tick,arp,piano|
puts set :bass, bass
puts set :drum, drum
puts set :tick, tick
puts set :arp , arp
puts set :piano, piano
end
/ manual mixer /
#songform2(0,0,0,0,0) # |bass,drum,tick,arp,piano|
/ songform change here 0-29 /
# manual changing here works but it's hard to times switching between sections
sf = 32 # should be 32
songform = knit(1,sf, 2,sf, 3,sf, 4,sf, 5,sf, 6,sf, 7,sf, 8,sf, 9,sf, 10,sf, 11,sf, 12,sf, 13,sf, 14,sf, 16,sf, 17,sf, 18,sf, 19,sf, 20,sf, 21,sf, 22,sf, 23,sf, 24,sf, 25,sf, 26,sf, 27,sf, 28,sf, 29,sf).look
puts songform
puts "--------"
songform = 29 # works
### Possible progessions
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# ---------------------------------------------------------------------------------------------------------------
# bass 1 1 1 1 2 1 3 1 1 1 1 1 1 1 1 1 3 2 3 2 2 1 1 1
# drum 3 1 1 1 1 3 1 1 1 1 3 3 2 2 2 3 0 1 1 1
# tick 1/2 1/2 1/2
# arp 0 2 1 2 3 3 1 1 2 1 2 2 1 1 3 1 3 3 (1) 1
# piano 0 1 1 1 1 1
# |bass,drum,tick,arp,piano|
case songform
when 0
songform2(0,0,0,0,0)
when 1
songform2(1,0,0,0,0)
when 2
songform2(1,1,0,0,0)
when 3
songform2(1,0,0,1,0)
when 4
songform2(1,0,0,2,0)
when 5
songform2(2,1,0,0,0)
when 6 # nice
songform2(1,1,0,0,0)
when 7 # krush like feel ostinat
songform2(3,1,0,0,0)
when 8
songform2(1,1,0,2,0)
when 9
songform2(0,0,0,3,0) # deep synth
when 10
songform2(0,3,0,3,0)
when 11
songform2(0,1,0,1,0)
when 12 # nice
songform2(1,1,0,1,0)
when 13
songform2(1,1,0,2,0)
when 14 # calm piano
songform2(1,1,0,0,1)
when 15 # 4 on floor + piano
songform2(1,3,0,0,1)
when 16 # lively
songform2(1,3,0,1,0)
when 17 # breaklike
songform2(0,2,0,2,0)
when 18
songform2(1,2,0,2,0)
when 19
songform2(1,2,0,1,0)
when 20
songform2(1,0,0,1,0)
when 21 # deep transition
songform2(3,0,0,3,0)
when 22
songform2(2,0,0,1,0)
when 23 # deep transition + 4 on floor
songform2(3,3,0,3,0)
when 24
songform2(0,0,0,3,0)
when 25 # piano in big space
songform2(2,0,1,0,1)
when 26 # part B on bass
songform2(2,1,0,1,1)
when 27 # Part A on bass
songform2(1,1,0,1,1)
when 28
songform2(1,1,0,0,0)
when 29
songform2(1,0,0,0,0)
end
sleep 1
end
with_fx :reverb do
/ bass /
live_loop :bass1, sync: :time do
tick
if get[:bass]==1
use_synth :prophet
use_synth_defaults release: rrand(0.1,0.5), amp: [1,0.5,0.5].look+2, cutoff: rrand_i(50,[70,80,90,100,110,120,130].look)
a = 16
play :f2+knit(0,a, 3,a, -5,a, -4,a, 0,a, 5,a, 7,a, 8,a).look, amp: 4
play :f4+knit(3,a/2,0,a/2).look
end
if get[:bass]==2
use_synth :prophet
use_synth_defaults release: rrand(0.1,0.5), amp: [1,0.5,0.5].look+2, cutoff: rrand_i(50,[70,80,90,100,110,120,130].look)
a = 16
play :f2+knit(0,a, -2,a, -7,a, -5,a, 0,a).look, amp: 4
play :f4+knit(0,a, -2,a, -7,a, -5,a, 0,a).look
end
if get[:bass]==3
use_synth :prophet
use_synth_defaults release: rrand(0.1,0.5), amp: [1,0.5,0.5].look+2, cutoff: rrand_i(50,[70,80,90,100,110,120,130].look)
a = 16
play :f2, amp: 4
end
sleep 0.25
end
/ kick /
live_loop :drum1, sync: :time do
tick
if get[:drum]==1
sample :bd_haus, cutoff: 85, amp: [4,2,2,3,2,2,2].look if bools(1,0,0,1,0,0,1).look # nice
sample :sn_generic, cutoff: 125, amp: [1,2,3].choose, rate: [1,2,4,8].ring.stretch(4).choose if bools(0,1,0,0,0,0,0).look #and one_in(2)
end
if get[:drum]==2
sample :bd_haus, cutoff: 85, amp: 4 if bools(1,0,0,1,0,0).look
sample :sn_generic, cutoff: 125, amp: [1,2,3].choose, rate: [1,2,4,8].ring.stretch(4).choose if bools(0,1,0,0,0,0,0).look #and one_in(2)
end
if get[:drum]==3
sample :bd_haus, cutoff: 85, amp: 4 if spread(4,8).look
end
if get[:drum]==4
sample :bd_haus, cutoff: 85, amp: 4 if spread(3,8).look
sample :sn_generic, cutoff: 105, amp: [1,2].choose, rate: [1,2,4,8].ring.stretch(4).choose if bools(0,1,0,0,1,1,0).look #and one_in(2)
end
if get[:drum]==5
sample :bd_haus, cutoff: 85, amp: 4 if bools(1,1,0,0,0, 1,0,0,0,0).look
end
sleep 0.25
end
/ tick /
live_loop :tick1, sync: :time do
tick
density [1,1,1,3].look do
if get[:tick]==1
# With bass
sample :elec_tick, amp: 2, rpitch: [0,0,0,0,12].look+knit(0,32,3,32).look+12, pan: rrand(-1,1) if bools(1,1,0,1).look or spread(3,5).look
end
if get[:tick]==2
# Without bass
sample :elec_tick, amp: 4, rpitch: [0,0,0,0,12].look+knit(0,32,3,32).look+12-12, pan: rrand(-1,1) if bools(1,1,0,1).look or spread(3,5).look
end
sleep 0.25
end
end
/ arp /
live_loop :arp1, sync: :time do
tick
if get[:arp]==1
use_synth :saw
use_synth_defaults release: [0.1,0.05,0.2].ring.stretch(8).look, cutoff: [70,80,90,100,110,120,130].ring.stretch(16).look
no = [0,3,5,-4,-5] # without piano_mel
play :f3+no.look, amp: 2, pan: -0.5
use_synth :piano
play :f5+no.look, amp: 2, pan: 0.5
end
if get[:arp]==2
use_synth :saw
use_synth_defaults release: [0.1,0.05,0.2].ring.stretch(8).look, cutoff: [70,80,90,100,110,120,130].ring.stretch(16).look
no = [0,3,5,-4,-5] # without piano_mel
no = [5,7,12,12+3,12+5,12+7,12+5,12+3,12] # with piano_mel
play :f3+no.look, amp: 2, pan: -0.5
use_synth :piano
play :f5+no.look, amp: 2, pan: 0.5
end
if get[:arp]==3
use_synth :saw
use_synth_defaults release: [0.1,0.05,0.2].ring.stretch(8).look, cutoff: [70,80,90,100,110,120,130].ring.stretch(16).look
no = [0,3,5,-4,-5] # without piano_mel
play :f2+no.look, amp: 2, pan: -0.5 # bass
play :f3+no.look, amp: 2, pan: -0.5
use_synth :piano
end
sleep 0.125
end
end
with_fx :reverb, room: 0.9 do
/ piano /
live_loop :piano_mel1, sync: :time do
#stop
tick
use_synth :piano
density [1,1,1,3].look do
if get[:piano]==1
no = [0,3,5,-4,-5]
play :f5+no.look, amp: 4, sustain: 4 if bools(1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,1,0).look
end
sleep 1
end
end
end
2 Likes
there is a bug in your tune
Not really, i would say a geotrupes spiniger
1 Like