[pulseaudio-discuss] [PATCH] add module-virtual-surround-sink

Alexander E. Patrakov patrakov at gmail.com
Sun Jan 22 02:43:25 PST 2012


Niels Ole Salscheider <niels_ole at salscheider-online.de> wrote:

> Hello,
> 
> > 1) Is the license of the HRTF dataset that you use compatible with
> > GPL?
> 
> The Listen HRIR dataset is public domain so it is GPL compatible.

OK
> 
> > 2) Why should we do this advanced downmixing in an optional module?
> > I.e., why not just replace the default downmixing algorighm without
> > creating a module for that?
> 
> Replacing the default downmixing algorithm is not a good idea since
> this one only works for headphones. And you might want to use a
> simpler one on a low end machine since folding needs some cpu cycles.
> But if there is a better place to implement this, I am fine with it,
> too.

<insane requirements follow, feel free to ignore for now>

OK, so in the future we need a different algorithm for desktop speakers.
Something like "find out stereo sound that, when convolved with the
HRIR and summed for each ear, produces the same result as the original
5.1 sound convolved with the appropriate HRIR", but at high-enough
frequencies only.

As for the complexity - yes, it can be reduced substantially, because
you use the simplest possible implementation of convolution with a
rather long filter. Please try to use FFT-based convolution and
benchmark.

Or, even better, try to approximate one of the available HRIRs with a
combination of an IIR filter of some low (4-6) order and a
fixed-per-channel delay, and hard-code that. As there is no scientific
way of designing IIR filters with arbitrary impulse response yet, the
simplest possible way of doing such approximation is to autogenerate
random IIR filters of a given order, compare their response with the
desired one, and leave the whole thing running for a day or so until it
finds something suitable.

-- 
Alexander E. Patrakov



More information about the pulseaudio-discuss mailing list