Class: HeadMusic::Style::Guidelines::Diatonic

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

Overview

A counterpoint guideline

Constant Summary collapse

MESSAGE =
"Use only notes in the key signature."

Instance Method Summary collapse

Constructor Details

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

Instance Method Details

#marksObject



8
9
10
# File 'lib/head_music/style/guidelines/diatonic.rb', line 8

def marks
  HeadMusic::Style::Mark.for_each(notes_not_in_key_excluding_penultimate_leading_tone)
end

#notes_not_in_key_excluding_penultimate_leading_toneObject (private)



14
15
16
17
18
19
20
# File 'lib/head_music/style/guidelines/diatonic.rb', line 14

def notes_not_in_key_excluding_penultimate_leading_tone
  notes_not_in_key.reject do |note|
    penultimate_note &&
      note == penultimate_note &&
      HeadMusic::Rudiment::ScaleDegree.new(key_signature, note.pitch.spelling).alteration == "#"
  end
end

#penultimate_noteObject (private)



22
23
24
# File 'lib/head_music/style/guidelines/diatonic.rb', line 22

def penultimate_note
  voice.note_preceding(positions.last) if positions.last
end