class HeadMusic::DiatonicInterval::Size
Encapsulate the distance methods of the interval
Attributes
high_pitch[R]
low_pitch[R]
Public Class Methods
new(pitch1, pitch2)
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 157 def initialize(pitch1, pitch2) @low_pitch, @high_pitch = *[pitch1, pitch2].sort end
Public Instance Methods
compound?()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 177 def compound? !simple? end
number()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 161 def number @number ||= @low_pitch.steps_to(@high_pitch) + 1 end
octaves()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 169 def octaves @octaves ||= number / 8 end
semitones()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 185 def semitones (high_pitch - low_pitch).to_i end
simple?()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 173 def simple? number <= 8 end
simple_number()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 165 def simple_number @simple_number ||= octave_equivalent? ? 8 : (number - 1) % 7 + 1 end
simple_semitones()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 181 def simple_semitones @simple_semitones ||= semitones % 12 end
simple_steps()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 193 def simple_steps steps % 7 end
steps()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 189 def steps number - 1 end
Private Instance Methods
octave_equivalent?()
click to toggle source
# File lib/head_music/diatonic_interval.rb, line 199 def octave_equivalent? number > 1 && ((number - 1) % 7).zero? end