Class: HeadMusic::Style::Guidelines::MostlyConjunct

Inherits:
Annotation
  • Object
show all
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

Constructor Details

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

Instance Method Details

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

#marksObject

~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_leapsObject (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