Class: HeadMusic::Style::Annotation

Inherits:
Object
  • Object
show all
Defined in:
lib/head_music/style/annotation.rb

Overview

An Annotation encapsulates an issue with or comment on a voice

Constant Summary collapse

MESSAGE =
"Write music."

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(voice) ⇒ Annotation

Returns a new instance of Annotation.



25
26
27
# File 'lib/head_music/style/annotation.rb', line 25

def initialize(voice)
  @voice = voice
end

Instance Attribute Details

#voiceObject (readonly)

Returns the value of attribute voice.



5
6
7
# File 'lib/head_music/style/annotation.rb', line 5

def voice
  @voice
end

Instance Method Details

#adherent?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/head_music/style/annotation.rb', line 33

def adherent?
  fitness == 1
end

#end_positionObject



45
46
47
# File 'lib/head_music/style/annotation.rb', line 45

def end_position
  [marks].flatten.compact.map(&:end_position).max
end

#fitnessObject



29
30
31
# File 'lib/head_music/style/annotation.rb', line 29

def fitness
  [marks].flatten.compact.map(&:fitness).reduce(1, :*)
end

#messageObject



49
50
51
# File 'lib/head_music/style/annotation.rb', line 49

def message
  self.class::MESSAGE
end

#notes?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/head_music/style/annotation.rb', line 37

def notes?
  first_note
end

#start_positionObject



41
42
43
# File 'lib/head_music/style/annotation.rb', line 41

def start_position
  [marks].flatten.compact.map(&:start_position).min
end