Method: AudioStream::Buffer.merge

Defined in:
lib/audio_stream/buffer.rb

.merge(buffers, average: false) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/audio_stream/buffer.rb', line 107

def self.merge(buffers, average: false)
  buffers.each {|buf|
    unless Buffer===buf
      raise Error, "argument is not Buffer: #{buf}"
    end
  }

  if buffers.length==0
    raise Error, "argument is empty"
  elsif buffers.length==1
    return buffers[0]
  end

  dst = buffers.inject(:+)

  if average
    gain = AGain.new(level: Decibel.mag(1.0/buffers.length))
    dst = gain.process(dst)
  end

  dst
end