I really enjoyed what you did with it, Robin! Lots of bits for me to learn from.
I played with your code for about 10 minutes and ruined it by adding some drums 
#ruined with drums by theibbster
#from: chord progressions doodles by Robin Newman Jan 2021
#from: initial code by theibbster
use_debug false
define :chrd do |deg, tonic, sca|
n = 3
if deg.match?('7')
n = 4
deg = deg.slice(0,deg.length-1).to_sym
end
return (chord_degree deg, tonic, sca, n)
end
p1 = [:i,:v,:vi,:iv]
p2 = [:i,:iv,:v,:iv]
p3 = [:ii7,:v7,:i7]
p4 = [:i,:i,:i,:i,:iv,:iv,:i,:i,:v,:iv,:i,:i]
p5 = [:i,:vi,:iv,:v]
p6 = [:i,:v,:vi,:iii,:iv,:i,:iv,:v]
pl=(ring p1,p2,p3,p4,p5,p6).shuffle #set up ring of progressions
with_fx :reverb,room: 0.8,mix: 0.7 do #add reverb
with_fx :level,amp: 1 do |vol| #vary vol as piece progresses
set :vol,vol #stopre ref to fx_level for control
live_loop :chord_progs do
progression = pl.tick #get next progresion
tick_set :tt,look/6 #define tick for tonic changes
tonic = (ring 62.5,62.5+7,62.5-5,62.5-12,62.5+7-12,62.5-5-12).look(:tt)
#puts tonic
#choose scale from specified list
myScale = (ring :major,:mixolydian,:minor,:minor_pentatonic,:dorian,:aeolian).choose# or tick(:sc)
#process next progression
progression.each_with_index do |deg,i|
nl=(chrd deg, tonic, myScale) #get notes to play
use_synth :dsaw #play bass note with dsaw
play nl[0]-12,\
sustain: (nl.length)*0.9*0.095,release: 0.005,\
amp: 0.7,pan: (-1)**i #alternate notes on pan +-1
use_synth :pulse #use pulse for fast notes
nl.each do |n| #play notes in sequence
play n,\
sustain: 0.095,release: 0.005,\
amp: 0.5,pan: (-1)**tick(:iloop) #alternate notes on pan +-1
sleep 0.1
end
end#progression
end#liveloop
end#level
end#reverb
live_loop :vet do #control level output on 10 sec up/down ramp
vlev=[0.4,1].tick
control get(:vol),amp: vlev,amp_slide: 10
control get(:vol2),amp: vlev*1.1, amp_slide: 5
sleep 10
end
live_loop :triplethats do
off = rrand(-0.025, 0.025)
samp = :drum_cymbal_soft
use_sample_defaults lpf: 115
with_fx :level, amp: 1.1 do |vol2|
set :vol2, vol2
with_bpm 120 do
sample samp, amp: rrand(0.75,1)
sleep 1
sample samp, amp: rrand(0.75,0.95), pan: rrand(0.1,0.25)
sleep 2.0/3 + off
sample samp, amp: rrand(0.45,0.7), pan: rrand(-0.25,-0.1)
sleep 1.0/3 - off
end
end
end
live_loop :bd do
with_bpm 120 do
sample :bd_boom, amp: 1.2
sleep 1
end
end