Class: HeadMusic::Style::Guides::SpeciesMelody

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

Overview

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

Constant Summary collapse

MELODIC_CORE =

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

[
  HeadMusic::Style::Guidelines::ConsonantClimax,
  HeadMusic::Style::Guidelines::Diatonic,
  HeadMusic::Style::Guidelines::LimitOctaveLeaps,
  HeadMusic::Style::Guidelines::MostlyConjunct,
  HeadMusic::Style::Guidelines::SingableIntervals,
  HeadMusic::Style::Guidelines::SingableRange
].freeze
MOVING_MELODIC_CORE =

Guidelines shared by every moving species (second through fifth), whose melodies progress within the bar rather than holding a whole note as in first species. Subclasses splat this in alongside MELODIC_CORE.

[
  HeadMusic::Style::Guidelines::AlwaysMove,
  HeadMusic::Style::Guidelines::EndOnTonic,
  HeadMusic::Style::Guidelines::FrequentDirectionChanges,
  HeadMusic::Style::Guidelines::NoRestsAfterNote,
  HeadMusic::Style::Guidelines::NoteFillsFinalBar,
  HeadMusic::Style::Guidelines::PrepareOctaveLeaps,
  HeadMusic::Style::Guidelines::StartOnPerfectConsonance,
  HeadMusic::Style::Guidelines::StepOutOfUnison,
  HeadMusic::Style::Guidelines::StepUpToFinalNote
].freeze

Class Method Summary collapse

Class Method Details

.moving_species_ruleset(*additional) ⇒ Object

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



35
36
37
# File 'lib/head_music/style/guides/species_melody.rb', line 35

def self.moving_species_ruleset(*additional)
  [*MELODIC_CORE, *MOVING_MELODIC_CORE, *additional].freeze
end