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.



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

def initialize(voice)
  @voice = voice
end

Instance Attribute Details

#voiceObject (readonly)

Returns the value of attribute voice.



7
8
9
# File 'lib/head_music/style/annotation.rb', line 7

def voice
  @voice
end

Instance Method Details

#adherent?Boolean

Returns:

  • (Boolean)


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

def adherent?
  fitness == 1
end

#end_positionObject



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

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

#fitnessObject



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

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

#messageObject



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

def message
  self.class::MESSAGE
end

#notes?Boolean

Returns:

  • (Boolean)


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

def notes?
  first_note
end

#start_positionObject



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

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