Presentation is loading. Please wait.

Presentation is loading. Please wait.

Non-recursive Comb Filter a z -m K K Ka t m samples impulse response f f = SR/m f 180 o   

Similar presentations


Presentation on theme: "Non-recursive Comb Filter a z -m K K Ka t m samples impulse response f f = SR/m f 180 o   "— Presentation transcript:

1 Non-recursive Comb Filter a z -m K K Ka t m samples impulse response f f = SR/m f 180 o   

2 Recursive Comb Filter z -m K b < 1 LP K Kb t m samples impulse response Kb 2 Kb 3 Kb 4 f f = SR/m f/2 b =.001 delay = m/SR

3 All-pass Comb Filter z -m b -b b t impulse response b2b2 b3b3 b4b4 f recursive and non recursive parts cancel each other

4 f f non-recursive recursive +1 recursive -1 a a

5 decay density Manfred Schroeder Reverberator

6 Block diagram of the sampled data system simulated on the digital computer Block diagram of a single channel (monophonic) reverberator Allpass recursive comb (decay) (density)

7 Schroeder Reverberator c c c c AA 29.7 msec 37.1 41.1 43.7 5.01.7 decay density sets reverb time

8 f f f f + + = Summation of recursive comb filters should approximate a flat response

9 Problems f a 1) 2) t periodic Response is not flat Impulse response has periodicities that produce pitch percepts

10 Frequency in Hz (linear) z-plane Power in dB Air & wall absorption filter Usually the low-pass filter inserted into the recursive comb filter is a first-order filter. Here is a second- order filter that is more accurate. Low-frequency loss

11 Comparison of simulated and actual rooms simulated real

12 Early Reflections delay bufferreverb input output t input early reflections reverb a

13 Kendall & Martens 1984

14 Spatial Reverberation

15 Wet/Dry Mix Dry Wet Reverb L R

16 Implementing Delay Buffers - Queue in out inout

17 Delay Buffer outPos inPos delay outPos = inPos - delay; buffer[inPos] = in; out = buffer[outPos]

18 ij in out buffer(i) = in; out = buffer(j); if(++i >=buffer.length) i = 0; if(++j >=buffer.length) j = 0;

19 ij in out buffer buffer length is larger than needed delay is i - j

20 i0000000100000001 0000000011111111 0000000000000001 i 511 2 n -sized buffers implemented with masking i = (i + 1) & 511; bitwise and

21 modulated delay ij in out buffer delay (i - j) is dynamic given int delay: j = i - delay; while (j >= buffer.length) j -= buffer.length; while (j < 0) j += buffer.length; check bounds!

22 Fractional Delay i in buffer out? instDelay as int.fract outPos = i - instDelay; j = (int) outPos; jP1 = j + 1; fract = outPos - j; check bounds ~ ~ ~ ~ How could we use the fractional delay?

23 Linear Interpolation Big Problem z -1 x(n) y(n) Causes amplitude modulation of high frequencies t buffer(j) buffer(jP1) fract out = buffer(jP1)*(1.0-fract) + buffer(j)*fract;

24 Big Problem? Averaging two samples is filtering (1st-order FIR Low-pass) fract = 0 fract = 0.5 SR/2 a f 1.0

25 Allpass Interpolation z -1 x(n)y(n) z -1 1-fract Good for delay modulation that causes relatively small pitch changes


Download ppt "Non-recursive Comb Filter a z -m K K Ka t m samples impulse response f f = SR/m f 180 o   "

Similar presentations


Ads by Google