Class: HeadMusic::Style::Guides::SpeciesHarmony

Inherits:
Base
  • Object
show all
Defined in:
lib/head_music/style/guides/species_harmony.rb

Overview

Base class for species harmony guides. Inherits analysis behavior from Base; exists as a semantic marker distinguishing harmony guides from melody guides.

Constant Summary collapse

HARMONIC_CORE =

Guidelines shared by every harmonic guide. Subclasses splat this into their RULESET: RULESET = [*HARMONIC_CORE, …species-specific rules].

[
  HeadMusic::Style::Guidelines::ApproachPerfectionContrarily,
  HeadMusic::Style::Guidelines::AvoidCrossingVoices,
  HeadMusic::Style::Guidelines::AvoidOverlappingVoices,
  HeadMusic::Style::Guidelines::ConsonantDownbeats,
  HeadMusic::Style::Guidelines::NoParallelPerfectOnDownbeats,
  HeadMusic::Style::Guidelines::PreferContraryMotion,
  HeadMusic::Style::Guidelines::PreferImperfect
].freeze
DIMINUTION_HARMONIC_CORE =

Guidelines shared by the diminution species (second, third, and triple meter), which set several counterpoint notes against each whole note of the cantus firmus. Subclasses splat this in alongside HARMONIC_CORE.

[
  HeadMusic::Style::Guidelines::NoParallelPerfectAcrossBarline,
  HeadMusic::Style::Guidelines::NoStrongBeatUnisons
].freeze

Class Method Summary collapse

Class Method Details

.diminution_ruleset(*additional) ⇒ Object

Builds a diminution-species RULESET: the shared harmonic and diminution cores plus the species-specific guidelines passed in.



29
30
31
# File 'lib/head_music/style/guides/species_harmony.rb', line 29

def self.diminution_ruleset(*additional)
  [*HARMONIC_CORE, *DIMINUTION_HARMONIC_CORE, *additional].freeze
end