Class: Tonal::Ratio::Approximation::Set

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/tonal/approximation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ratio:) {|@ratios| ... } ⇒ Set

Returns a new instance of Set.

Yields:



166
167
168
169
170
# File 'lib/tonal/approximation.rb', line 166

def initialize(ratio:)
  @ratio = ratio
  @ratios = ::Set.new
  yield @ratios if block_given?
end

Instance Attribute Details

#ratioObject (readonly)

Returns the value of attribute ratio.



164
165
166
# File 'lib/tonal/approximation.rb', line 164

def ratio
  @ratio
end

#ratiosObject (readonly)

Returns the value of attribute ratios.



164
165
166
# File 'lib/tonal/approximation.rb', line 164

def ratios
  @ratios
end

Instance Method Details

#[](index) ⇒ Object



193
194
195
# File 'lib/tonal/approximation.rb', line 193

def [](index)
  entries[index]
end

#inspectObject



173
174
175
# File 'lib/tonal/approximation.rb', line 173

def inspect
  "#{ratio}: #{entries}"
end

#max_primesObject



181
182
183
# File 'lib/tonal/approximation.rb', line 181

def max_primes
  entries.map(&:max_prime)
end

#min_primesObject



185
186
187
# File 'lib/tonal/approximation.rb', line 185

def min_primes
  entries.map(&:min_prime)
end

#prime_divisionsObject



189
190
191
# File 'lib/tonal/approximation.rb', line 189

def prime_divisions
  entries.map(&:prime_divisions)
end

#sort_byObject



197
198
199
200
201
202
203
# File 'lib/tonal/approximation.rb', line 197

def sort_by(&)
  self.class.new(ratio: ratio) do |ratios|
    entries.sort_by(&).each do |ratio|
      ratios << ratio
    end
  end
end

#to_centsObject



177
178
179
# File 'lib/tonal/approximation.rb', line 177

def to_cents
  entries.map(&:to_cents)
end