Module: Tonal::ExtendableRatio
- Extended by:
- Forwardable
- Includes:
- Comparable
- Included in:
- ExtendedRatio, SubharmonicExtendedRatio
- Defined in:
- lib/tonal/extended_ratio.rb
Instance Attribute Summary collapse
-
#partials ⇒ Object
readonly
Returns the value of attribute partials.
Instance Method Summary collapse
- #initialize(partials: nil, ratios: nil) ⇒ Tonal::ExtendedRatio, Tonal::SubharmonicExtendedRatio
- #inspect ⇒ Object
-
#interval_between(index1, index2, reduced: true) ⇒ Tonal::Interval
The interval between two partials.
Instance Attribute Details
#partials ⇒ Object (readonly)
Returns the value of attribute partials.
6 7 8 |
# File 'lib/tonal/extended_ratio.rb', line 6 def partials @partials end |
Instance Method Details
#initialize(partials: nil, ratios: nil) ⇒ Tonal::ExtendedRatio, Tonal::SubharmonicExtendedRatio
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/tonal/extended_ratio.rb', line 15 def initialize(partials: nil, ratios: nil) raise(ArgumentError, "Provide either partials or ratios, not both", caller[0]) if !partials.nil? && !ratios.nil? raise(ArgumentError, "Provide either partials or ratios", caller[0]) if partials.nil? && ratios.nil? if partials during_initialize(*partials) elsif ratios first = ratios.first partials = ratios.map{|r| r * first} during_initialize(*partials) end end |
#inspect ⇒ Object
41 42 43 |
# File 'lib/tonal/extended_ratio.rb', line 41 def inspect display.join(":") end |
#interval_between(index1, index2, reduced: true) ⇒ Tonal::Interval
Returns the interval between two partials.
33 34 35 36 37 38 39 |
# File 'lib/tonal/extended_ratio.rb', line 33 def interval_between(index1, index2, reduced: true) return nil if self[index1].nil? || self[index2].nil? first = partials.first r1 = reduced ? Tonal::ReducedRatio.new(self[index1], first) : Tonal::Ratio.new(self[index1], first) r2 = reduced ? Tonal::ReducedRatio.new(self[index2], first) : Tonal::Ratio.new(self[index2], first) Tonal::Interval.new(r1, r2, reduced:) end |