Class: Wavify::DSP::LFO
- Inherits:
-
Object
- Object
- Wavify::DSP::LFO
- Defined in:
- lib/wavify/dsp/lfo.rb,
sig/dsp.rbs
Overview
Low frequency oscillator for modulation sources.
Constant Summary collapse
- WAVEFORMS =
%i[sine triangle square sawtooth].freeze
Instance Method Summary collapse
-
#initialize(rate:, sample_rate:, waveform: :sine, phase: 0.0) ⇒ LFO
constructor
A new instance of LFO.
- #next_value ⇒ Float
- #reset ⇒ LFO
- #value_at(offset = 0.0) ⇒ Float
Constructor Details
#initialize(rate:, sample_rate:, waveform: :sine, phase: 0.0) ⇒ LFO
Returns a new instance of LFO.
9 10 11 12 13 14 15 |
# File 'lib/wavify/dsp/lfo.rb', line 9 def initialize(rate:, sample_rate:, waveform: :sine, phase: 0.0) @rate = validate_positive!(rate, :rate) @sample_rate = validate_positive!(sample_rate, :sample_rate) @waveform = validate_waveform!(waveform) @initial_phase = phase.to_f % 1.0 reset end |
Instance Method Details
#next_value ⇒ Float
17 18 19 20 21 |
# File 'lib/wavify/dsp/lfo.rb', line 17 def next_value value = value_at_phase(@phase) @phase = (@phase + (@rate / @sample_rate)) % 1.0 value end |
#reset ⇒ LFO
27 28 29 30 |
# File 'lib/wavify/dsp/lfo.rb', line 27 def reset @phase = @initial_phase self end |
#value_at(offset = 0.0) ⇒ Float
23 24 25 |
# File 'lib/wavify/dsp/lfo.rb', line 23 def value_at(offset = 0.0) value_at_phase((@phase + offset.to_f) % 1.0) end |