Sha256: cdf2c727dc073d4fa7886216cbe553911b257e38ba6c65e5f08e650c4c9b07a1
Contents?: true
Size: 667 Bytes
Versions: 9
Compression:
Stored size: 667 Bytes
Contents
# frozen_string_literal: true # Module for style guidelines. module HeadMusic::Style::Guidelines; end # A counterpoint guideline class HeadMusic::Style::Guidelines::PreferContraryMotion < HeadMusic::Style::Annotation MESSAGE = "Prefer contrary motion. Move voices in different melodic directions." 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 def direct_motions motions.select(&:direct?) end def direct_motion_ratio return 0 if motions.empty? direct_motions.count / motions.count.to_f end end
Version data entries
9 entries across 9 versions & 1 rubygems