class SRC::Simple

Attributes

channels[RW]
input_rate[RW]
output_rate[RW]

Public Class Methods

new(input_rate, output_rate, channels) click to toggle source
# File lib/ruby-libsamplerate/simple.rb, line 5
def initialize(input_rate, output_rate, channels)
        @input_rate = input_rate
        @output_rate = output_rate
        @channels = channels
end

Public Instance Methods

resample(data) click to toggle source
# File lib/ruby-libsamplerate/simple.rb, line 15
def resample(data)
        size = data.size
        frames = size / @channels
        rs_frames = (frames * src_ratio).to_i
        rs_size = rs_frames * @channels

        input = FFI::MemoryPointer.new :float, size
        output = FFI::MemoryPointer.new :float, rs_size
        input.write_array_of_float data

        src = Data.new
        src[:data_in] = input
        src[:input_frames] = frames
        src[:data_out] = output
        src[:output_frames] = rs_frames
        src[:src_ratio] = src_ratio


        res = SRC.src_simple src, SRC::SRC_SINC_FASTEST, @channels

        raise SRCError.from_int res unless res == 0


        frames_written = src[:output_frames_gen]
        src[:data_out].read_array_of_float frames_written * @channels
end
src_ratio() click to toggle source
# File lib/ruby-libsamplerate/simple.rb, line 11
def src_ratio
        @output_rate.to_f / @input_rate.to_f
end