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