Digital Allpass Filters for Crossover Phase Equalization

When two loudspeaker drivers are crossed over we typically want their on-axis acoustic outputs to sum in-phase.  For example the 4th-order Linkwitz-Riley (LR4) crossover is designed for this.  In practice, however, things rarely work out so well because there are potentially many sources of (often nonlinear) phase distortion, e.g. equalization filters, physical offset of the drivers, band-pass characteristic of the drivers, and acoustical interaction with the baffle.

Crossover phase alignment is often corrected by delaying the signal to one of the drivers. This typically aligns the drivers’ acoustic phases only up to zeroth-order, which is a bit rough.  It’s possible to do much better: one can design an allpass phase-equalization filter that gives accurate alignment throughout the crossover region.  My aim here is to briefly demonstrate the technique. Continue reading

Optimal Toe-In Angle for a Dipole Loudspeaker

I’ve been doing some work on determining the best toe-in angle for a dipole loudspeaker.  The mathematical details are in this draft manuscript, but here is a brief summary.

Attenuating Lateral Room Reflections

By toeing-in a dipole one can selectively attenuate various room reflections by placing them at or near a dipole null (i.e. 90° off-axis).  Shown here are two scenarios for the first lateral reflection paths in a room, with the polar response of an ideal dipole superimposed.  Only the dipole orientation changes, the reflection paths are the same in both cases:

The first case is typical; the side-wall reflection is severely attenuated (about 30dB) since it is radiated near the dipole null.  The front reflection is helped a bit, but it’s only down 3dB (plus about 4dB due to path length).  In practice a mirror placed at the side wall reflection point will show an image of the loudspeaker on-edge. Continue reading

Pluto 2.1 with Software DSP

About a year ago I implemented a software-DSP version of the Linkwitz Labs Pluto 2.1.  My aim was to replace the original analog signal processor (ASP) with a small, standalone PC that can double as a media server: like a Squeezebox that also performs xover/eq duties.

Pluto is an outstanding loudspeaker, and really deserves to be built/heard by more people.  Part of my motivation is to provide a lower-cost, easier-to-build alternative to the ASP.

I own the original ASP version of Pluto 2.1 as well: in several hours of level-matched A/B listening tests I haven’t been able to hear any difference — except that my DSP version currently has a less powerful amplifier on the woofers, which limits the peak output somewhat.

If you want to go the software-DSP route yourself, follow the 2-way crossover instructions in my DSP how-to article.  I’ll post the proprietary Pluto-specific configuration files in the Owners’ area of the Orion/Pluto Forum. Continue reading

Digital Crossover/EQ with Open-Source Software: HOWTO

The following setup can be used to implement a 2- or 3-way digital crossover (with equalization) for active loudspeakers.  It runs on a linux PC and uses only free, open-source software.  My design goal was a small, self-contained unit that can live on a shelf beside an amplifier: it runs without need of a display, keyboard, or mouse, and it looks like this:

The PC is the small box on the left.  It’s silent, always on, and requires no user interaction.

One could use this system to implement the xover/eq for the Linkwitz Labs Pluto 2.1 or LX521.  For those interested, I’ll post specific configuration files in the Owners’ area of the Orion/Pluto/LX521 Forum: together with this how-to, those files can be used to build a DSP version of the Analog Signal Processor (ASP) for those loudspeakers.  I’ve written a long article detailing my development of the LX521 implementation; my Pluto implementation is similar. Continue reading

Using MusicIP with mpd

Lately I’m using mpd instead of a squeezebox as my network music player of choice.  The only thing I miss about squeezebox is its integration with MusicIP.  MusicIP is a great piece of abandon-ware.  It analyzes your digital music collection to discover acoustic “similarity” between tracks.  Given a seed song (or songs), it creates a playlist of “similar” songs — sort of like Pandora, but operating on your own music collection.  (The notion of “similar” here is based on some undisclosed metric; MusicIP is most regrettably closed-source.)  I’ve used MusicIP for years now and I’m still impressed by how well it works.  It’s an integral part of how I navigate my music collection.

I wrote a simple script to act as a middle man between MusicIP and mpd.  It gets the current song from mpd, asks MusicIP to generate a playlist with this song as the seed, and passes the result back to mpd.  You can run it from any machine on your network.  Linking this script to a desktop icon gives a nice way to generate a MusicIP mix with one click. Continue reading

Loudspeaker Placement in Small Rooms

When loudspeakers are placed close to walls, the delay between the direct and reflected sound waves affects not only the perceived timbre (due to room gain and comb filtering) but also the degree to which believable phantom stereo images are created.  If reflected sound waves arrive too soon after the direct sound, they generate spurious directional cues that spoil the stereo-imaging magician’s trick.

Some people go to great lengths to absorb room reflections with acoustic absorbers and diffusers, but the evidence [1] suggests this probably isn’t a good idea.  These products have inherently uneven frequency response; their presence can drastically alter the timbre of the reflected sound, and it’s harder for the ear/brain to ignore reflections if their spectral content is different from the direct sound. Continue reading

LX521 with software DSP

I’ve just finished building a pair of Linkwitz Labs’ LX521 loudspeakers.  They’re everything I could want: 4-way, dipole radiation, with active crossover and eq.  They sound amazing.  Previously the best speakers I had heard were the Pluto 2.1.

What I’ve done differently is to implement the xover/eq with a digital processor, which runs in software on a small pc.  I did this using only open-source, free (as in beer) software, plus a bit of code I wrote myself. Continue reading

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