Sha256: 4c6dd1e2cae5e839df658e9e44a353de45a4d95389901b49aba6b4c7736fcc7b

Contents?: true

Size: 1.11 KB

Versions: 9

Compression:

Stored size: 1.11 KB

Contents

# Module for guides
module HeadMusic::Style::Guides; end

# Rules for first species harmony
class HeadMusic::Style::Guides::FirstSpeciesHarmony
  RULESET = [
    HeadMusic::Style::Guidelines::ApproachPerfectionContrarily,
    HeadMusic::Style::Guidelines::AvoidCrossingVoices,
    HeadMusic::Style::Guidelines::AvoidOverlappingVoices,
    HeadMusic::Style::Guidelines::ConsonantDownbeats,
    HeadMusic::Style::Guidelines::NoUnisonsInMiddle,
    HeadMusic::Style::Guidelines::OneToOne,
    HeadMusic::Style::Guidelines::PreferContraryMotion,
    HeadMusic::Style::Guidelines::PreferImperfect
  ].freeze

  def self.analyze(voice)
    RULESET.map { |rule| rule.new(voice) }
  end
end

# TODO: Guideline against leaping into P8 even by contrary motion.
# TODO: Guideline allowing oblique motion < ~15% of the time.
# TODO: Guideline against battuta (10-8 not at cadence, unless 10-8-6 voice exchange)
# TODO: 16th C: No M6 leaps. m6 leaps ascending only.
# TODO: 16th C (?): Avoid perfect consonances on consecutive downbeats
# TODO: 16th C: No 5-7-1 ending
# TODO: 16th C Cantus Firmus: Raise the 7 in the cadence, except in Phrygian

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
head_music-7.0.5 lib/head_music/style/guides/first_species_harmony.rb
head_music-7.0.4 lib/head_music/style/guides/first_species_harmony.rb
head_music-7.0.3 lib/head_music/style/guides/first_species_harmony.rb
head_music-7.0.2 lib/head_music/style/guides/first_species_harmony.rb
head_music-7.0.1 lib/head_music/style/guides/first_species_harmony.rb
head_music-7.0.0 lib/head_music/style/guides/first_species_harmony.rb
head_music-6.0.1 lib/head_music/style/guides/first_species_harmony.rb
head_music-6.0.0 lib/head_music/style/guides/first_species_harmony.rb
head_music-5.0.0 lib/head_music/style/guides/first_species_harmony.rb