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.
Here’s how the frequency response of my DSP implementation lines up with that of the ASP (the measured DSP response is the dashed magenta curve):
I used a nonlinear least-squares algorithm to tune the IIR filter parameters to get a good match, so the DSP tracks the ASP within about 0.2dB in each pass band. The residuals plot better indicates the quality of the fit:
I haven’t done any phase response comparisons against the ASP, but since I use IIR filters that model the corresponding analog filters in the ASP the phase responses should be in very close agreement. My experience with the LX521 DSP confirms this.
To achieve extremely accurate phase/time alignment of the drivers I employ phase equalization via a carefully designed 8th-order allpass; the ASP simply uses first-order all-passes to mimic a pure delay in the crossover band. I had high hopes my approach would be a significant improvement, but actually I find the difference only marginally audible.
I haven’t had time to make careful distortion measurements, but they probably aren’t necessary: the DSP computation is done in double-precision floating point (i.e. about 53 bits of precision) with dithered re-quantization at the output. Any quantization noise ought to be negligible. Measurements confirmed this to be the case in my LX521 implementation, which is very similar.
My DSP is implemented in floating-point, so clipping between filter stages isn’t a concern. Clipping can occur at the final output stage, particularly as the Pluto 2.1 ASP adds a lot of gain, but it all depends on the spectral content of the source material.
I ran my DSP on a corpus of about 10,000 commercial recordings spanning an eclectic range of genres. For each track I measured the minimum digital headroom at the DSP output, with the overall gain set to match that of the ASP. The resulting data are summarized in the following histograms, showing the number of tracks having a given amount of digital headroom at the DSP output:
Tracks to the left of 0dB (about 80% of all tracks) will have some digital clipping when the upstream digital volume control is at 100% (0dB); tracks to the right of 0dB have peak levels that leave some headroom at the output. The red line indicates (somewhat arbitrarily) the upstream attenuation needed so that only 2% of tracks will get clipped.
The optimal compromise between reducing clipping and increasing dynamic range / SNR is up to you. If you use an upstream digital volume control, you can probably leave things as they are and just turn down the volume if you hear clipping distortion. This makes the best use of available dynamic range and SNR. With the upstream gain at -12dB only 1% of tracks will have some digital clipping (and then only on the tweeter). Below -14dB clipping will never occur.
However, if your volume control is downstream (analog) you probably want to include 12-14dB of attenuation in the DSP path so that clipping occurs rarely or not at all. Since the DSP is already adding almost 8dB of gain, the net digital attenuation will actually be only 4-6dB (or 1 bit of precision); I feel this is an acceptable compromise.
In the original Pluto 2.1, amplifiers are built into the ASP. With a DSP implementation you need to provide your own amplification. Probably the best option (quality and bang for your buck) is to just build the LM3886-based amplifiers according to the Pluto 2.1 plans.
If you want to use an off-the-shelf amplifier you’ll need 4 channels, two of which (for the woofers) need to provide 6dB more gain than the other two. If you go with 4 identical amplifier channels, make sure they’re rated for 100W/ch with all channels driven; you’ll need to compensate by attenuating the tweeter output by 6dB (either in the DSP or — better — with resistive attenuators at the amplifier’s analog inputs). I’m happy with the results using an old 75W/ch surround receiver, but its output can’t match the original Pluto ASP+amps.