30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/audio_stream/fx/phaser.rb', line 30
def process(input)
window_size = input.window_size
@phase = (@phase + @speed) % (2.0 * Math::PI)
a = Math.sin(@phase) * 0.5 + 0.5
apf_freq = Rate.freq(@freq * (1.0 + a * @depth))
wet = input
@filters.each {|filter|
filter.update_coef(freq: apf_freq, q: BiquadFilter::DEFAULT_Q)
wet = filter.process(wet)
}
streams = wet.streams.map.with_index {|wet_stream, i|
dry_stream = input.streams[i]
dry_stream * @dry + wet_stream * @wet
}
Buffer.new(*streams)
end
|