Class: WSK::Actions::GenSawtooth

Inherits:
Object
  • Object
show all
Defined in:
lib/WSK/Actions/GenSawtooth.rb

Instance Method Summary collapse

Instance Method Details

#execute(iInputData, oOutputData) ⇒ Object

Execute

Parameters
  • iInputData (WSK::Model::InputData): The input data

  • oOutputData (Object): The output data to fill

Return
  • Exception: An error, or nil if success



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/WSK/Actions/GenSawtooth.rb', line 31

def execute(iInputData, oOutputData)
  # Compute values used to create sawtooth
  lMaxValue = 2**(iInputData.Header.NbrBitsPerSample-1)-1
  lMinValue = -2**(iInputData.Header.NbrBitsPerSample-1)
  lMiddleSample = iInputData.Header.SampleRate/2
  # Create buffer
  lBuffer = []
  iInputData.Header.SampleRate.times do |iIdxSample|
    iInputData.Header.NbrChannels.times do |iIdxChannel|
      if (iIdxSample < lMiddleSample)
        lBuffer << (iIdxSample*lMaxValue)/lMiddleSample
      else
        lBuffer << lMinValue+(lMiddleSample-iIdxSample)*lMinValue/(iInputData.Header.SampleRate-lMiddleSample)
      end
    end
  end
  # Write buffer
  oOutputData.pushBuffer(lBuffer)

  return nil
end

#get_nbr_samples(iInputData) ⇒ Object

Get the number of samples that will be written. This is called before execute, as it is needed to write the output file. It is possible to give a majoration: it will be padded with silence.

Parameters
  • iInputData (WSK::Model::InputData): The input data

Return
  • Integer: The number of samples to be written



20
21
22
# File 'lib/WSK/Actions/GenSawtooth.rb', line 20

def get_nbr_samples(iInputData)
  return iInputData.Header.SampleRate
end