Class: HeadMusic::Style::Guidelines::NoUnisonsInMiddle

Inherits:
Annotation
  • Object
show all
Defined in:
lib/head_music/style/guidelines/no_unisons_in_middle.rb

Overview

A counterpoint guideline

Constant Summary collapse

MESSAGE =
"Unisons may only be used in the first and last note."

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from HeadMusic::Style::Annotation

Instance Method Details

#marksObject



8
9
10
11
12
# File 'lib/head_music/style/guidelines/no_unisons_in_middle.rb', line 8

def marks
  unison_pairs.map do |notes|
    HeadMusic::Style::Mark.for_all(notes)
  end.flatten
end

#middle_intervalsObject (private)



24
25
26
# File 'lib/head_music/style/guidelines/no_unisons_in_middle.rb', line 24

def middle_intervals
  [harmonic_intervals[1..-2]].flatten.compact
end

#middle_unisonsObject (private)



20
21
22
# File 'lib/head_music/style/guidelines/no_unisons_in_middle.rb', line 20

def middle_unisons
  middle_intervals.select { |interval| interval.perfect_consonance? && interval.unison? }
end

#unison_pairsObject (private)



16
17
18
# File 'lib/head_music/style/guidelines/no_unisons_in_middle.rb', line 16

def unison_pairs
  middle_unisons.map(&:notes).compact
end