class Diapason::Tuning::EqualTemperament

Attributes

base_size[RW]
partitions[RW]
tonic[RW]

Public Class Methods

new(partitions, tonic, base_size = 2) click to toggle source
# File lib/diapason/tuning/equal_temperament.rb, line 6
def initialize(partitions, tonic, base_size = 2) # 2 = 2:1 = normal octave
  @partitions = partitions
  @tonic = tonic
  @base_size = base_size
end

Public Instance Methods

each() { |tonic| ... } click to toggle source
# File lib/diapason/tuning/equal_temperament.rb, line 12
def each
  return enum_for(:each) unless block_given?

  yield tonic

  last_note = tonic

  (partitions - 1).times do
    last_note = Diapason::Note.new(
      last_note.frequency * ratio,
      last_note.index + 1
    )

    yield last_note
  end
end
notes() click to toggle source
# File lib/diapason/tuning/equal_temperament.rb, line 29
def notes
  each.to_a
end
ratio() click to toggle source
# File lib/diapason/tuning/equal_temperament.rb, line 33
def ratio
  base_size ** (1.0/partitions)
end