What is that you ask? Well, it is the slowest computer in my house :-). It's a "vintage" HP Mini 110 from circa 2009. I decided recently to stick Linux on there just to see how well it ran... Here's the System Information:
In this context with an aged slow machine, I wondered how would the measurements of the Light Harmonic Geek Out V2 perform (see my previous review of the DAC using Windows 10)? I loaded up all the test tracks on the 16GB SanDisk Ultra USB stick plugged in to the left of the machine running at USB2 speed... Nothing fancy at all, and in fact most audiophiles would probably consider this rather poor as an audio source with no optimization in place nor consideration for stuff like noise or jitter.
Now for playback, Linux (Ubuntu distribution in this case) uses something called ALSA (Advanced Linux Sound Architecture) for its drivers and low-level hardware interface. On top of this, the resampling and mixer layer is called PulseAudio (analogous to the Windows mixer through DirectSound). If you look through the PulseAudio documentation, you see that this is a very complex piece of software. Not only is Linux stable and powerful, it's also highly customizable, this applies to PulseAudio as well. With this level of power and customization ability, it could be understandably confusing for those new to the OS. The "/etc/pulse/daemon.config" file contains a load of settings you can play with... We'll get back to this a little later... Let's start with ALSA and hardware level playback first.
Part I: Direct USB Hardware PlaybackIn Linux, you often don't have to worry about special drivers like ASIO for direct hardware access, it does already have USB Audio 2 drivers like Mac OS X (come on Microsoft... When in the world are we going to see native support!?). But you do need music player software like DeaDBeeF (strange name but works well!):
As you can see, you can change the output to ALSA and hit the Geek Out V2 hardware (set to default "TCM" digital filter) without conversion. The resulting output:
The digital filter overlay FFT (based off the "Reis Test" described here) and the 16/24-bit J-Test signals look great and are completely in keeping with results from the Geek Out V2 measurements using my Windows 10 Surface Pro 3. Maybe there are a couple more noise spikes in the 24-bit J-Test, but we're looking at noise down <110dB, this is inaudible.
And here are the RightMark comparisons - "ALSA Direct" to hardware without conversion versus "Surface 3" using Windows 10 and ASIO driver:
Numerical results almost exactly the same. The only notable consistent difference is a slightly better THD performance out of the old HP Mini netbook! Note just how small of a difference we're looking at - on the order of 0.001%; not the kind of thing to be concerned about IMO and could just as easily be inter-test variability.
The graphs, clockwise from top left: frequency spectrum, noise level, IMD+N, THD.
I trust the conclusion from all this is rather obvious... Given the same well performing asynchronous DAC, capable of high-resolution and in this situation USB bus powered, I find minimal difference in the measured result based on the analogue output. No objective results to suggest any audible difference, nor do I hear any difference compared to my previous experience with this Light Harmonic DAC. This is despite the very different computer hardware used (2009 low power Intel Atom "netbook" vs. 2014 Intel i5 Surface Pro 3), different OS (Ubuntu Linux vs. Windows 10), and of course the underlying drivers (native USB Audio 2.0 Linux driver in ALSA vs. ASIO in Windows).
Part II: PulseAudio PlaybackI mentioned above that in Linux world (at least the Ubuntu distro), there is also PulseAudio, which acts like the Windows audio mixer allowing system and application sounds to play back seamlessly. By necessity, this is not "bitperfect". There is a DSP running at a certain samplerate and bit-depth.
Unlike Windows where we can only set the bit depth and samplerate, in the PulseAudio configuration, we can also set the filter algorithm being used for upsampling... You do this by editing /etc/pulse/daemon.conf (or ~/.pulse/daemon.conf if not superuser) in Ubuntu and changing the items:
default-sample-format = float32le
default-sample-rate = 96000
resample-method = src-sinc-fastest
In the sample above, we're telling PulseAudio to use an internal 32-bit floating-point precision (there are settings from 8-bit to 32-bit, integer and float), running at 96kHz (I think max is 192kHz), and using "src-sinc-fastest" as the resampling digital filter method (variants of 'src-sinc', 'speex-int' and 'speex-float') [if you're wondering, src here stands for Secret Rabbit Code]. Because there are so many combinations, it just would not be possible to measure it all... Suffice that I will just show the results from 2 settings that worked on my machine! Remember that I'm running an old, slow, single core Atom processor here... As a result, maintaining "high resolution" 96kHz and 32-bit float for precision, the only resampling algorithms I could run stably without stutter were "src-sinc-fastest" (36% peak CPU use) as above and "speex-float-1" (30% peak CPU use). [The speex filter is based on libspeex, there is a quality setting from 0 to 9. For speed, I'm using one of the lower settings.]
Clearly the algorithms result in different impulse and digital filter composite outputs from the DAC:
Remember the the digital filter composite signals are all 24/44 in origin so what we're seeing here is with PulseAudio upsampling the playback to 96kHz with an internal 32-bit floating point data format. Correlated with a bit more impulse response ringing in the src-sinc-fastest filter, we see a steeper roll-off and significantly less aliasing. There are also fewer distortion products in the noise floor with the 19 & 20kHz signal. The price to pay as noted above is that src-sinc-fastest uses about 6% more of the CPU processing in the case of this HP Mini netbook. Notice that both upsampling algorithms seem to show some "overload" characteristics with the extremely demanding wideband white noise signal with peaks up to 0dBFS.
Okay... So we can see some imperfections here. Again, remember, this is with a very slow Intel Atom-based netbook! On a more reasonable machine, using src-sinc-best-quality or speex-float-9 should result in better looking graphs than those above.
RightMark measurements including up and down-sampling of test tones (ie. 44kHz test tone would be upsampled to 96kHz, and 192kHz test tone would be internally downsampled to 96kHz) first with speex-float-1 algorithm:
What I have here is a summary table with ALSA hardware direct (using Geek Out V2 TCM filter) vs. speex-float-1 for 16/44, 24/96, and 24/192. As you can see, even though the digital filter test above shows anomalies, RightMark results do not look bad... Remember whereas the filter composite tracings are using remarkably harsh signals like 19 & 20kHz tones of -6dB each, along with loud white noise, RightMark uses more typical signals like the intermodulation test with components at 60Hz (-5dB) and 7kHz (-17dB).
We can see the different frequency responses using the speex resampler (96kHz would not be resampled and the curve would be the same as through the hardware):
|Left: 16/44 frequency response - notice speex rolls off earlier than Nyquist 22kHz although as suggested above, aliasing suppression not as good. Right: The downsampling of a 24/192 signal to 96kHz can be seen.|
And again, we can see the difference on the frequency response due to resampling:
|Left: 16/44, steeper than speex with a bandwidth of 80% [~18kHz] as described here. Right: 24/192 test signal downsampled to 96kHz.|
Well there might be a tiny +/-1kHz sideband for the speex resampling but this is so far below the primary signal (we're talking more than 110dB below the peak!) that it's not of any concern... As I have said (and demonstrated) many times, these days, a decent asynchronous DAC is just not likely going to be affected by jitter unless something really has gone wrong!
Part III: Conclusions
I suppose if I didn't need to use Windows on my machines for work purposes and to maintain consistency across the computers I have here at home and work, I would be open to deploying Linux for duty as my HTPC/audio player. Certainly from what I see here, Linux these days has matured well over the years and as far as I can tell, sound quality is excellent even with this old/underpowered machine...
I mentioned last month that Onkyo will be honouring extended warranty for their receivers suffering loss of audio and network connection related to overheat/solder issues on the HDMI daughterboard (2009-2012 models). It took a total of 3 weeks and it's great to have my TX-NR1009 receiver back now. Seems to be good as new... Even though ideally "product recalls" like these should not happen, at least Onkyo is making it right and covered my 5-year-old unit even though I bought the receiver used.
It looks like they replaced the daughterboard with a DTS chip with a "New" sticker on it :-)
For extra protection, I stuck a little adhesive-backed heatsink on there...
For my first movie now with multichannel sound back on-line, I checked out Mad Max: Fury Road. Wow! Intense!