Module: Harmonie
- Includes:
- Intervalles
- Defined in:
- lib/rubySC/harmonie.rb,
lib/rubySC/harmonie/harmonie.rb
Instance Method Summary collapse
- #analyse(mel, grilleAnalyse = 2, modulo = 7) ⇒ Object
-
#analyseReduction(mel, nbRecursion = mel.size-1, tmp = []) ⇒ Object
Je ne sais pas si cette fonction a du sens, vraiment.
-
#detecterHarmonies(mel, intervalles = 2) ⇒ Object
Sert à détecter les notes paires dans une section de mélodie.
-
#detecterSet(mel, intervalles = 2) ⇒ Object
Sert à détecter quel accord sous-tend une mélodie.
- #detectSymetrie(mel) ⇒ Object
- #squeletteHarmonique(mel, set = [0,2,4]) ⇒ Object
Methods included from Intervalles
#intervalles, #intervallesAbs, #intervallesBoucle, #intervallesRel, #squeletteIntervallique
Instance Method Details
#analyse(mel, grilleAnalyse = 2, modulo = 7) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/rubySC/harmonie.rb', line 35 def analyse mel, grilleAnalyse=2, modulo=7 mel.each_slice(grilleAnalyse).map { |x| (x[-1]-x[0])%7 } end |
#analyseReduction(mel, nbRecursion = mel.size-1, tmp = []) ⇒ Object
Je ne sais pas si cette fonction a du sens, vraiment
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rubySC/harmonie.rb', line 44 def analyseReduction mel, nbRecursion=mel.size-1, tmp=[] tmp << mel unless nbRecursion<1 analyseReduction (mel.each_cons(2).map { |x| (x[-1]-x[0]) }), nbRecursion-=1, tmp end return tmp end |
#detecterHarmonies(mel, intervalles = 2) ⇒ Object
Sert à détecter les notes paires dans une section de mélodie. Retourne la distance qui sépare ces notes typiquement, un accord parfait sera (ou 1)” => [0,1,2]
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rubySC/harmonie/harmonie.rb', line 16 def detecterHarmonies mel, intervalles=2 tmpUn=mel.sort.uniq.map { |e| e%intervalles } tmpDeux=mel.sort.uniq.map { |e| e/intervalles } n={} tmpUn.size.times do |x| n[tmpUn[x].to_s].nil? ? \ (n[tmpUn[x].to_s] = [] << tmpDeux[x]) :\ (n[tmpUn[x].to_s] << tmpDeux[x]) end return n end |
#detecterSet(mel, intervalles = 2) ⇒ Object
Sert à détecter quel accord sous-tend une mélodie
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rubySC/harmonie.rb', line 14 def detecterSet mel, intervalles=2 tmpUn=mel.sort.uniq.map { |e| e%intervalles } tmpDeux=mel.sort.uniq.map { |e| e/intervalles } n={} tmpUn.size.times do |x| n[tmpUn[x].to_s].nil? ? \ (n[tmpUn[x].to_s] = [] << tmpDeux[x]) :\ (n[tmpUn[x].to_s] << tmpDeux[x]) end return n end |
#detectSymetrie(mel) ⇒ Object
31 32 33 |
# File 'lib/rubySC/harmonie.rb', line 31 def detectSymetrie mel end |
#squeletteHarmonique(mel, set = [0,2,4]) ⇒ Object
5 6 7 8 9 |
# File 'lib/rubySC/harmonie.rb', line 5 def squeletteHarmonique mel, set=[0,2,4] mel.map { |e| e == set.any? ? true : false } end |