class AudioStream::Fx::Distortion

Public Class Methods

new(gain: 40.0, level: -20.0) click to toggle source

@param gain [AudioStream::Decibel] input gain @param level [AudioStream::Decibel] output level

# File lib/audio_stream/fx/distortion.rb, line 6
def initialize(gain: 40.0, level: -20.0)
  @gain = Decibel.create(gain).mag
  @level = Decibel.create(level).mag
end

Public Instance Methods

process(input) click to toggle source
# File lib/audio_stream/fx/distortion.rb, line 11
def process(input)
  streams = input.streams.map {|stream|
    dst = Vdsp::DoubleArray.new(input.window_size)
    Vdsp::UnsafeDouble.vclip(stream * @gain, 0, 1, -1.0, 1.0, dst, 0, 1, input.window_size)
    dst * @level
  }
  Buffer.new(*streams)
end