class HeadMusic::Style::Guidelines::PreferContraryMotion

A counterpoint guideline

Constants

MESSAGE

Public Instance Methods

marks() click to toggle source
# File lib/head_music/style/guidelines/prefer_contrary_motion.rb, line 10
def marks
  return nil if notes.length < 2
  return nil if direct_motion_ratio <= 0.5

  direct_motions.map { |motion| HeadMusic::Style::Mark.for_all(motion.notes) }
end

Private Instance Methods

direct_motion_ratio() click to toggle source
# File lib/head_music/style/guidelines/prefer_contrary_motion.rb, line 23
def direct_motion_ratio
  return 0 if motions.empty?

  direct_motions.count / motions.count.to_f
end
direct_motions() click to toggle source
# File lib/head_music/style/guidelines/prefer_contrary_motion.rb, line 19
def direct_motions
  motions.select(&:direct?)
end