Module: HeadMusic::Style::Guideline::BarSpan

Overview

The voice's own bars, rather than the cantus firmus's, so a solo line is judged over its bars too.

Instance Method Summary collapse

Instance Method Details

#body_bar_numbers ⇒ Object (protected)



21
22
23
# File 'lib/head_music/style/guideline/bar_span.rb', line 21

def body_bar_numbers
  (first_bar_number...last_bar_number).to_a
end

#downbeat_of(bar_number) ⇒ Object (protected)



25
26
27
# File 'lib/head_music/style/guideline/bar_span.rb', line 25

def downbeat_of(bar_number)
  HeadMusic::Content::Position.new(flow, "#{bar_number}:1")
end

#first_bar_number ⇒ Object (protected)



9
10
11
# File 'lib/head_music/style/guideline/bar_span.rb', line 9

def first_bar_number
  notes.first.position.bar_number
end

#last_bar_number ⇒ Object (protected)



13
14
15
# File 'lib/head_music/style/guideline/bar_span.rb', line 13

def last_bar_number
  notes.last.position.bar_number
end

#mark_bar(bar_number) ⇒ Object (protected)



33
34
35
36
37
38
# File 'lib/head_music/style/guideline/bar_span.rb', line 33

def mark_bar(bar_number)
  bar_notes = notes_in_bar(bar_number)
  return HeadMusic::Style::Mark.for_all(bar_notes) if bar_notes.any?

  HeadMusic::Style::Mark.new(downbeat_of(bar_number), downbeat_of(bar_number + 1))
end

#middle_bar_numbers ⇒ Object (protected)



17
18
19
# File 'lib/head_music/style/guideline/bar_span.rb', line 17

def middle_bar_numbers
  ((first_bar_number + 1)...last_bar_number).to_a
end

#notes_in_bar(bar_number) ⇒ Object (protected)



29
30
31
# File 'lib/head_music/style/guideline/bar_span.rb', line 29

def notes_in_bar(bar_number)
  notes.select { |note| note.position.bar_number == bar_number }
end