Class: HeadMusic::Style::Guidelines::NoteFillsFinalBar
Overview
Checks that the final bar contains a single note that fills the entire measure.
Instance Method Summary
collapse
Instance Method Details
#bar_duration ⇒ Object
29
30
31
32
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 29
def bar_duration
meter = composition.meter_at(final_bar_number)
meter.count_unit.relative_value * meter.counts_per_bar
end
|
#fills_bar?(note) ⇒ Boolean
25
26
27
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 25
def fills_bar?(note)
note.rhythmic_value.total_value == bar_duration
end
|
#final_bar_number ⇒ Object
21
22
23
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 21
def final_bar_number
last_note.position.bar_number
end
|
#marks ⇒ Object
6
7
8
9
10
11
12
13
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 6
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
17
18
19
|
# File 'lib/head_music/style/guidelines/note_fills_final_bar.rb', line 17
def notes_in_final_bar
notes.select { |note| note.position.bar_number == final_bar_number }
end
|