Class: Melodie

Inherits:
Object
  • Object
show all
Includes:
Intervalles, Motif
Defined in:
lib/rubySC/melodie/melodie.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Motif

#convertirABC, #detectPattern, #squeletteMotivique, #toutDansOctave

Methods included from Intervalles

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

Constructor Details

#initializeMelodie

Returns a new instance of Melodie.



11
12
13
14
15
16
17
18
19
20
# File 'lib/rubySC/melodie/melodie.rb', line 11

def initialize
  
  @@nbMel=0
  @analyse={}

  @dessinMelodique = creerMelodie
  self.analyser
  @dessinRythmique = self.creerRythme

end

Instance Attribute Details

#analyseObject (readonly)

Returns the value of attribute analyse.



9
10
11
# File 'lib/rubySC/melodie/melodie.rb', line 9

def analyse
  @analyse
end

#dessinMelodiqueObject (readonly)

Returns the value of attribute dessinMelodique.



9
10
11
# File 'lib/rubySC/melodie/melodie.rb', line 9

def dessinMelodique
  @dessinMelodique
end

#dessinRythmiqueObject (readonly)

Returns the value of attribute dessinRythmique.



9
10
11
# File 'lib/rubySC/melodie/melodie.rb', line 9

def dessinRythmique
  @dessinRythmique
end

Instance Method Details

#analyserObject



32
33
34
35
36
37
# File 'lib/rubySC/melodie/melodie.rb', line 32

def analyser

  @analyse["motifs"]=squeletteMotivique @dessinMelodique
  @analyse["intervalles"]=squeletteIntervallique @dessinMelodique
   
end

#creerRythme(options = {:intervalles=>1, :motifs=>1}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/rubySC/melodie/melodie.rb', line 41

def creerRythme options={:intervalles=>1, :motifs=>1} 
  
  tmp=[]
  l=lambda {|x|
  unless options[x].nil? 
    tmp<<@analyse[x.to_s].map(&options[x].method(:*))
  end}
 
  options.each { |k,v|
  l.call k  }
 
  result=[]
  (@dessinMelodique.size-1).times do |i|
  result << tmp.map{ |row| row[i] }.reduce(&:+)
  end

  return result

end

#detectDoublonsObject



81
82
83
84
85
86
# File 'lib/rubySC/melodie/melodie.rb', line 81

def detectDoublons 
  @dessinMelodique.map.with_index(1) { |e, i| 
    unless i==@dessinMelodique.size
    @dessinMelodique[i] - @dessinMelodique[i-1] == 0 ? true : false
    end }[0..-2]
end

#enclencher(instrument = "default") ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/rubySC/melodie/melodie.rb', line 23

def enclencher instrument="default"
  p "instrument sera #{instrument}"
  @@nbMel+=1
  Voix.new "melodie#{@@nbMel}", 
  ({:instrument => instrument, 
    :degree => @dessinMelodique,
    :dur => @dessinRythmique})
end

#interObject

quelques raccourcis



68
69
70
# File 'lib/rubySC/melodie/melodie.rb', line 68

def inter
  intervalles @dessinMelodique
end

#interAbsObject



72
73
74
# File 'lib/rubySC/melodie/melodie.rb', line 72

def interAbs
  intervallesAbs @dessinMelodique
end

#interRel(note = 0) ⇒ Object



76
77
78
# File 'lib/rubySC/melodie/melodie.rb', line 76

def interRel note=0
  intervallesMel @dessinMelodique, note
end

#vitesseObject



61
62
63
# File 'lib/rubySC/melodie/melodie.rb', line 61

def vitesse
  
end