Saturday, 20 February 2021

REVIEW / MEASUREMENTS: HiFiBerry DSP Add-On with the DAC2 HD. A quick Roon 1.8 network/endpoint issue and remote access request.

This post is in many ways a continuation of the HiFiBerry DAC2 HD measurements presented last time with the devices sent to me by Doug Gardner for testing. For some background, this DSP Add-on is related to the BeoCreate project which was documented in this 2018 thesis in collaboration with Bang & Olufsen. The idea was to create an open-source system to allow consumers to build or update their own loudspeakers to be active devices. It looks like this DSP Add-On board leverages that software to do its magic.

As you can see in the thesis, the final BeoCreate product was a board which included 4-channel amplified outputs, digital S/PDIF input and output, DAC, and of course the programmable DSP subsystem. A Raspberry Pi could be added to provide network streaming capabilities.

For completeness, I want to mention that this DSP Add-On is also compatible with HiFiBerry's DAC2 Pro (~US$50-60) board. Notice that the DAC2 Pro is a less expensive DAC than the DAC2 HD and sports headphone out. The converter chip seems to be the TI PCM5122 (same as previous gen DAC+ Pro) based on what's listed in the specs sheet but I have not seen confirmation that is indeed the case.

Due to the low contrast and size of the markings on the chip, I literally needed to use a magnifying glass to check on the component label to confirm the DSP processor!


As you can see, the DSP chip on this v1.1/04-20 board is the Analog Devices ADAU1452WBCPZ, a 300MHz (294.9MHz) audio processor that can be programmed using the SigmaStudio software with a typical samplerate of 48kHz although it can do asynchronous resampling to 192kHz and other samplerates can be used although DSP operations per sample would be reduced.

Remember that this is a low-power DSP chip so there are limitations to the complexity of the types of programs it can run in the 8kWord program memory. Having said this, there is a lot of flexibility to be had if one has the knowledge to mess around with DSP programming because the folks at HiFiBerry have opened up the system. One could program different "DSP profiles" - here are instructions on how to do this with design/compilation in SigmaStudio and upload to the add-on board over the network connection (access the file upload at: http://your_DSP_IP/misc/dspparamreader). And here's a DSP profile example to build from.

Clearly there is a lot to learn if you want to wade into this and I'll leave that to the experts. :-)

The built-in DSP profiles can be found in the Sound --> DSP Programs menu item which looks like this currently:


As you can see, for the DSP Add-On, we have versions 11 and 13 "programs" to select from. I had a look at version 11 and at least superficially did not see anything different from version 13. Doug noted that version 11 had problems with the DAC2 HD so I'll stick with the "DSP add-on Version 13" in this article as the latest which I presume most would be using anyway.

Notice under the Listening Mode, you can quickly select one of 4 presets which can be customized. Very cool way to switch between EQ settings.

With the DSP Add-On active, there are 3 main features I want to highlight in this post - Listening Mode, Room Compensation and Parametric Equaliser. Although these are the highlights, there are some lower-level stuff you can also do in the Channels menu like change right-left balance, flip channels, change polarity, add time delay.

I. "CORE" MEASUREMENTS

Before talking about those 3 major features, let's see what happens to the audio signal when we plug in the DSP board but not activate any features.

The measurement setup I'll use today is similar to the DAC2 HD article last week including test signals on a USB stick, output fed to the RME ADI-2 Pro FS for measurements. I will make reference to those results for comparison.

The first thing I noticed when I plugged in the DSP Add-On module was that the volume had dropped markedly! So I ssh'ed into the device (default password = "hifiberry"), and I saw that the "DAC" volume had dropped down to -15dB even though just prior to this I had it at 0dB.


I raised that back to 0dB. I think someone also mentioned on a forum post that this happened to him. Have a look into this if you find that your output level is extremely soft. Notice there's a "DSPVolume" control added to the mixer with the DSP plugged in.


As you can see, the 0dBFS output voltage with the DSP board connected has been reduced from 2.04Vrms (maximum for DAC2 HD) down to 1.6Vrms - a -2dB reduction. I assume this is to provide for some overhead in the DSP processing. Remember to be aware of the potential for clipping of the digital data if one is boosting levels. Best to keep peak volume below +2dB on the DSP side otherwise you'll run into the DAC limits.

So, let's see whether the DSP has changed the impulse response:

Yes it has. Interesting. So while it's still a moderately steep filter, running audio through the DSP without any EQ active inverted the polarity. (The DAC2 HD itself maintained positive polarity.)

Now that we know the filter has changed, here's the "Digital Filter Composite" (DFC) graph:


As you can see, with the inherent -2dB reduction, we now have some headroom for the 0dBFS wideband white noise with no evidence of intersample overload. Likewise, no "needling" at the base of the 19+20kHz signal like in the DAC2 HD DFC last week.

If we look at the "program metadata" for the DSP Add-On, we see that the samplerate has been set to a fixed 96kHz internally it seems:


So let's run a RightMark 24/96 test through the DSP (again, without any EQ or audio adjustments) and let's see what the measured resolution looks like compared to the DAC2 HD itself:


It looks like with a bit of headroom and everything else, there is about a 3.5dB reduction in dynamic range (no big deal). Notice that the "Stereo crosstalk" measurement has been messed up. It looks like the DSP has affected the crosstalk test signal such that it was no longer decipherable by the software.

Notice that the "Frequency response" values are a bit strange. Let's have a look at the graphs:


Hmmm... It looks like although the DSP might be operating at 96kHz (ie. presumably feeding the DAC at a samplerate of 96kHz), the frequency response clearly shows that the effective frequency range rolls off very significantly by 22-23kHz. We can see this frequency limit as well in the IMD+N sweep.

To view this another way, using REW and continuous averaging, I played a 24/192 white noise signal to the DAC/DSP to have a look at the frequency response:


So again we see that the frequency response rolls off by 22-23kHz to create that notch with varying amount of noise thereafter. As I'm trying to play 192kHz samplerate content, notice the very steep roll-off into 48kHz suggesting that indeed the DSP is passing off "stuff" to the DAC at a 96kHz samplerate even if distortion beyond 22-23kHz.

Does the DSP then do anything to the jitter performance?


Yes, there appears to be mild changes to the jitter test - but no big deal. With the 16-bit J-Test we see a number of low-level sidebands around the 11kHz primary signal. The 24-bit test remains very clean (insignificant +/-4kHz sidebands down at -140dB).

So, knowing the above and how the DSP module has changed the basic resolution characteristics, let's take a quick peek at the functions the device allows for.

II. DSP FUNCTIONS & PERFORMANCE

A. The "Listening Mode" Feature
For those looking for a simple way to "tune" the sound, there's the "Listening Mode" setting where you can move the black circle towards various subjective descriptions:


So here's the basic formula:
      "Bright" = Lower bass + Higher treble
      "Energetic" = Higher bass + Higher treble
      "Warm" = Higher bass + Lower Treble
      "Relaxed" = Lower bass + Lower treble

Depending on where the black circle is placed, we basically have varying EQ levels of the above and you can save the setting for future use along with the presets like "Dark" and "Podcast". "Optimal" is the default, right in the center with no EQ adjustments.

I think this is a nice way to implement an EQ system by combining those subjective qualities which music-lovers can understand without getting into the technical details. For fun, let's actually plot out the frequency response changes with these presets to see what the DSP is doing:



I separated the plots so we can see them clearer. At the top in grey dotted line is the frequency response of the HiFiBerry DAC2 HD without the DSP card. Notice I'm measuring a 24/96 frequency sweep and as we saw last week, the DAC2 HD is capable of playing back up to a reasonably flat 30kHz before rolling off with a little +0.25dB bump around 20kHz.

Below the "No-DSP" tracing then are the frequency responses with the DSP Add-On attached, with one of the 4 "Listening Mode" presets selected. "Optimal" in black is simply the "flat" response without EQ manipulations. "Clear" accentuates the highs above 6kHz and de-emphasizes the bass below 150Hz. "Dark" rolls off the high frequencies from around 5kHz. And "Podcast" de-emphasizes the bass frequencies with the equivalent of a low-shelf centered around 100Hz. As you can see, no magic here as to what these presets are doing. They're just varying the amount of high-shelf and low-shelf filtering to color the sound to taste.

Consistent with the tests above in Part I, with DSP board attached, frequency response is limited to about 23kHz using the REW frequency sweep.

B. The "Room Compensation" Feature
This feature I think is very cool. It basically allows you to measure the room frequency response using USB microphone input (such as the miniDSP UMIK-1) and automatically creates correction EQ at that listening position. This is similar to the automatic room correction through AV receivers and Audyssey for example but this is 2-channels, at a single measurement position (your sweet spot), and the result is fully customizable.

Here's how it looks plugging a microphone in my room with the Raspberry Pi 3 B+ "Touch" with the HiFiBerry DAC2 HD + DSP in the room for measurements (remember that you need to have the DAC output connected to the sound system to capture the sweep):

USB microphone to the left over the "Sweet spot", the Raspberry Pi 3 B+ "Touch" with HiFiBerry DAC2 HD+DSP is the bright screen on top of my Technics SL-1200 turntable.

When you run the Room Measurement, it will play some white noise for level calibration (your system needs to be loud enough, I adjusted the volume for ~80dB SPL), then it will run 4 frequency sweeps and you'll see an average frequency response of your system afterwards like this:


That frequency response looks quite accurate as I purposely had both subs set pretty high and will need to be EQ'ed down. Click on "New Room Compensation..." and you can then tell the software what kind of DSP correction you want:


Cool, let's choose "Weighted Flat" to focus primarily on the bass, and in a few moments, the calculations are done, we see the EQ applied in the Parametric EQ section of the software under "Sound Design":


Nice and painless! You can have this saved profile easily accessible as one of your "Listening Mode" presets. Notice that the software applies EQ to both channels equally rather than separate right/left. With my example here, the software created 10 PEQ settings which I could then further edit if I wish. We will talk about the sound quality below.

Note that while the "Room Compensation" feature works pretty well, remember that it doesn't measure left and right channels independently. Also, if asked to correct beyond the bass frequencies, there's no "room curve" target setting to customize a taper of the high frequencies. If it sounds too bright, use the "Reflective Room" compensation type which should help. For illustration, using the same room measurement here at home, you can see the effect of the 4 "Compensation Types" you can choose from and the predicted in-room frequency response (in black):


Finally, be aware that the software doesn't have a way to deal with microphone calibration as far as I can tell. As such, make sure you're using an appropriate measurement mic that's relatively flat already.


C. The Parametric Equalizer Feature
The screenshot above with the room correction applied shows what parametric EQ editing looks like. Basically you can add all kinds of "Peak/Dip", "High Shelf" and "Low Shelf" as well as custom parameters. Complex parametric EQ combinations can be applied to left/right channels independently and there's a section to build crossovers when used with the BeoCreate 4-channel amp board.

I'm not sure what the limit is for the number of PEQs, but it seems a lot. Here's a peek at what playing around with the parametric EQ's look like:


With EQ settings independent for left (grey) and right (reddish) channels, I fooled around with adding a ghastly bunch of PEQs for fun. Already in the image above, I have 12 left settings, and 11 right and there's room for more... Note that the above would not be good to use because I've added some massive peaks which would clip the system without attenuating the overall levels!

As a quick check of output resolution with a few PEQs, let's create a simple 3-EQ setting and run this through the RightMark battery at 24/96 to see if there's much change in the noise level and distortion results. Here's a simple setting with a low-shelf that rolls off -5dB into 20Hz, adds a +1.5dB peak at 1kHz, and about -2dB at 9kHz:


Here's the RightMark result when we put the test signal through the DSP with above PEQ active:



Again, we see that running the RightMark test signal through the DSP messes up the crosstalk portion of the test, so let's ignore that.

The PEQ settings are working as expected looking at the frequency response. Remember that with the DSP, frequency response is already rolling off into 20kHz and I put a dip at 9kHz which accentuated the effect. As shown before, the DSP frequency response basically ends around 23kHz and the ultrasonic stuff beyond that looks messy (we do not hear it of course).

Running the PEQs increased the low frequency noise level a bit but we're still seeing -110dB noise floor at 20Hz. Notice that the numbers still indicate "high resolution" (>16-bit) performance and the IMD+N sweep still shows that low distortion was achieved through the audible frequencies.

Overall, there's some noise level change with PEQ engaged but nothing here to worry about otherwise.

III. SUBJECTIVE

It's hard to speak about subjective performance of a DAC Add-On board :-). I don't think there is a way to psychologically dissociate from potential subjective bias when I know that I'm throwing on a daughterboard that's running at a fixed samplerate and it's immediately obvious that the output volume is softer than the DAC's native level (by -2dB). Furthermore, it's not possible to quickly do an A-B switch to turn the DSP on/off.

In my E-mails with Doug who sent me the board, his listening impression was that:
"Even giving the DSP module an advantage with higher volume didn't result in a preference for the DSP module. To me the DSP module made things sound different even though I was not using any filters or other EQ settings. It's not that it sounded bad. Just different. Not as clear."

That was my impression as well with "Listening Mode" set to "Optimal" and EQs all turned off before running the bench tests above. There was a subtle hint of lost upper end detail when listening to a track like Steve Winwood's "Higher Love" (Back In The High Life, DR16, 1986). For example that dynamic snare drum intro sounded a bit more "distant". I wonder if this might be due to the earlier roll-off with the DSP from 10kHz dipping to -1.5dB by 20kHz as opposed to the native DAC2 HD which stays flat and even accentuates 20kHz by about +0.25dB.

Otherwise, I thought the playback with DSP attached sounded good when I'm not being ultra picky and obsessing about the sound on and off. Remember that the point of having the DSP board is to purposely change the sound!

I think for many users, the "Room Compensation" feature will be of interest. It's easy to set-up and my miniDSP UMIK-1 microphone was detected and measurements proceeded without fuss. The results were quite good for literally about 5 minutes of work!

With the room EQ on, I listened to good 'ol Rebecca Pidgeon's "Spanish Harlem" (The Raven) to make sure the bass line was smooth (it was). Likewise, I listened to the plucked bass on Jennifer Warnes' "Ballad of the Runaway Horse" (Famous Blue Raincoat) again showing that it was better controlled than without the correction. Then I moved on to some familiar albums like Patricia Barber's Verse, Johnny Cash's American IV and Depeche Mode's Violator. A nice enjoyable evening of listening...

Sounds good folks, and certainly in my room, the DSP did the job of taming the frequency response without fuss. I like how the software gives the option of various types of compensation like "Bass only" (EQ affecting <300Hz), or the other options allowing EQ of higher frequencies. Soundstage was appropriately wide without any hint of constraint running through the processor, low-level details still sounded good, and even if there might be audible resolution loss in an A-B comparison, the sound was "natural" and I was not distracted by any sense of artificiality. Ultimately, I did have fun listening with the DSP on and that's the most important thing when it comes to this subjective portion of the review.

IV. SUMMARY

Very cool seeing the Room Compensation EQ curve on the Raspberry Pi touchscreen. BTW, this is the calculated "Reflective Room" correction which tones down the treble a bit.

I hope the measurements and discussions above provided an opportunity for audiophiles to have a good look at the HiFiBerry DSP Add-On board, some of its current capabilities and limitations. While it might be feeding the DAC2 HD at 24/96, the frequency response is more like 48kHz sampling rate and notice that the signal polarity has inverted. Obviously, the DSP board is only beneficial if you're planning to implement some changes to your sound system such as EQ to change tonality, room compensation (mainly to attenuate peaks), and miscellaneous features like shifting center balance. At an online list price of ~US$60, this is certainly a very affordable add-on even if it's just to play with the automated "Room Compensation" feature. Might be a fun way to try DSP programming using SigmaStudio for those inclined.

While the HiFiBerryOS software was stable in that I did not experience any crashes, I mentioned last time that there are still a few rough spots that can be fixed. With DSP playback, I noticed a few times hearing strange beeps and noises as the music starts or stops while running EQ; a little annoying and unpredictable, these kinks hopefully will be worked out in future software versions.

I think it'll be very interesting to follow developments from HiFiBerry and perhaps other companies as they add hardware DSP capabilities to their audio systems. I suspect we're just at the beginning of seeing more of these features added as audiophiles shake off irrational fears of digital signal processing or need to maintain the romantic idea of "purity" to the audio signal path. At least when it comes to digital audio, it's ultimately just data which can be manipulate to one's content so long as resolution is maintained (not a problem with modern 24 / 32 / 64-bit accuracy), and one isn't damaging the sound by pushing the results to the point of clipping.

While the sound of the DSP Add-On is fine, I suspect in the days ahead, we'll see hardware at this price range with full 96+kHz processing up to 48+kHz frequency response. For me, an obvious feature I would love to have is the ability to upload a complex stereo, 32/64-bit 65k-tap room correction FIR filter created in Acourate or similar software to the Raspberry Pi. Surely that cannot be too far away ;-). While I'm currently running my room filters through Roon's convolution DSP, and this works fine, it would be nice to off-load the task to the streamer so I can apply it to all audio inputs including acting as DLNA and Logitech Media Server endpoints.

Thanks again to Doug Gardner for sending these 2 boards for me to test out and listen to, plus he was thoughtful enough to include a microSD with HiFiBerryOS all ready to run! Thanks for parting with the pair of boards for the last month or so. Much appreciated man! They'll be back home in Rockville, Maryland very shortly. :-)

--------------------

To close, I see there's a lot of hoopla being made about Roon 1.8 in the last couple weeks at the usual audiophile sites. New GUI look, different music discovery, more personalization features, improved classical music exploration, etc. I see many have already provided feedback and criticisms, some of which I believe are warranted.

For myself, let's just make it clear that I very much love Roon already and am using it as my main streaming system for the last couple years! However, the update brought with it some annoyance... It looks like there was a change in the network system with endpoint detection.

I'm not sure I've benefitted yet from the improvements made, but I sure as heck was unhappy for a couple days with RoonServer 1.8 inexplicably not detecting my workstation computer as endpoint every once awhile. The only fix I found at the time was to quit RoonServer and then restarting the program. It'll detect my workstation computer for awhile and then for whatever reason not detect the "audio zone" again. I see others have had similar issues here (and here).

Anyhow, it turned out that I needed to bypass the Private Internet Access VPN on my workstation with a split tunnel:


Generally no problems in the last week since doing this. There was one instance where I still needed to restart RoonServer which may or may not have been related to the VPN. In Roon 1.6 and 1.7, I had no such problems for months of uptime so long as the VPN "Allow LAN Traffic" was active. I wonder what they did to change behavior in such a way that a full restart of the RoonServer program was needed. 

I haven't developed an opinion yet about the new UI changes but am glad that I can use the Android Roon app in portrait mode and it seems stable. The main feature I ask of Roon at this point is to implement some kind of formal remote access to my music. I know there are potential VPN workarounds like this but it would be good to have a supported way to do this. Even if it means using lossy compression so I can listen to my library from the office in MP3 320kbps, I'll be happy with that; I have no need for lossless or hi-res when away from my home.

Since the Roon software is complex, I would suggest to the company in the future, before releasing the hype articles and pop-ups asking that the end user upgrade, implement some kind of "grace period" like maybe 3-6 months so users can "roll back" the version if they run into issues with the update. Given the maturity of the software already, not everyone needs to live on the "cutting edge" and I suspect most of us don't want to be part of the "public beta" phase either unless there's really some "must have" feature in there (not in Roon 1.8 for me at least).

As usual, I hope you're enjoying the music, audiophiles!

13 comments:

  1. Another option for "offloading" your room-correcting FIR filters from Roon to the RPi would be to use BruteFIR or CamillaDSP on the RPi.

    I wonder if that would avoid some of the anomalies you found with this hardware solution.

    ReplyDelete
    Replies
    1. Cool. Thanks distler,
      I've used BruteFIR on the PC side with LMS but didn't know it can be run on the Pi itself. I see discussions on CamillaDSP:
      https://www.bitlab.nl/page_id=634

      Might give this a try at some point - another item on the list of things to do time permitting :-).

      Will be nice to see at some point when/if these might be incorporated as standard function in some of the software!

      Delete
    2. "Will be nice to see at some point when/if these might be incorporated as standard function in some of the software!"

      Volumio has a BruteFIR plugin. The forthcoming moOde 7.1.0 will have camillaDSP built in.

      Delete
    3. Thanks for letting me know...

      Haven't been following the development of the software. Excellent that this is all coming soon/here. Looking forward to giving this a try!

      Delete
  2. Thanks for the DSP review. I'm new to this and your post gives me a starting point to play around with room eq. Really good stuff!

    ReplyDelete
    Replies
    1. Thanks for the note Unknown.

      Enjoy! There's alot that can be done and I appreciate that HiFiBerry is making it easy to play around with this on their hardware and HiFiBerryOS.

      Delete
  3. Really good stuff as always, Archimago! I have been inspired by you to use Raspberry Pi computers for music playback, but I have yet to try any add-ons/HATs or the HifiBerryOS. This seems like a nice all-in-one solution which is still pretty cheap.

    I have been reading quite a few headphone tests over at Audio Science Review lately. It seems like equalizing would make a lot of sense for headphones as it's easier to reproduce the results reliably (with speakers you have to consider the surrounding room as well).

    ReplyDelete
    Replies
    1. Hi Freddie,
      Yes, the EQ capabilities would make a ton of sense in the headphone world without the complexity of room dynamics and how EQ affects off-axis tonality.

      Of course headphones have their own challenges to achieve flat frequency response along with our own ear physiology, type of headphone, etc...

      Headphones are an area I haven't delved much into in these pages even though before I had my sound room, I had collect a number of devices and IEMs which I still have... In the days ahead, might get more serious into them again :-).

      Streaming Pi + HAT + DSP for accuracy and taste into good headphone amp --> high-fidelity headphones could be a very nice streaming platform.

      Delete
  4. In a cleansing fit last month I sold my tube amp, preamp, high end dac and cables, and replaced them all with a Pi and Hifiberry Amp2. It was surprisingly good for such a small inexpensive package. Playing Tidal as a ROON endpoint I didn’t miss the expensive gear at all. Then, out of curiosity I picked up from BuyaPi an Allo Volt+D amp and paired it with a Terra-Berry DAC2/Pi. The T-B2 can be configured with jumpers to automatically upsample to DSD512. What a fabulous combination. Detailed, taut bass, holographic imaging on the right material. If you get a chance check out either or both. The volt comes in at a little over $200, a real sleeper.

    ReplyDelete
    Replies
    1. Hi J,
      Very cool man. That's some "cleansing fit" ;-).

      Certainly I think for many people, the Pi with various HAT boards and taking the next step now into basically "all-in-one" packages that include amplifiers will be a massive boon to those who want to save space and simplify life, yet still achieving excellent sound quality!

      Glad that you're enjoying such a major shift in the sound system! I trust your speakers remain excellent since that's where we really need to focus on for quality of course...

      Delete
    2. The tube gear dictated high efficiency speakers, and after some amount of dithering I decided to hang onto them. Unity Audio Whitewater floorstanders, made by Omer Humayun up near Ottawa. Single driver full range. Delightful.

      Delete
  5. Hello, it seems like swapping L/R channels on DSP stage. Try to change R/L plug.

    ReplyDelete
  6. Not sure if any of your readers are using Ropieee in their Pi setups but I stumbled across this interesting tweak recently. I hear a positive improvement after installing. Be interested to hear if others do. It fine tunes by running a script via SSH, can also be undone running a second script. https://github.com/dynobot/Arch-Linux-Audio-RPi

    ReplyDelete