October 10, 2013
Hi to all,
Been looking into refining some DSP on a couple of products I'm currently selling, and have the ability to do SSE / SIMD processes, hopefully to alleviate CPU usage as much as possible, whilst keeping the same result signal.
My first query is on a 16 band EQ (fixed frequencies). Now I know in 'traditional' linear sense of coding you would go filter 1 > filter 2 > ... > filter 15 > filter 16 then output final results. What I was thinking was about changing the peaking EQ blocks for BP blocks, and use the Gain control of the GUI to give a positive or negative output of those bands (if a positive gain then standard BP signal, if negative gain then simply flip the BP signal polarity). I would then have all the BP band 'results' adding to the original signal (so to boost or cut depending on the gain level and the polarity of each BPF)
If doing 4 blocks of 4 using SIMD, in theory the ideal would be 4 times faster (at most, even twice as fast is acceptable for me) under the same code process compared to the 16 cascaded version. this could help when multiple plugins are batched in one signal chain (16 band + 16 band)
Does this seem feasible to do this sort of process? I know cascaded needs the output of previous filter to the input of the next for true cascade style, but if this helps with peaking EQ types, perhaps this is a good way to help bring that DSP down a touch?
January 29, 2017
Yes, you can do a graphic EQ with parallel blocks to take advantage of parallel processing. Check out the reference from my FX book for Lane et. al. "DSP Filters" in my FX book; it includes a parallel version.
The original manuscript for the FX book did have both the parallel and cascaded versions and I chose to only include the cascaded version due to space limitations.
Most Users Ever Online: 36
Currently Browsing this Page:
Guest Posters: 1
Newest Members:rawbirdtoe, Bill, hill william, NAUN_SONAR, sufy, Diane, Richard, drvenkman, venkman, Jfx
Moderators: W Pirkle: 249
Administrators: Tom: 67, JD Young: 80, Will Pirkle: 0, W Pirkle: 249