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:



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

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

Instance Attribute Details

#ratio ⇒ Object (readonly)

Returns the value of attribute ratio.



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

def ratio
  @ratio
end

#ratios ⇒ Object (readonly)

Returns the value of attribute ratios.



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

def ratios
  @ratios
end

Instance Method Details

#[](index) ⇒ Object



211
212
213
# File 'lib/tonal/approximation.rb', line 211

def [](index)
  entries[index]
end

#inspect ⇒ Object



191
192
193
# File 'lib/tonal/approximation.rb', line 191

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

#max_primes ⇒ Object



199
200
201
# File 'lib/tonal/approximation.rb', line 199

def max_primes
  entries.map(&:max_prime)
end

#min_primes ⇒ Object



203
204
205
# File 'lib/tonal/approximation.rb', line 203

def min_primes
  entries.map(&:min_prime)
end

#prime_divisions ⇒ Object



207
208
209
# File 'lib/tonal/approximation.rb', line 207

def prime_divisions
  entries.map(&:prime_divisions)
end

#sort_by ⇒ Object



215
216
217
218
219
220
221
# File 'lib/tonal/approximation.rb', line 215

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

#to_cents ⇒ Object



195
196
197
# File 'lib/tonal/approximation.rb', line 195

def to_cents
  entries.map(&:to_cents)
end