class HeadMusic::Style::Guidelines::StepDownToFinalNote

A counterpoint guideline

Constants

MESSAGE

Public Instance Methods

marks() click to toggle source
# File lib/head_music/style/guidelines/step_down_to_final_note.rb, line 10
def marks
  return if last_melodic_interval.nil?

  fitness = 1
  fitness *= HeadMusic::PENALTY_FACTOR unless step?
  fitness *= HeadMusic::PENALTY_FACTOR unless descending?
  HeadMusic::Style::Mark.for_all(notes[-2..-1], fitness: fitness) if fitness < 1
end

Private Instance Methods

descending?() click to toggle source
# File lib/head_music/style/guidelines/step_down_to_final_note.rb, line 21
def descending?
  last_melodic_interval&.descending?
end
last_melodic_interval() click to toggle source
# File lib/head_music/style/guidelines/step_down_to_final_note.rb, line 29
def last_melodic_interval
  @last_melodic_interval ||= melodic_intervals.last
end
step?() click to toggle source
# File lib/head_music/style/guidelines/step_down_to_final_note.rb, line 25
def step?
  last_melodic_interval&.step?
end