About a harmonic chord progression

hello there! :grinning:
in this harmonic progression found in a Mr Bomb tutorial, my 6th degree (A4) is higher than the C4 one, how is it possible to ask to SPi to get that 6th degree one octave lower (A3)? This to have a more balanced version of my progression…
Thanks for attention!


comment do
  progression = (ring, :i, :vi, :ii, :v)
  
  use_synth :piano
  with_fx :reverb, mix: 0.7 do
    live_loop :prog do
      play chord_degree(progression.tick, :c4, :major, 3), release: 4
      sleep 2
    end
  end
end

Hi @beryann
Is chord_invert any use to you?

use_synth :piano

play (chord_invert (chord :A3, "m"), 0)
sleep 1
play (chord_invert (chord :A3, "m"), -1)
sleep 1
play (chord_invert (chord :A3, "m"), -2)
sleep 1
play (chord_invert (chord :A3, "m"), -3)

It might be using a hammer to crack an egg - but it’s a cool function :wink: And you can also use .rotate(n) on a ring.
PD-Pi

2 Likes

Hello brendan @brendanmac and thanks for your help! i know this possibility but in fact I am searching for something else.
Perhaps my english wasn’t clear enough :upside_down_face:
If you consider this progression
progression = (ring, :i, :vi, :ii, :v)
the A is above the C, it is higher and I want it to sound an octave lower so that it is lower than the C4 (so an A3). Basically I would like this by inventing the syntax:
progression = (ring, :i(:c4), :vi(:a3), :ii(:d4), :v(:g4)
I hope my query is clearer to understand! :hugs:
Thnaks dor help!

chord_invert(-3) will shift a triad down one octave; but does chord_degree accept negative integers?
:thinking:

PD-Pi

You could have another ring for the octaves:

progression = (ring, :i, :vi, :ii, :v)
octaves = (ring 0, -1, 0, 0)

use_synth :piano
with_fx :reverb, mix: 0.7 do
  live_loop :prog do
    tick
    with_octave octaves.look do
      play chord_degree(progression.look, :c4, :major, 3), release: 4
    end
    sleep 2
  end
end
1 Like

hello Emelyn @emlyn @brendanmac thanks for your ideas…good idea with the octaves array (I think that with_octave octaves.lookneeds a “do”)
I found also that other solution searching for “chord_degree” in the native documentation :cowboy_hat_face:

 #progression = (:i,:vi,:ii, :v)
  
  live_loop :progression do
    use_synth :piano
    with_fx :reverb, mix: 0.7 do
      play (chord_degree :i, :c4, :major, 1)
      sleep 1
      play (chord_degree :vi, :c3, :major, 1)
      sleep 1
      play (chord_degree :ii, :c4, :major, 1)
      sleep 1
      play (chord_degree :v, :c3, :major, 1)
      sleep 1
    end
  end

With the “1” at the end you get just the root of the chord…So if you want the complete chord, you have to write “3” instead. So, if you want a bass line with it, you copy and paste and change “1” to “3” et voilà! (there is probably a better way to get a smaller block of code!) :sweat_smile:

Yes, you’re right, I missed out a do (I initially used use_octave to test it but decided to edit it to use with_octave and forgot the do). I’ve edited the post to add the missing do.

1 Like

I did not know about with_octave. It’s amazing how well-thought-out this system is.