Class: HeadMusic::Style::Guidelines::MostlyConjunct
- Inherits:
-
Annotation
- Object
- Annotation
- HeadMusic::Style::Guidelines::MostlyConjunct
- Defined in:
- lib/head_music/style/guidelines/mostly_conjunct.rb
Overview
A counterpoint guideline
Constant Summary collapse
- MESSAGE =
"Use mostly conjunct motion."- MINIMUM_CONJUNCT_PORTION =
HeadMusic::GOLDEN_RATIO_INVERSE**2
Instance Method Summary collapse
- #conjunct_ratio ⇒ Object private
-
#marks ⇒ Object
~38% Fux is 5/13 for lydian cantus firmus.
- #marks_for_skips_and_leaps ⇒ Object private
Constructor Details
This class inherits a constructor from HeadMusic::Style::Annotation
Instance Method Details
#conjunct_ratio ⇒ Object (private)
24 25 26 27 28 |
# File 'lib/head_music/style/guidelines/mostly_conjunct.rb', line 24 def conjunct_ratio return 1 if melodic_note_pairs.empty? melodic_note_pairs.count(&:step?).to_f / melodic_note_pairs.length end |
#marks ⇒ Object
~38% Fux is 5/13 for lydian cantus firmus
12 13 14 |
# File 'lib/head_music/style/guidelines/mostly_conjunct.rb', line 12 def marks marks_for_skips_and_leaps if conjunct_ratio < MINIMUM_CONJUNCT_PORTION end |
#marks_for_skips_and_leaps ⇒ Object (private)
18 19 20 21 22 |
# File 'lib/head_music/style/guidelines/mostly_conjunct.rb', line 18 def marks_for_skips_and_leaps melodic_note_pairs .reject(&:step?) .map { |note_pair| HeadMusic::Style::Mark.for_all(note_pair.notes, fitness: HeadMusic::SMALL_PENALTY_FACTOR) } end |