module VoiceLeading
Public Instance Methods
accordBasique(basse, position=nbNotes=3, intervalleBase=2)
click to toggle source
case vecteurHarmonique when 0 return accord when 1 return accord.map! {|x| plus.call x} when -1 return accord.map! {|x| moins.call x} when 2 accord[0]-=1 return accord when -2 accord[-1]+=1 return accord when 3 accord[-1]+=1 accord[-2]+=1 return accord when -3 accord[0]-=1 accord[1]-=1 return accord end
end
# File lib/rubySC/harmonie/voiceLeading.rb, line 112 def accordBasique basse, position=nbNotes=3, intervalleBase=2 tmp=[] nbNotes.times do |x| tmp << basse+intervalleBase*x end return tmp end
detectPosition(array)
click to toggle source
# File lib/rubySC/harmonie/voiceLeading.rb, line 66 def detectPosition array tmp=[] tmp<< array[1]-array[0] tmp<< array[2]-array[0] case tmp when [2,4] return 0 when [2,5] return 1 when [3,5] return 2 end end
dispatchNotes(accord)
click to toggle source
# File lib/rubySC/harmonie/voiceLeading.rb, line 121 def dispatchNotes accord tmp=[] accord.each { |e| tmp << [e] } return tmp end
incrementer(accord, vecteurHarmonique)
click to toggle source
# File lib/rubySC/harmonie/voiceLeading.rb, line 50 def incrementer accord, vecteurHarmonique # binding.pry position_basse=@@matricePos[(detectPosition accord)][vecteurHarmonique] accordNv=[] if position_basse.nil? accordNv=accord else accordNv[0]=accord[0]+position_basse[1] accordNv[1]=accordNv[0]+@@position[position_basse[0]][0] accordNv[2]=accordNv[0]+@@position[position_basse[0]][1] end return accordNv end
reduireGrille(grille, grilleAnalyse=7)
click to toggle source
réduit la grille d’accords autour d’une oscillation entre -3 et 3 pour faire en tout 7 valeurs possibles, aka le nombre de notes dans la gamme diatonique
# File lib/rubySC/harmonie/voiceLeading.rb, line 36 def reduireGrille grille, grilleAnalyse=7 minMax = grilleAnalyse/2 (intervalles grille).map { |e| e=e%grilleAnalyse if e > minMax e=-(grilleAnalyse%e) elsif e < -minMax e=(grilleAnalyse%e).abs else e end } end