Class: HeadMusic::Analysis::DiatonicInterval::Size
- Inherits:
-
Object
- Object
- HeadMusic::Analysis::DiatonicInterval::Size
- Defined in:
- lib/head_music/analysis/diatonic_interval/size.rb
Overview
Encapsulate the distance methods of the interval
Instance Attribute Summary collapse
-
#high_pitch ⇒ Object
readonly
Returns the value of attribute high_pitch.
-
#low_pitch ⇒ Object
readonly
Returns the value of attribute low_pitch.
Instance Method Summary collapse
- #compound? ⇒ Boolean
-
#initialize(pitch1, pitch2) ⇒ Size
constructor
A new instance of Size.
- #number ⇒ Object
- #octave_equivalent? ⇒ Boolean private
- #octaves ⇒ Object
- #semitones ⇒ Object
- #simple? ⇒ Boolean
- #simple_number ⇒ Object
- #simple_semitones ⇒ Object
- #simple_steps ⇒ Object
- #steps ⇒ Object
Constructor Details
#initialize(pitch1, pitch2) ⇒ Size
Returns a new instance of Size.
5 6 7 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 5 def initialize(pitch1, pitch2) @low_pitch, @high_pitch = *[pitch1, pitch2].sort end |
Instance Attribute Details
#high_pitch ⇒ Object (readonly)
Returns the value of attribute high_pitch.
3 4 5 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 3 def high_pitch @high_pitch end |
#low_pitch ⇒ Object (readonly)
Returns the value of attribute low_pitch.
3 4 5 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 3 def low_pitch @low_pitch end |
Instance Method Details
#compound? ⇒ Boolean
25 26 27 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 25 def compound? !simple? end |
#number ⇒ Object
9 10 11 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 9 def number @number ||= @low_pitch.steps_to(@high_pitch) + 1 end |
#octave_equivalent? ⇒ Boolean (private)
47 48 49 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 47 def octave_equivalent? number > 1 && ((number - 1) % 7).zero? end |
#octaves ⇒ Object
17 18 19 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 17 def octaves @octaves ||= number / 8 end |
#semitones ⇒ Object
33 34 35 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 33 def semitones (high_pitch - low_pitch).to_i end |
#simple? ⇒ Boolean
21 22 23 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 21 def simple? number <= 8 end |
#simple_number ⇒ Object
13 14 15 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 13 def simple_number @simple_number ||= octave_equivalent? ? 8 : (number - 1) % 7 + 1 end |
#simple_semitones ⇒ Object
29 30 31 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 29 def simple_semitones @simple_semitones ||= semitones % 12 end |
#simple_steps ⇒ Object
41 42 43 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 41 def simple_steps steps % 7 end |
#steps ⇒ Object
37 38 39 |
# File 'lib/head_music/analysis/diatonic_interval/size.rb', line 37 def steps number - 1 end |