class HeadMusic::DiatonicInterval::Semitones
Accepts a name and a quality and returns the number of semitones
Attributes
count[R]
Public Class Methods
_degree_quality_modifications(quality)
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 119 def self._degree_quality_modifications(quality) if quality == :perfect HeadMusic::Quality::PERFECT_INTERVAL_MODIFICATION.invert else HeadMusic::Quality::MAJOR_INTERVAL_MODIFICATION.invert end end
_semitones_for_degree(quality, default_semitones)
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 111 def self._semitones_for_degree(quality, default_semitones) {}.tap do |semitones| _degree_quality_modifications(quality).each do |current_quality, delta| semitones[current_quality] = default_semitones + delta end end end
degree_quality_semitones()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 99 def self.degree_quality_semitones @degree_quality_semitones ||= begin {}.tap do |degree_quality_semitones| QUALITY_SEMITONES.each do |degree_name, qualities| default_quality = qualities.keys.first default_semitones = qualities[default_quality] degree_quality_semitones[degree_name] = _semitones_for_degree(default_quality, default_semitones) end end end end
new(name, quality_name)
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 95 def initialize(name, quality_name) @count = Semitones.degree_quality_semitones.dig(name, quality_name) end