I like dissonance and breakdowns
#bass drums
bd_patterns =
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,0],
[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0],
[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0],
[1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0],
[1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0],
[1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1]
#snares
sn_patterns =
[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]
#cymbals
cy_patterns =
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0],
[1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0],
[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]
#notes
n_patterns =
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,0],
[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0],
[1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0],
[1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0],
[1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
#dissonance
d_patterns =
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0],
[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0],
[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
use_synth :blade
use_bpm 200
#bass tone
b = :dsaw
#lead tone
s = :chiplead
#key
r = :a1
notez = [:m7, :m, :m9]
#volume
amp = 1.5
bamp = 0.5
samp = 0.5
#note subdivisions
sl = 0.5
#repeats
bl = 4
# compressor and EQ
with_fx :compressor, mix: 0.5, amp: 0.5 do
with_fx :eq, high_shelf: 0.5, high: 0.25, mid: 0.25, low: -1.5, low_shelf: 1.5 do
#loopit
live_loop :beat do
#scale to use
n = choose(notez)
#fetch a pattern for each drum
bd = choose(bd_patterns)
sn = choose(sn_patterns)
cy = choose(cy_patterns)
#synth note triggers and dissonant triggers
no = choose(n_patterns)
di = choose(d_patterns)
# make up a bassline
bass = [
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n))
]
#make up a lead
lead = [
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n)),
choose(chord(r,n))
]
bl.times do
#balo is the count
balo = 0
16.times do
#play synth line
#if a note is "1" then play
if no[balo] == 1
#if dissonance is "1" then play gross tone
if di[balo] == 1
use_synth s
#always play a short noe on 16
if balo == 16
play lead[balo] + 37, sustain: sl , amp: samp
play lead[balo] + 37.66, sustain: sl , amp: samp
play lead[balo] + 38.33, sustain: sl , amp: samp
else
#extrend the dissoance if the next note is blank
if no[balo + 1] == 0
play lead[balo] + 37, sustain: sl * 2 , amp: samp
play lead[balo] + 37.66, sustain: sl * 2 , amp: samp
play lead[balo] + 38.33, sustain: sl * 2 , amp: samp
else
play lead[balo] + 37, sustain: sl , amp: samp
play lead[balo] + 37.66, sustain: sl , amp: samp
play lead[balo] + 38.33, sustain: sl , amp: samp
end
end
#play consonant tone
else
use_synth s
play lead[balo] , sustain: sl , amp: samp * 2
play lead[balo] + 12, sustain: sl , amp: samp * 2
play lead[balo] + 18, sustain: sl , amp: samp * 2
end
end
#bass drum
if bd[balo] == 1
sample :drum_heavy_kick, sustain: 0.04, amp: amp
#sync bassline with drums
use_synth b
if balo == 16
play bass[balo], attack: 0.1, sustain: sl, amp: bamp
else
if bd[balo + 1] == 0
if bd[balo + 2] == 0
play bass[balo], attack: 0.1, sustain: sl * 3, amp: bamp
else
play bass[balo], attack: 0.1, sustain: sl * 2, amp: bamp
end
else
play bass[balo], attack: 0.1, sustain: sl, amp: bamp
end
end
end
#snare
if sn[balo] == 1
sample :drum_snare_hard, amp: amp, sustain: 0.04
sample :drum_snare_hard, amp: amp, sustain: 0.02
end
#cynbals
if cy[balo] == 1
sample :drum_cymbal_open, amp: 0.5
end
sleep sl
balo += 1
end
end
end
end
end
*edited for sassiness