|
From: Ulrich K. <ul...@ch...> - 2012-07-31 01:05:05
|
Eric Wong <nor...@yh...>: >> > Since SoX doesn't expose the Linkwitz-Riley crossover filters used by >> > mcompand as standalone effects >> In principle, L-R is just two Butterworth filters in series, so you >> can get the lower part by "lowpass 800 lowpass 800" and the higher one >> by "highpass 800 highpass 800", for a crossover frequency of 800. >> However, I did a quick comparison between this and using mcompand to >> split audio into several bands, and the results matched only for >> *some* bands. I am not sure why that is. > If you figure it out, I'd be curious to know. It is due to the "unbalanced" way in which mcompand chains the filters. A Linkwitz-Riley filter, by itself, only splits into two bands, so you need to cascade several filters to get more. There, you have a choice regarding the topology. For example, for crossover frequencies of 100, 200, and 1000, mcompand creates these bands: 1) lowpass 100 lowpass 100 2) highpass 100 highpass 100 lowpass 200 lowpass 200 3) highpass 100 highpass 100 highpass 200 highpass 200 lowpass 1000 lowpass 1000 4) highpass 100 highpass 100 highpass 200 highpass 200 highpass 1000 highpass 1000 It could be done in the exactly opposite way as well, or in a more "balanced" way where we first split in the middle (at 200), then each of the resulting bands once more: 1) lowpass 200 lowpass 200 lowpass 100 lowpass 100 2) lowpass 200 lowpass 200 highpass 100 highpass 100 3) highpass 200 highpass 200 lowpass 1000 lowpass 1000 4) highpass 200 highpass 200 highpass 1000 highpass 1000 There is a difference in the total filter steepness, as shown in the attached gnuplot file. Also, adding more crossover frequencies changes different bands. Ulrich |