This is a comparison of the csound ugen 'pvsblur' and an equivalent emulation in maxmsp.
more information about pvsblur:
http://www.csounds.com/manual/html/pvsblur.html

"pvsblur.csd" is the original .csd file used in this comparison.

"csound_pvsblur_drumLoop-0.5.aif" is a soundfile recorded from the original .csd file, with a constant blur time of 0.5 seconds. the input soundfile is "drumLoop.aif" from the max examples folder (actually i used a mono version of the file).

"msp_pvsblur_drumLoop-0.5.aif" was recorded from the msp emulation.
"cs~_pvsblur_drumLoop-0.5.aif" was recorded from csound~ running inside maxmsp.

"pvsBlur.main.mxb" is the max patch where the comparison is made.
it contains Davis Pyon's csound~ object which uses "pvsblur_csound~.csd" to dynamically change the blur time. the object is however not needed to run the rest of the patch.

"pvsBlurMaxOnly_pfft" is a version with native max objects only.
it uses vectral~ for the averaging, which comes close to the original but doens't quite make it.

"pvsBlur_pfft" is a version that uses recursive averaging (see http://www.dspguide.com/ch15/5.htm for more information). 
since this is quite a hassle to get right inside a pfft, this part was done in java (see "vFrameAverage.java").
this version comes very close to the original csound ugen (although the dynamical control of the blur time is not well supported).

Note: in both pfft solutions the cpu usage is relatively constant and stays well below the csound version (especially for large blur times).


volker boehm, sept.08