Multiband processing methodologies

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi all!

This is my first post here. I've learned a lot reading through this forum and it is absolutely amazing to have so many knowleadgeable people contributing to everyones benefit.

I've recently been limping into the wonderful world of signal processing, trying to get some stuff done in various programming languages, and now I wanted to get a general opinion from you.

Suppose I wanted to do some multiband processing, and I wanted this processing to be fairly simple but permit modulation. How would you go about splitting the signal into bands? From the bottom of my experience, basically quantizable to 0, I'd guess that some sort of fft-ing with processing in the frequency domain is viable. Alternatively one could use a bunch of bandpass filters and process the signal in the time domain. But I have difficulties judging these methods, seeing what their benefits and perks are. And maybe one could do it in other ways too. To put it in fewer words, what would you have done to split the signal into bands with the requirements being simple processing on the bands, but modulatable? You don't have to be superspecific, I'm mostly looking for some pointers in the right direction.

Thank you again for being part of this great community!

Post

Use a typical cross-over filterbank.
(http://blog.bjornroche.com/2012/08/why- ... omain.html)

Also some info about cross-overs here:
http://www.kvraudio.com/forum/viewtopic ... 3&t=444438

I'm not sure how to do the mixing of multi-band crossover though. That is, how to mix together bands that may have been differently processed.

Post

Fluky wrote:Use a typical cross-over filterbank.
(http://blog.bjornroche.com/2012/08/why- ... omain.html)

Also some info about cross-overs here:
http://www.kvraudio.com/forum/viewtopic ... 3&t=444438

I'm not sure how to do the mixing of multi-band crossover though. That is, how to mix together bands that may have been differently processed.
Just sum the signals again. Best way to do it is maybe via a modular subhost, where splitting the signal and mixing them together again are basically just facets of the modular routing. To make a band, run the signal through a lowpass filter(*), then a highpass filter(**), to create a crude crossover for the band, then an instance of your chosen effects chain. Your bands are just parallel versions of that, and they just sum at the output.

(*) The 'first' band probably doesnt need a lowpass
(**) The frequency of each lowpass filter should be roughly the frequency of the 'previous' band's highpass filter.

The FL Minihost is free, or there's MUX, Bidule, MetaPlugin etc.

(Alternately, BlueCat MB-7 does all the splitting/mixing/hosting without being modular, with more optimal crossover filters)
my other modular synth is a bugbrand

Post

+1 on filter banks or cross over filters. Don't use FFT for such a thing, it's far more complicated than just taking a windowed FFT, doing stuff on the spectrum and doing an iFFT on each window. Not worth it.

Post

crivvens, i missed that this was the DSP forum. apologies.
my other modular synth is a bugbrand

Post

Thank you for your answers!

I started to imagine that FFT wouldn't be as straightforward as I initially thought, so I'll rule that out!
I'll che the linkwitz-riley networks, and I'm also very curious about the RBJ's, which I've implemented singularly in the past, but never together.

From what I gather these are all IIR filters (correct me if I'm wrong). I've coded IIR's before, and I've never thought they sound bad at all, but I can't help but wonder if their phase issues could be a problem in multiband applications. Are they? I have no clue.

Which leads me to: could FIR filters be a possibility? I have never implemented them, so I don't mind experimenting a bit with them. The only bad thing I can think of is the performance of the FIR code if fairly steep bands are required, and the bands are many. What's your take on multiband by FIR?

Going to check those Linkwitz-riley now!

Post

NoWay wrote:I can't help but wonder if their phase issues could be a problem in multiband applications.
For the most part, a crossover network tends to sounds ok. Although for mastering, I've read testimonial to the fact that they are not welcome in mastering. They seem to screw things up, rather than making them sound better. But for creative sound design, or mixing use, they aren't that bad.

"could FIR filters be a possibility?"

Yes, these tend to sound waaay more neutral than the IIR counterpart. I will usually go first to an FIR bandsplitter for transparency.

Post

FIR may be more neutral, but they also require more samples, and in some cases latency?

IIR are interesting IMHO because that's what analog banks are based on. But I can also understand why they are not welcome for the main bus.

Post

Yes, I noticed the latency could grow quite a bit if the requisites for steep roll-off we're strict. I tried some FIR design in Octave with Blackman-Harris window, and I couldn't get satisfactory results with low latency. Still, I'd like to try it in the future, as they might work well with less roll-off for some multiband applications.

Otherwise, I spent the morning implementing RBJ bandpass filters in C++, and I'm pleasantly surprised. They work well and sound great. I haven't done any deep analysis yet, but reading others opinions, I really think they are worth it. I can mix back to a flat frequency response with only one band made of a bandpass by just subtracting the filtered signal from the original, and summing back the difference to the filtered signal. I have to try it with more bands however.

Unrelated question: I'm doing most of my analysis with VST plugin analyser:
http://www.kvraudio.com/product/vst-plu ... tian-budde

It seems to behave properly, but I haven't got any experience with other tools to check frequency response, phase response and such, so I wondered if any of you knew if how Budde's program fares. Does it have significant drawbacks for analysing signals, or can I be satisfied with it? Up until now I'm pretty happy with it, but maybe you know something I don't.

Post

NoWay wrote:so I wondered if any of you knew if how Budde's program fares.
Assuming linear processing (i.e. we're not trying to test some highly saturated EQ) its frequency/phase (and derived) plots are nearly perfect.

Post

The LR type crossovers should be friendly to multiband processing because of the special phase alignment and ability to mix flat. However there are possible crossovers that mix flat and may sound fine as a speaker crossover, that do not sound good if you modify the split bands before mixing back together.

For instance simple first order rc crossover will mix flat. Each band is 0.707 amplitude at crossover, but it will mix flat rather than with a +3 dB bump because of phase differences in the crossover vicinity.

You could statically mix back together any ratio of the two first order crossover bands and it would sound ok to the ear. Mix the high band louder or softer and the mix still sounds reasonable.

But if you run one or both bands thru compressors and mix back together it sounds horrible. Almost as obnoxious as running the signal into an autowah envelope follower effect.

Every possible mix of hi + lo sounds ok if it stays put, but if the mix is in motion, the phase in the crossover region also goes into motion and this moving phase is very noticeable to the ear. It would never be transparent enough for multiband compression, but might make a interesting phasey special effect.

Post Reply

Return to “DSP and Plugin Development”