Room-Mode Correction for Squeezebox with ecasound

I play most of my music through a Logitech (née SlimDevices) Squeezebox.  It’s a networked music player that pulls audio files from a server running on a separate PC or NAS.  The player runs embedded linux and the server is open-source, so this system is eminently hackable.

By messing with the contents of custom-convert.conf on the server (it lives in /etc/squeezeboxserver on my Ubuntu machine) you can manipulate the audio signal before it goes to the player.  A popular use for this is to get BruteFIR to do “digital room correction”. Continue reading

Aligning Loudspeaker Drivers with Delays: Simulations

When we combine the outputs of two loudspeaker drivers with a crossover, we usually want the drivers’ outputs to add in-phase.  Otherwise the summed frequency response gets wobbly, as does the polar response, thanks to destructive interference.  Even with an even-order crossover designed to have its outputs in-phase, there’s usually some confounding factor to mess things up: physical offsets of the drivers, and/or phase shifts introduced by equalization, the acoustic response of the baffle, and the high-pass characteristic of the drivers themselves.

The remedy here is to delay the signal to one of the drivers, bringing them into alignment at the crossover frequency (and hopefully out to an octave or so on either side).  In the analog world this can be done by exploiting the group delay of an all-pass filter.  With a digital crossover it’s easier: we just hold back the signal for as many samples as needed.

But how to set the right amount of delay?  Here’s the standard trick: Continue reading