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