Class: HeadMusic::Style::Guidelines::NoteFillsFinalBar
- Inherits:
-
Annotation
- Object
- Annotation
- HeadMusic::Style::Guidelines::NoteFillsFinalBar
show all
- Defined in:
- lib/head_music/style/guidelines/note_fills_final_bar.rb
Overview
Checks that the final bar contains a single note that fills the entire measure.
Constant Summary
collapse
- MESSAGE =
"End with a single note that fills the final bar."
Instance Method Summary
collapse
Instance Method Details
#bar_duration ⇒ Object
31
32
33
34
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 31
def bar_duration
meter = composition.meter_at(final_bar_number)
meter.count_unit.relative_value * meter.counts_per_bar
end
|
#fills_bar?(note) ⇒ Boolean
27
28
29
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 27
def fills_bar?(note)
note.rhythmic_value.total_value == bar_duration
end
|
#final_bar_number ⇒ Object
23
24
25
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 23
def final_bar_number
last_note.position.bar_number
end
|
#marks ⇒ Object
8
9
10
11
12
13
14
15
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 8
def marks
return unless notes.any?
bar_notes = notes_in_final_bar
return if bar_notes.length == 1 && fills_bar?(bar_notes.first)
HeadMusic::Style::Mark.for_all(bar_notes.any? ? bar_notes : [last_note])
end
|
#notes_in_final_bar ⇒ Object
19
20
21
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 19
def notes_in_final_bar
notes.select { |note| note.position.bar_number == final_bar_number }
end
|