Sha256: 77749d9f543813871d20f710e60e83684b8c1dbc83976b6ac91ea8eeff281152
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
module SPCore # Provides methods for generating a Signal that contains test waveforms or noise. class SignalGenerator include Hashmake::HashMakeable # used to process hashed args in #initialize. ARG_SPECS = { :size => arg_spec(:reqd => true, :type => Fixnum, :validator => ->(a){ a > 0 }), :sample_rate => arg_spec(:reqd => true, :type => Float, :validator => ->(a){ a > 0.0 }) } attr_reader :sample_rate, :size # A new instance of SignalGenerator. # @param [Hash] args Required keys are :sample_rate and :size. def initialize args hash_make ARG_SPECS, args end # Generate a Signal object with noise data. 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 # Generate a Signal object with waveform data at the given frequencies. 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spcore-0.1.6 | lib/spcore/util/signal_generator.rb |