Class: HeadMusic::Style::ModernTradition

Inherits:
Tradition
  • Object
show all
Defined in:
lib/head_music/style/modern_tradition.rb

Overview

Modern/standard practice tradition for interval consonance classification

Instance Method Summary collapse

Instance Method Details

#consonance_classification(interval) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/head_music/style/modern_tradition.rb', line 3

def consonance_classification(interval)
  interval_mod = interval.simple_semitones

  # Check for augmented or diminished intervals (except diminished fifth/augmented fourth)
  if (interval.augmented? || interval.diminished?) && interval_mod != 6
    return HeadMusic::Rudiment::Consonance::DISSONANCE
  end

  case interval_mod
  when 0, 12  # Unison, Octave
    HeadMusic::Rudiment::Consonance::PERFECT_CONSONANCE
  when 7      # Perfect Fifth
    HeadMusic::Rudiment::Consonance::PERFECT_CONSONANCE
  when 3, 4   # Minor Third, Major Third
    HeadMusic::Rudiment::Consonance::IMPERFECT_CONSONANCE
  when 8, 9   # Minor Sixth, Major Sixth
    HeadMusic::Rudiment::Consonance::IMPERFECT_CONSONANCE
  when 5      # Perfect Fourth
    # In standard practice, perfect fourth is considered consonant
    # but contextual would be more accurate
    HeadMusic::Rudiment::Consonance::PERFECT_CONSONANCE
  when 2, 10  # Major Second, Minor Seventh
    HeadMusic::Rudiment::Consonance::MILD_DISSONANCE
  when 1, 11  # Minor Second, Major Seventh
    HeadMusic::Rudiment::Consonance::HARSH_DISSONANCE
  when 6      # Tritone (Aug 4th/Dim 5th)
    HeadMusic::Rudiment::Consonance::DISSONANCE
  else
    HeadMusic::Rudiment::Consonance::DISSONANCE
  end
end