class HeadMusic::Style::Guidelines::PreferImperfect

A counterpoint guideline

Constants

MESSAGE

Public Instance Methods

marks() click to toggle source
# File lib/head_music/style/guidelines/prefer_imperfect.rb, line 10
def marks
  HeadMusic::Style::Mark.for_all(perfect_intervals.map(&:notes).flatten) if ratio_of_perfect_intervals >= 0.5
end

Private Instance Methods

downbeat_harmonic_intervals_in_middle() click to toggle source
# File lib/head_music/style/guidelines/prefer_imperfect.rb, line 26
def downbeat_harmonic_intervals_in_middle
  downbeat_harmonic_intervals[1..-2]
end
perfect_intervals() click to toggle source
# File lib/head_music/style/guidelines/prefer_imperfect.rb, line 22
def perfect_intervals
  downbeat_harmonic_intervals_in_middle.select { |interval| interval.perfect_consonance?(:two_part_harmony) }
end
ratio_of_perfect_intervals() click to toggle source
# File lib/head_music/style/guidelines/prefer_imperfect.rb, line 16
def ratio_of_perfect_intervals
  return 0 if downbeat_harmonic_intervals_in_middle.nil?

  perfect_intervals.length.to_f / downbeat_harmonic_intervals.length
end