Class: Vizcore::Audio::DummySineInput

Inherits:
BaseInput
  • Object
show all
Defined in:
lib/vizcore/audio/dummy_sine_input.rb

Overview

Deterministic sine-wave generator used for the explicit dummy source.

Constant Summary collapse

DEFAULT_AMPLITUDE =

Default oscillator amplitude.

0.45
DEFAULT_FREQUENCY =

Default oscillator frequency in Hz.

220.0

Instance Attribute Summary

Attributes inherited from BaseInput

#sample_rate

Instance Method Summary collapse

Methods inherited from BaseInput

#running?, #start, #stop

Constructor Details

#initialize(sample_rate: 44_100, frequency: DEFAULT_FREQUENCY, amplitude: DEFAULT_AMPLITUDE) ⇒ DummySineInput

Returns a new instance of DummySineInput.

Parameters:

  • sample_rate (Integer) (defaults to: 44_100)
  • frequency (Float) (defaults to: DEFAULT_FREQUENCY)

    sine frequency in Hz

  • amplitude (Float) (defaults to: DEFAULT_AMPLITUDE)

    clamped to 0.0..1.0



17
18
19
20
21
22
# File 'lib/vizcore/audio/dummy_sine_input.rb', line 17

def initialize(sample_rate: 44_100, frequency: DEFAULT_FREQUENCY, amplitude: DEFAULT_AMPLITUDE)
  super(sample_rate: sample_rate)
  @frequency = Float(frequency)
  @amplitude = Float(amplitude).clamp(0.0, 1.0)
  @phase = 0.0
end

Instance Method Details

#read(frame_size) ⇒ Array<Float>

Returns generated sine wave samples.

Parameters:

  • frame_size (Integer)

Returns:

  • (Array<Float>)

    generated sine wave samples



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/vizcore/audio/dummy_sine_input.rb', line 26

def read(frame_size)
  count = Integer(frame_size)
  return Array.new(count, 0.0) unless running?

  step = (2.0 * Math::PI * @frequency) / sample_rate

  Array.new(count) do
    value = Math.sin(@phase) * @amplitude
    @phase += step
    value
  end
end