Long, long ago, in the earliest days of this blog, I described my DIY approach to a whole house audio system. The strategy centers around a collection of Logitech Squeezebox 3 streaming audio players, each mated to a pair of powered audio monitors. All this worked great until the aging SB3s started to fail. Drying electrolytic capacitors cause arthritis in electronics.
Faced with failing SB3s, and the occasional desire to grow the installation, I resorted to using a most excellent combination of the Raspberry Pi3 B+ single board computer running PiCorePlayer in combination with a HifiBerry DAC. I’ve got HiFiBerry DAC+ where –10 dbm RCA output is suitable and DAC Plus Pro XLR where +4 dbm XLR balanced output is required.
The RPi, HiFiBerry and PiCorePlayer combination work great! They outperform the original SqueezeBox 3 in every way, save the lack of an IR remote control. Also, they cost less, even with the fancy metal case.
All the above is preface to help explain something that I discovered this past weekend. There’s a fundamental difference between the behavior of the SB3 and a RPi/HFB combination.
This weekend I was doing some carpentry, making some repairs to the eves above the rear entryway to the house. In this project I was moving between three different music zones.
- Office: Raspberry Pi 3B+, HifiBerry Pro XLR, M-Audio BX5a D2s, Berhinger powered subwoofers.
- Garage: Raspberry Pi 3B+, HifiBerry Pro XLR, Alesis M1 Active 520 powered monitors.
- Back Yard: SqueezeBox 3, power amplifier, Definitive Technology AW6500 outdoor speakers.
One of the great things about the Logitech Media Server/SqueezeBox combination is the ability to play selected devices in sync. I’m accustomed to loading a playlist and having it play in various zones, with independent control of volume in each zone.
This past weekend was the first time that I’d done this across these three zones since installing the RPi/HFB units in place of failed SB3s. I was irked to find that the under eve speakers in the back yard were slightly out-of-time with the RPi-based zones. One has more internal latency than the other.
This was most apparent with things like drums, where the impact of the kick or snare drum, slightly delayed from one direction gives the impression of an echo. It was mildly annoying to me, so I turned off the Back Yard zone, which was the old SB3. That was also the closest to my working site. Turning it off meant that the high-frequency detail at the work site was diminished. Bummer.
<Digression>These sorts of delays are commonplace in professional sound reinforcement. At a very large event, like a concert in a stadium, there may be a secondary set of speakers positioned half-way back in the venue. These ensure that the people furthest from the stage have adequate coverage. It’s imperative that the sound feeding that rear stack is delayed such that sound from the stage stack arrives in-sync with sound from the rear stack. A time-coherent audio presentation ensures that there’s no annoying echo to muddle the sound the distant audience hears.</Digression>
The speakers in each of three zones are at different positions relative to where I was working. Thus its not reasonable to expect the playback to be in-time at that one listening position. That would require that each zone be tweaked, adding a delay to compensate for it’s physical distance. The nearer/faster of the two zones would need to be delayed, to be in time with the furthest/slowest.
I hunted around a little to see if PiCorePlayer offered some kind of user-adjustable delay. I could not find such a setting. To make such tweaks would be folly in any case, as it would only be optimal for one listening position.
A few days later I swapped out the old Squeezebox 3 for another RPI + HifiBerry. Now that all the zones accessible to the back yard use that same hardware, differential delays are not a problem.
While I intend to tinker with it at some length, given its dramatically better disk I/O, it may well become our new music server. It would replace an old HP desktop (AMD Athlon 6400+, 8 GB RAM, 512 Gb SSD, drawing 250 watts) that was recycled into that role some years ago. That would require a case capable of holding a local disk.
My one wish is that I could use both a HiFi-Berry DAC and the POE Hat, allowing me to power the Raspberry Pi from the network. That would be such an elegant solution. It’s possible to use the POE hat with other hats, but it requires a totally custom case. So, for now I use a POE splitter, which is cheaper, but less elegant.
P.S. – Adjustable Delay
After writing all this up, I posed the question of adjustable delay to the appropriate group in the Squeezebox User forum. It turns out that I was looking in the wrong pace. Logitech Media Server, not the player, has delay parameters for each player.
Conceptually, I could adjust each player so that they are in-time at a designated listening position. That would not impact listening in any single zone, but make moving between zones less jarring. This is definitely something to try. I may need to get my trusty old instrumentation microphone out, and find a software oscilloscope to measure the timing.