class HeadMusic::Style::Guidelines::StepOutOfUnison

A counterpoint guideline

Constants

MESSAGE

Public Instance Methods

marks() click to toggle source
# File lib/head_music/style/guidelines/step_out_of_unison.rb, line 10
def marks
  leaps_following_unisons.map do |skip|
    HeadMusic::Style::Mark.for_all(skip.notes)
  end.flatten
end

Private Instance Methods

leaps_following_unisons() click to toggle source
# File lib/head_music/style/guidelines/step_out_of_unison.rb, line 18
def leaps_following_unisons
  melodic_intervals_following_unisons.select(&:leap?)
end
melodic_intervals_following_unisons() click to toggle source
# File lib/head_music/style/guidelines/step_out_of_unison.rb, line 22
def melodic_intervals_following_unisons
  @melodic_intervals_following_unisons ||=
    perfect_unisons.map do |unison|
      note1 = voice.note_at(unison.position)
      note2 = voice.note_following(unison.position)
      HeadMusic::MelodicInterval.new(note1, note2) if note1 && note2
    end.compact
end
perfect_unisons() click to toggle source
# File lib/head_music/style/guidelines/step_out_of_unison.rb, line 31
def perfect_unisons
  @perfect_unisons ||= harmonic_intervals.select(&:perfect_consonance?).select(&:unison?)
end