2017-09-22 22:12 GMT+05:00 Christian Weinz <christian at madez.de>: > Hello, > > I use headphones, and have tactile transducers on my chair. This makes > the audio sound louder and feel more intense. This is good for my ears > and my neighbours. > > This setup requires 2.1 output. I tried the GNOME-Settings to set the > output to 2.1. That option was not available. I also tried alsamixer, > paprefs and pavucontrol, to no avail. I played around with > hdajackretask, and finally, after overriding both the Pink Mic port to > Center/LFE and the Blue Line In to Back, I can select 2.1 audio in the > GNOME-Settings. This was difficult to setup. > > Then, however, I had the full-range signal on both my headphones and on > the synthesized LFE channel. This means I hear voices in my chair. To > prevent that, I set the lfe-crossover frequency, but then I lose the > bass in my headphones. Both is bad. Thank you for accurately describing the frequency responses both of the headphones and the transducer. In particular, for confirmation that there is a significant overlap, which is the necessary condition to make sure that what we'll design will work not only for your hardware. > Now I found the patch "Add option to disable highpass-filter on non-lfe > channels." by Markus Ebner at > > https://pw-emeril.freedesktop.org/patch/171424/ > > This patch, if it works at advertised, would solve my problem. But the > patch was rejected. I would comment there, but because the websites > certificate is invalid, I cannot create an account to comment, since > Google's reCAPTCHA refuses to work. > > To summarize, for my setup I need the full-range stereo signal on my > headphones and a low-pass filtered LFE signal for the transducers. Is > there a way to do this with PulseAudio? The patch will not solve your problem acceptably, because the low frequencies from the headphones and the transducer will not be in-phase, due to the delay created by the filter. I think (but am not sure, input from other DSP experts is welcome) that the following is better than the approach in the original patch: 1. Apply a lowpass filter, in the form of two cascaded 2nd order Butterworth filters, to each channel. Store the result. 2. Apply a matching highpass filter, in the form of two cascaded 2nd order Butterworth filters, to each channel. Also store the result. 3. Send the sum of low frequencies (as stored on step 1) for each input channel, appropriately scaled, to the LFE channel. 4. For each non-LFE input channel, add low frequencies extracted during step 1 to high frequencies extracted during step 2. Send the result to the corresponding output. Note: step 4 does not reproduce the original waveform. What you get is an "allpass filter", which changes phase (so that it matches what we send to the LFE channel), but not amplitude. > To add on this question, my Denon AVR X3100W has individual cut-off > frequencies for each channel, and the subwoofer has its own low-pass > frequency. How can I have this fine-grained control with PulseAudio? We need to reverse-engineer the kind of filtering that they use and try to find justification, or conditions when it is valid. As I said, naive attempts of attaching independently-tuned filters to each channel are Just Wrong from the DSP viewpoint, because of phase. -- Alexander E. Patrakov