Class: HeadMusic::Style::Guidelines::LimitOctaveLeaps
- Inherits:
-
HeadMusic::Style::Guideline
- Object
- HeadMusic::Style::Guideline
- HeadMusic::Style::Guidelines::LimitOctaveLeaps
- Defined in:
- lib/head_music/style/guidelines/limit_octave_leaps.rb
Overview
A counterpoint guideline: Use a maximum of one octave leap.
Configurable via the maximum_leaps: option.
Constant Summary collapse
- MAXIMUM_LEAPS =
1
Class Method Summary collapse
-
.template_values(config) ⇒ Object
The count comes from the configuration or the class default – never from config alone, which is empty for the unconfigured case.
Instance Method Summary collapse
-
#marks ⇒ Object
-
#maximum_leaps ⇒ Object
private
-
#octave_leaps ⇒ Object
private
Constructor Details
This class inherits a constructor from HeadMusic::Style::Guideline
Class Method Details
.template_values(config) ⇒ Object
The count comes from the configuration or the class default – never from config alone, which is empty for the unconfigured case.
21 22 23 24 |
# File 'lib/head_music/style/guidelines/limit_octave_leaps.rb', line 21 def self.template_values(config) count = config.fetch(:maximum_leaps) { MAXIMUM_LEAPS } {count: count, number: HeadMusic::Style::Template.number_word(count)} end |
Instance Method Details
#marks ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/head_music/style/guidelines/limit_octave_leaps.rb', line 11 def marks return if octave_leaps.length <= maximum_leaps octave_leaps.map do |leap| HeadMusic::Style::Mark.for_all(leap.notes) end end |
#maximum_leaps ⇒ Object (private)
28 29 30 |
# File 'lib/head_music/style/guidelines/limit_octave_leaps.rb', line 28 def maximum_leaps .fetch(:maximum_leaps) { self.class::MAXIMUM_LEAPS } end |
#octave_leaps ⇒ Object (private)
32 33 34 |
# File 'lib/head_music/style/guidelines/limit_octave_leaps.rb', line 32 def octave_leaps melodic_note_pairs.select(&:octave?) end |