Sha256: 23bc3a433f9e691bd2047fb812addc1e8bdec3b25261196b3606dda28cf44f0b

Contents?: true

Size: 624 Bytes

Versions: 5

Compression:

Stored size: 624 Bytes

Contents

module HeadMusic::Style::Annotations
end

# marks the voice if the first note is not the first or fifth scale degree of the key.
class HeadMusic::Style::Annotations::StartOnPerfectConsonance < HeadMusic::Style::Annotation
  MESSAGE = 'Start on the tonic or a perfect consonance above the tonic (unless bass voice).'

  def marks
    if first_note && ((bass_voice? && !starts_on_tonic?) || !starts_on_perfect_consonance?)
      HeadMusic::Style::Mark.for(first_note)
    end
  end

  private

  def starts_on_perfect_consonance?
    functional_interval_from_tonic(first_note).perfect_consonance?(:two_part_harmony)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
head_music-0.17.0 lib/head_music/style/annotations/start_on_perfect_consonance.rb
head_music-0.16.2 lib/head_music/style/annotations/start_on_perfect_consonance.rb
head_music-0.16.0 lib/head_music/style/annotations/start_on_perfect_consonance.rb
head_music-0.14.8 lib/head_music/style/annotations/start_on_perfect_consonance.rb
head_music-0.14.7 lib/head_music/style/annotations/start_on_perfect_consonance.rb