Class: HeadMusic::Style::Guidelines::StepUpToFinalNote

Inherits:
Annotation
  • Object
show all
Defined in:
lib/head_music/style/guidelines/step_up_to_final_note.rb

Overview

A counterpoint guideline

Constant Summary collapse

MESSAGE =
"Step up to final note."

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from HeadMusic::Style::Annotation

Instance Method Details

#ascending?Boolean (private)

Returns:

  • (Boolean)


19
20
21
# File 'lib/head_music/style/guidelines/step_up_to_final_note.rb', line 19

def ascending?
  last_melodic_interval&.ascending?
end

#last_melodic_intervalObject (private)



27
28
29
# File 'lib/head_music/style/guidelines/step_up_to_final_note.rb', line 27

def last_melodic_interval
  @last_melodic_interval ||= melodic_intervals.last
end

#marksObject



8
9
10
11
12
13
14
15
# File 'lib/head_music/style/guidelines/step_up_to_final_note.rb', line 8

def marks
  return if last_melodic_interval.nil?

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

#step?Boolean (private)

Returns:

  • (Boolean)


23
24
25
# File 'lib/head_music/style/guidelines/step_up_to_final_note.rb', line 23

def step?
  last_melodic_interval&.step?
end