Module: VoiceLeading

Includes:
Intervalles
Included in:
Accords
Defined in:
lib/rubySC/harmonie/voiceLeading.rb

Constant Summary collapse

@@position =
[[2,4], [2, 5],[3,5]]
@@matricePos =
[]

Instance Method Summary collapse

Methods included from Intervalles

#intervalles, #intervallesAbs, #intervallesBoucle, #intervallesRel, #squeletteIntervallique

Instance Method Details

#accordBasique(basse, position = nbNotes=3, intervalleBase = 2) ⇒ Object



112
113
114
115
116
117
118
119
# 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) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
# 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) ⇒ Object



121
122
123
124
125
126
# File 'lib/rubySC/harmonie/voiceLeading.rb', line 121

def dispatchNotes accord
	tmp=[]
	accord.each { |e| 
	tmp << [e] }
	return tmp
end

#incrementer(accord, vecteurHarmonique) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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) ⇒ Object

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



36
37
38
39
40
41
42
43
44
45
46
47
# 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