Class: RoadToRubykaigi::Audio::SquareOscillator
- Inherits:
-
Object
- Object
- RoadToRubykaigi::Audio::SquareOscillator
- Includes:
- Phasor
- Defined in:
- lib/road_to_rubykaigi/audio/oscillator.rb
Constant Summary collapse
- DUTY_CYCLE =
{ d0: 0.125, d1: 0.25, d2: 0.5, }
Instance Method Summary collapse
Methods included from Phasor
Instance Method Details
#duty_cycle=(duty_cycle) ⇒ Object
91 92 93 |
# File 'lib/road_to_rubykaigi/audio/oscillator.rb', line 91 def duty_cycle=(duty_cycle) @duty_cycle = (DUTY_CYCLE.key?(duty_cycle) ? duty_cycle : :d0) end |
#generate(frequencies:) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/road_to_rubykaigi/audio/oscillator.rb', line 83 def generate(frequencies:) samples = frequencies.map do |frequency| phase = tick(frequency: frequency) phase < duty_cycle ? 1.0 : -1.0 end samples.sum / samples.size end |