Class: RoadToRubykaigi::Audio::TriangleOscillator

Inherits:
Object
  • Object
show all
Includes:
Phasor
Defined in:
lib/road_to_rubykaigi/audio/oscillator.rb

Instance Method Summary collapse

Methods included from Phasor

#gain, #sample_rate

Instance Method Details

#generate(frequencies:) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/road_to_rubykaigi/audio/oscillator.rb', line 29

def generate(frequencies:)
  samples = frequencies.map do |frequency|
    phase = tick(frequency: frequency)
    if phase < 0.5
      4 * phase - 1
    else
      -4 * phase + 3
    end
  end
  samples.sum / samples.size
end