Class: HeadMusic::Style::Guidelines::LimitOctaveLeaps

Inherits:
HeadMusic::Style::Guideline show all
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

Instance Method Summary collapse

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

#marksObject



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_leapsObject (private)



28
29
30
# File 'lib/head_music/style/guidelines/limit_octave_leaps.rb', line 28

def maximum_leaps
  options.fetch(:maximum_leaps) { self.class::MAXIMUM_LEAPS }
end

#octave_leapsObject (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