Class: HeadMusic::DiatonicInterval::Semitones
- Inherits:
-
Object
- Object
- HeadMusic::DiatonicInterval::Semitones
- Defined in:
- lib/head_music/diatonic_interval.rb
Overview
Accepts a name and a quality and returns the number of semitones
Instance Attribute Summary collapse
-
#count ⇒ Object
readonly
Returns the value of attribute count.
Class Method Summary collapse
- ._degree_quality_modifications(quality) ⇒ Object
- ._semitones_for_degree(quality, default_semitones) ⇒ Object
- .degree_quality_semitones ⇒ Object
Instance Method Summary collapse
-
#initialize(name, quality_name) ⇒ Semitones
constructor
A new instance of Semitones.
Constructor Details
#initialize(name, quality_name) ⇒ Semitones
Returns a new instance of Semitones.
95 96 97 |
# File 'lib/head_music/diatonic_interval.rb', line 95 def initialize(name, quality_name) @count = Semitones.degree_quality_semitones.dig(name, quality_name) end |
Instance Attribute Details
#count ⇒ Object (readonly)
Returns the value of attribute count.
93 94 95 |
# File 'lib/head_music/diatonic_interval.rb', line 93 def count @count end |
Class Method Details
._degree_quality_modifications(quality) ⇒ Object
117 118 119 120 121 122 123 |
# File 'lib/head_music/diatonic_interval.rb', line 117 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) ⇒ Object
109 110 111 112 113 114 115 |
# File 'lib/head_music/diatonic_interval.rb', line 109 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 ⇒ Object
99 100 101 102 103 104 105 106 107 |
# File 'lib/head_music/diatonic_interval.rb', line 99 def self.degree_quality_semitones @degree_quality_semitones ||= {}.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 |