Class: HeadMusic::DiatonicInterval::Size

Inherits:
Object
  • Object
show all
Defined in:
lib/head_music/diatonic_interval.rb

Overview

Encapsulate the distance methods of the interval

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pitch1, pitch2) ⇒ Size

Returns a new instance of Size.



155
156
157
# File 'lib/head_music/diatonic_interval.rb', line 155

def initialize(pitch1, pitch2)
  @low_pitch, @high_pitch = *[pitch1, pitch2].sort
end

Instance Attribute Details

#high_pitchObject (readonly)

Returns the value of attribute high_pitch.



153
154
155
# File 'lib/head_music/diatonic_interval.rb', line 153

def high_pitch
  @high_pitch
end

#low_pitchObject (readonly)

Returns the value of attribute low_pitch.



153
154
155
# File 'lib/head_music/diatonic_interval.rb', line 153

def low_pitch
  @low_pitch
end

Instance Method Details

#compound?Boolean

Returns:

  • (Boolean)


175
176
177
# File 'lib/head_music/diatonic_interval.rb', line 175

def compound?
  !simple?
end

#numberObject



159
160
161
# File 'lib/head_music/diatonic_interval.rb', line 159

def number
  @number ||= @low_pitch.steps_to(@high_pitch) + 1
end

#octavesObject



167
168
169
# File 'lib/head_music/diatonic_interval.rb', line 167

def octaves
  @octaves ||= number / 8
end

#semitonesObject



183
184
185
# File 'lib/head_music/diatonic_interval.rb', line 183

def semitones
  (high_pitch - low_pitch).to_i
end

#simple?Boolean

Returns:

  • (Boolean)


171
172
173
# File 'lib/head_music/diatonic_interval.rb', line 171

def simple?
  number <= 8
end

#simple_numberObject



163
164
165
# File 'lib/head_music/diatonic_interval.rb', line 163

def simple_number
  @simple_number ||= octave_equivalent? ? 8 : (number - 1) % 7 + 1
end

#simple_semitonesObject



179
180
181
# File 'lib/head_music/diatonic_interval.rb', line 179

def simple_semitones
  @simple_semitones ||= semitones % 12
end

#simple_stepsObject



191
192
193
# File 'lib/head_music/diatonic_interval.rb', line 191

def simple_steps
  steps % 7
end

#stepsObject



187
188
189
# File 'lib/head_music/diatonic_interval.rb', line 187

def steps
  number - 1
end