New Tool (3.1) ChordGun


(Raul (ulneiz)) #21

Oh cool didn’t know about that Record & Play Filter, that does seem to solve the problem.

More inversion values were added to provide a greater range as a convenience, so you could easily fit a chord in a progression for smooth voice leading. For example it would be annoying if you went up two inversions and it’s still not high enough, so then you have to increment the octave and lower the inversions to make it fit. This allows you to keep going past the current octave, to fit it in without having to play with two levers

Ok, I’m using a virtual piano with 120 notes. So, to cover all the inversions, it is enough that you go to the next octave (there would be±2,±3 or±4 inversions in the chords of few notes, 3, 4, or 5 notes), since you can shoot each chord from any of the 120 piano notes (there are the 10 octaves directly).

What I still have doubts is how to adjust each chord according to the scale. For example, I am using tables to define each chord, of this style:

For maj (no scale): {0,4,7}. How to convert this for all the scales that Renoise offers in the Instrument Editor (Natural Major, Natural Minor, 5 tone Scales…), in order to also add the inversions?

I’m using this table:

Click to view contents
PRE_CHD_VAL={ --24=121=empty
  {24,24,24,24,24,24,24},
  {0,4,24,24,24,24,24},
  {0,7,24,24,24,24,24},
  {0,4,7,9,24,24,24},
  {0,4,9,24,24,24,24},
  
  {0,4,9,14,24,24,24},
  {0,4,7,9,14,24,24},
  {0,5,7,9,24,24,24},
  {0,5,7,9,14,24,24},
  
  {0,4,7,10,24,24,24},
  {0,4,7,9,10,24,24},
  {0,4,7,10,14,24,24},
  {0,4,7,10,21,24,24},
  
  {0,5,7,10,24,24,24},
  {0,4,8,10,24,24,24},
  {0,4,7,10,15,24,24},
  {0,4,6,10,24,24,24},
  
  {0,4,7,10,13,24,24},
  {0,4,11,14,24,24,24},
  {0,4,7,9,10,14,24},
  {0,5,7,10,14,24,24},
  
  {0,4,8,10,14,24,24},
  {0,4,6,10,14,24,24},
  {0,4,7,10,14,17,24},
  {0,4,7,10,13,17,24},
  
  {0,4,7,10,14,17,21},
  {0,4,7,10,14,18,21},
  {0,4,7,10,13,17,21},
  {0,4,7,10,13,18,21},
  
  {0,4,6,10,13,17,21},
  {0,4,7,14,24,24,24},
  {0,4,8,24,24,24,24},
  {0,4,7,10,14,18,24},
  
  {0,4,6,24,24,24,24},
  {0,4,6,10,13,24,24},
  {0,4,8,10,13,24,24},
  {0,4,7,10,13,18,24},
  
  {0,3,6,24,24,24,24},
  {0,3,6,9,24,24,24},
  {0,4,7,24,24,24,24},
  {0,4,7,11,24,24,24},
  
  {0,5,7,11,24,24,24},
  {0,4,8,11,24,24,24},
  {0,4,7,11,14,24,24},
  {0,5,7,11,14,24,24},
  
  {0,4,7,11,14,17,24},
  {0,4,7,11,14,17,21},
  {0,3,7,24,24,24,24},
  {0,3,7,9,24,24,24},
  
  {0,3,7,9,14,24,24},
  {0,3,7,10,24,24,24},
  {0,3,6,10,24,24,24},
  {0,3,7,10,14,24,24},
  
  {0,3,7,14,24,24,24},
  {0,3,7,11,24,24,24},
  {0,3,7,11,14,24,24},
  {0,3,7,10,14,17,24},
  
  {0,3,7,10,14,17,21},
  {0,2,7,24,24,24,24},
  {0,5,7,24,24,24,24},
}

Do you also use tables or have you used any mathematical operation for each case?I’m dealing with almost 60 different chords between 3 and 7 notes.


(pandabot) #22

I use a function that was written by either dread or suva, it seemed to work so I didn’t mess with it too much

function applyInversion(chord)
  
  local chordLength = #chord
  local chordInversionValue = getCurrentInversionValue()
  local chord_ = chord
  local oct = 0  
  
  if chordInversionValue < 0 then
    oct = math.floor(chordInversionValue / chordLength)
    chordInversionValue = chordInversionValue + (math.abs(oct) * chordLength)
  end
  
  for i = 1, chordInversionValue do
    local r = table.remove(chord_, 1)
    r = r + 12
    table.insert(chord_, #chord_ + 1, r )
  end
    
  for i = 1, #chord_ do
    chord_[i] = chord_[i] + (oct * 12)
  end

  return chord_
end

(Raul (ulneiz)) #23

I use a function that was written by either dread or suva, it seemed to work so I didn’t mess with it too much

function applyInversion(chord)
  
local chordLength = #chord
local chordInversionValue = getCurrentInversionValue()
local chord_ = chord
local oct = 0  
  
if chordInversionValue < 0 then
oct = math.floor(chordInversionValue / chordLength)
chordInversionValue = chordInversionValue + (math.abs(oct) * chordLength)
end
  
for i = 1, chordInversionValue do
local r = table.remove(chord_, 1)
r = r + 12
table.insert(chord_, #chord_ + 1, r )
end
    
for i = 1, #chord_ do
chord_[i] = chord_[i] + (oct * 12)
end

return chord_
end

Ah ok!I think I can create my own mathematical operation for my own tables, using a valuebox with -6 to +6 for the inversion of all my chords. It is only adding +12 or -12 to a specific value of the chord according to the inversion chosen.At least I can do it easily without using any scale.

Thanks!


(Trackah123) #24

Nice tool, i’m not so good with chords myself, and this makes things alot easier. thanks :slight_smile: