New Module: module-lfe-lp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[yes I understand that I still need to review the filter itself]

2013/3/19 Justin Chudgar <justin at justinzane.com>:
> While I genenerally understand that filtering induces frequency dependent phase
> changes -- phase delay --  in the filtered signal, I do not understand why this
> is critical for an lfe channel. At the ~10Hz->200Hz range that I expect, my
> understanding is that it is very difficult for humans to detect audio phase
> leading to the inability to localize low frequency sound sources.

This is not about localization of sound sources, but about maintaining
the proper amplitude. IOW, it is about not-well-mastered 5.1
recordings and frequencies in the band that both the subwoofer and the
satellites can reproduce. If such frequencies are present both in LFE
and non-LFE channels, interference occurs in the room. The idea is to
ensure that the interference happens exactly as designed, even with a
filter in place. I.e., if the signals were exactly in phase in the
original recording, they must be exactly in phase with the crossover
filter, too. This helps to ensure the proper amplitude of the
resulting sound when both the subwoofer and the satellites contribute.

In other words, it is OK to introduce phase distortions, but it is not
OK to do it differently in different channels.

As a pathological case, let's consider piece of recording that puts
100 Hz both in the center channel and the LFE channel, in-phase, with
LFE amplitude being 3 dB higher. If you filter the LFE channel with
the 4th order Butterworth filter with a cut-off frequency of 100 Hz
and pass the center channel through, then the filter will attenuate
the LFE channel by 3 dB and phase-shift it by 180 degrees. Result: the
signals (if emitted from near-enough speakers) now completely cancel
each other instead of adding to each other.

> Additionally, the use case I had in mind for this module involves a physical
> subwoofer that is spacially separated from the normal left/right/rear-
> left/rear-right/center speakers. Combined with the above, my understanding is
> that the phase distortion in the lfe channel introduced by my module should be
> almost unnoticeable.

At 100 Hz, the wavelength of sound is about 3.4 m. This is way more
than the typical difference in speaker-listener distances in the room
and the distance between ears, thus, interference happens very much
like if all the speakers were in the same point of space.

> The 2.0 stereo recordings are my personal primary use case. My subwoofer can
> reproduce 20-200Hz, my front-left/right speakers can reproduce 28-20000Hz, my
> center can reproduce 135-25000Hz, my rear-left/right can reproduce 80-20000Hz.
> With this setup, the most limited element is the sub, the next most limited is
> the center.

OK, so in your setup, you don't really need to move low frequencies
from front-left and front-right speakers to the subwoofer. Still, you
need to apply the phase shift. Here is how:

1. As already explained, produce twice-lowpass-filtered and
twice-highpass-filtered versions of each channel using 2nd order
Butterworth filters.

2. For front-left and front-right speakers, take a sum of
twice-highpass-filtered and twice-lowpass-filtered versions of the
corresponding input, put it into that speaker. The result will contain
all frequencies from the input, but will not be equal to the input.
Welcome to "allpass" filters that only change the phase.

3. For other non-LFE inputs, put the twice-highpass-filtered version
into the corresponding speaker and add the twice-lowpass-filtered to
the LFE speaker.

4. For LFE input, add the twice-lowpass-filtered version to the LFE
speaker and do something else with the twice-highpass-filtered version
- e.g. divide it uniformly between other speakers.

-- 
Alexander E. Patrakov


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux