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.



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

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)


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

def adherent?
  fitness == 1
end

#end_positionObject



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

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

#fitnessObject



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

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

#messageObject



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

def message
  self.class::MESSAGE
end

#notes?Boolean

Returns:

  • (Boolean)


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

def notes?
  first_note
end

#start_positionObject



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

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