New study with harmonic progressions

Hello,

In between two working sessions as an accoutant, I try to find time to work with Sonic Pi.
I’m trying to figure out an effective way to create musical progressions that are a bit random to create various paths. I slowly getting there.

The ‘code’ is is C minor with a secondary dominants in Bb minor. Not very complicated to help me follow what is going on.

I think that there may be a more elegant way to make the bass follow the chords, still trying to figure this out. Any idea will be welcome

https://youtu.be/Ed1qL-KpgVA

use_bpm 90

#H23
#SECTION HARMONIQUE
#retravailler sur le voice leading
#ajout de
#ajoute d’un mode mineur et majeur
#revoir le parcours des notes

i = [:C3, :G3,:Ef4,:C5, ]
ii = [:D2, :A3,:D4,:F4, ]
III = [:Ef3, :Bf3, :G3,:Ef5]
iV = [:F3,:Af3, :F4, :C5]
V = [:G2, :D3, :G4,:B4]
VI = [:Af2, :Af3, :Ef4,:G4]
Vii = [:B2, :F3, :D4,:D5]
n = [:F2, :F3, :Af3,:Df5]
V7 = [:G2, :F3, :B3,:D5]

#seconde
ii7deVII = [:C3, :Gf3,:Ef4,:A4, ]
V7deVII = [:C3, :F3,:Ef4,:B4, ]

live_loop :test do
evol = (line 60,130, steps:22).mirror
pano = (line -1,1, steps:16).mirror

use_synth :dsaw
set :x ,rrand_i(1,10)
print get[:x]

4.times do
play i ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
#play_pattern_timed i, [0.25]
#sleep 2
if get[:x] < 5
4.times do
play VI ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play ii7deVII ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play V7deVII,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
else
if get[:x] < 7
4.times do
play V ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play i ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play n ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
else
if get[:x] > 9
4.times do
play III ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play iV ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play Vii ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play III ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play VI ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play ii ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
4.times do
play V ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end
else
4.times do
play V7 ,decay:2 , cutoff:evol.tick , pan: pano.tick
sleep 2
end

  end
end

end
end

#SECTION MELODIQUE

#SECTION BASSE

live_loop :bass do
use_synth :fm
use_octave -1

8.times do
play i[0]
sleep 1
end
if get[:x] < 5
8.times do
play VI[0]
sleep 1
end
8.times do
play ii7deVII[0]
sleep 2
end
8.times do
play V7deVII[0]
sleep 1
end
else
if get[:x] < 7
8.times do
play V[0] ,decay:2
sleep 1
end
8.times do
play i[0]
sleep 1
end
8.times do
play n[0] ,decay:2
sleep 1
end
else
if get[:x] > 9
8.times do
play III[0]
sleep 1
end
8.times do
play iV[0]
sleep 1
end
1.times do
play Vii[0]
sleep 1
end
8.times do
play III[0]
sleep 1
end
8.times do
play VI[0]
sleep 1
end
8.times do
play ii[0]
sleep 1
end
8.times do
play V[0]
sleep 1
end
else
8.times do
play V7[0]
sleep 1
end
end
end
end
end

#SECTION PERCUSSION
live_loop :bassdrum do

#stop
with_fx :reverb , room:0.7 do
#1e
bd = :bd_haus

# :drum_bass_hard
# :drum_bass_soft
# :drum_heavy_kick
# :bd_haus
# :bd_808

sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25


#2e

sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25

#3e
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25
sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25

#4e
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25

#2E MESURE
#1e
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25
sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25


#2e

sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25
sample bd
sleep 0.25

#3e
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25

#4e
sample bd ,amp:0
sleep 0.25
sample bd
sleep 0.25
sample bd ,amp:0
sleep 0.25
sample bd ,amp:0
sleep 0.25

end
end
live_loop :hihat do

#cue :metro
with_fx :reverb do
use_synth :pnoise

with_fx :hpf, cutoff: rrand(120,122) do
  play release: 0.01, amp: 0
  sleep 0.5
end
with_fx :hpf, cutoff: 105 do
  play release: rrand(0.10,0.3) , amp: 4
  sleep 0.5
end

end
end

live_loop :snare do

#stop
with_fx :reverb ,room:0.7 do
sn = :drum_snare_soft
# :drum_snare_soft
# :drum_snare_hard

#1
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25

#2
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25

#3
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25
#4
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25

#1
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25

#2
sample sn
sleep 0.25
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25

#3
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25
#4
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25
sample sn
sleep 0.25
sample sn ,amp:0
sleep 0.25

end
end

4 Likes