Class: HeadMusic::Style::Annotation
- Inherits:
-
Object
- Object
- HeadMusic::Style::Annotation
show all
- Defined in:
- lib/head_music/style/annotation.rb
Overview
An Annotation encapsulates an issue with or comment on a voice
Direct Known Subclasses
Guidelines::AlwaysMove, Guidelines::ApproachPerfectionContrarily, Guidelines::AtLeastEightNotes, Guidelines::AvoidCrossingVoices, Guidelines::AvoidOverlappingVoices, Guidelines::ConsonantClimax, Guidelines::ConsonantDownbeats, Guidelines::Diatonic, Guidelines::DirectionChanges, Guidelines::EndOnPerfectConsonance, Guidelines::EndOnTonic, Guidelines::LimitOctaveLeaps, Guidelines::MostlyConjunct, Guidelines::NoRests, Guidelines::NoUnisonsInMiddle, Guidelines::NotesSameLength, Guidelines::OneToOne, Guidelines::PreferContraryMotion, Guidelines::PreferImperfect, Guidelines::PrepareOctaveLeaps, Guidelines::RecoverLargeLeaps, Guidelines::SingableIntervals, Guidelines::SingableRange, Guidelines::StartOnPerfectConsonance, Guidelines::StartOnTonic, Guidelines::StepDownToFinalNote, Guidelines::StepOutOfUnison, Guidelines::StepToFinalNote, Guidelines::StepUpToFinalNote, Guidelines::UpToFourteenNotes
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
#voice ⇒ Object
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
33
34
35
|
# File 'lib/head_music/style/annotation.rb', line 33
def adherent?
fitness == 1
end
|
#end_position ⇒ Object
45
46
47
|
# File 'lib/head_music/style/annotation.rb', line 45
def end_position
[marks].flatten.compact.map(&:end_position).max
end
|
#fitness ⇒ Object
29
30
31
|
# File 'lib/head_music/style/annotation.rb', line 29
def fitness
[marks].flatten.compact.map(&:fitness).reduce(1, :*)
end
|
#message ⇒ Object
49
50
51
|
# File 'lib/head_music/style/annotation.rb', line 49
def message
self.class::MESSAGE
end
|
#notes? ⇒ Boolean
37
38
39
|
# File 'lib/head_music/style/annotation.rb', line 37
def notes?
first_note
end
|
#start_position ⇒ Object
41
42
43
|
# File 'lib/head_music/style/annotation.rb', line 41
def start_position
[marks].flatten.compact.map(&:start_position).min
end
|