class SPCore::SignalGenerator

Provides methods for generating a Signal that contains test waveforms or noise.

Constants

ARG_SPECS

used to process hashed args in initialize.

Attributes

sample_rate[R]
size[R]

Public Class Methods

new(args) click to toggle source

A new instance of SignalGenerator. @param [Hash] args Required keys are :sample_rate and :size.

# File lib/spcore/generation/signal_generator.rb, line 16
def initialize args
  hash_make args, ARG_SPECS
end

Public Instance Methods

make_noise(amplitude = 1.0) click to toggle source

Generate a Signal object with noise data.

# File lib/spcore/generation/signal_generator.rb, line 21
def make_noise amplitude = 1.0
  output = Array.new(@size)
  output.each_index do |i|
    output[i] = rand * amplitude
  end
  
  return Signal.new(:sample_rate => @sample_rate, :data => output)
end
make_signal(freqs, extra_osc_args = {}) click to toggle source

Generate a Signal object with waveform data at the given frequencies.

# File lib/spcore/generation/signal_generator.rb, line 31
def make_signal freqs, extra_osc_args = {}
  args = { :sample_rate => @sample_rate }.merge! extra_osc_args
  oscs = []
  freqs.each do |freq|
    oscs.push Oscillator.new args.merge(:frequency => freq)
  end
  
  output = Array.new(@size, 0.0)
  @size.times do |n|
    oscs.each do |osc|
      output[n] += osc.sample
    end
  end
  
  return Signal.new(:sample_rate => @sample_rate, :data => output)
end