Rapid USB DAC Evaluation

DACs--the standalone kind and not the integrated-circuit kind--have been part of home systems for more than a decade now. They can pose a bit of a challenge to verify because unlike most equipment, you can't simply inject a test signal into a DAC and measure what comes out. The DAC creates its own "tone" from a digital stream, usually fed to the DAC over USB. 

The QA401 has long had the ability to "mirror" the audio generated by the analyzer and "play" that from the PC's primary audio source. The way it works is straightforward: You go into the Settings menu and selection the Mirror option. Then, whenever you enable the Generator 1, your primary Windows audio device will faithfully track the Generator 1 settings. If you set Generator 1 to be 990 Hz, your PCs primary audio device will emit a 990 Hz tone too, at the amplitude specified in dBFS. 

The release out this week (1.710) cleans up some drop-out issues with this "mirroring" code, and also adds an annunciator to the front screen to indicate the Mirror function is active. Generally, if you aren't evaluating a DAC there's no reason to have this on. And in fact, it can slow down your measurements a bit because there's some delay introduced when changes amplitudes and frequencies to allow the PC to settle since it's not nearly as agile as the QA401 tone generation engine.

The 1.710 release also adds some additional plug-ins for evaluating DAC performance.

Note that in the future, there are more changes coming to how you create and manage graphs in the QA401 application. This will make it easier to export and import signals, compare, scale, etc. 

Evaluating a Dragonfly Black

A fairly popular external DAC is a small USB dongle with a 3.5 mm jack. The Dragonfly Black uses an ESS Sabre 9010. The published specs are light: they claim a peak output of 1.2V (which was validated if they meant RMS) and that's about it. The ESS9010 should be able to hit -106 dB THD+N, but the Dragonfly falls a fair short on delivering that. But it's still a solid performer for $100.

Let's take a look at how to quickly evaluate a USB DAC using the $449 QA401.

First, you need to tell Windows to make the DAC you want to test the default. From the start menu, open your Sound settings and locate the Dragonfly Black. It should show up as "Speakers." Select it and click the button to set it as the default. This means that it will be "Device 0" in your system's list of audio devices. This is important, because when you enabled mirroring the QA401 will ONLY use device 0. 

Open the properties on the devices and select your preferred settings. It's important to enable the exclusive mode settings.

Next, start the QA401 application, ensure you have mirroring enabled and connect the output of the DAC to the input of the QA401 using whatever adapters and cables might be needed.

At this point, you can press Run and press the Gen1 button and you should see the spectrum. If you don't, check the frequency of the generator is 1 KHz and the amplitude is -50 dBV or so. 

Next, move to the dBFS Axis button. This will shift your displayed values into the dBFS. This is very important: The maximum value will be sent to the DAC when the output level is 0 dBFS. 

Set the Gen 1 to 0 dBFS and 1 KHz. Your display should look as follows:

There are a few important elements to note above. First, the spectrum looks horrible. This is to be expected as the request for 0 dBFS means you've asked the DAC to play the largest tone it possibly can, and it has overdriven itself in the process. 

Second, note the Mirror indicator is active. 

Third, notice the Output Clip warning. This will show up anytime you've asked the QA401 to generate a tone larger than or equal to 0.1 dBFS. It's not anything bad, just an FYI. And finally, notice the peak level is reported at 1.17 Vrms. That's the first claim we can verify. Dragonfly is correct this DAC can generate 1.2Vrms. If we pull back on the Gen1 level by 0.2 dB, we get the following plot:

Suddenly the horrid spectrum goes away and it looks more reasonable. Note the amplitude too: We only had to pull back 10 mVrms to clean things up. Here we can see the THD is about -72 dB.

Now let's take a look at the noise floor. We want to reference the noise floor to the maximum output. So, we first generate a 0 dBFS sine while the dBFS axis button is active. Then, we click to the dBR axis, and activate the dBR context menu (CTRL-Click on the button). There, we can click the button "Set Display Peak as 0 dB". That will shift the display to that 0 dB now corresponds to the max output from the DAC. Now we have 3 vantage points to view the output of the DAC from:

dbFS: 0 dB here means maximum DAC output. Note that the measured input means nothing here as it's referenced to the max input of the QA401. 

dBV: This lets us read the DAC output to the QA401 input in absolute volts. When a 0 dBFS tone is generated, this should read very close to 1.2V, which is the spec.

dBr: Here we can measure the analog output of the DAC relative to the maximum output we set above. Remember, you must tell the QA401 application what this level is as outlined above. There's no other way the QA401 can know this.

To measure the noise, we adjust the output from the DAC manually to get -90 dBr reading on the input of the QA401, and then we can read the Noise and Distortion from the display directly as shown below. The purpose of the small tone is only to ensure the player doesn't turn off the DAC, which can happen in some cases if a DAC receives a string of 0's. 

The noise and distortion is reported as -97.7 dB below the peak output. If your listening environment with headphones is sitting around 90 dBSPL average, with peaks up to 100 dBSPL, then this means during a nearly silent passage of music, the noise from the player will be absolutely inaudible to everyone except maybe a pre-teen in a perfect anechoic chamber.

One slight twist to the statement above: The Windows volume settings weren't evaluated in detail, other than this quick note: With the Windows volume settings set to 2 (with 100 being max), the noise floor dropped to -107 dBR and the tone dropped from -90 to about -120 dBR. In this config, shorting the inputs of the QA401 yielded a noise measurement of -116 dBr, or about 10 dB below the player at the lowest volume setting.

The New Plugins

Noise and Distortion versus Output Level

The first new plug-in will graph Noise and Distortion versus the output level expressed in dBFS. Before we run that plug-in, we're greeted with some settings options: 

What the above settings will do is as follows: Ramp the output from -110 to 0 dBFS, measuring the Noise and Distortion at each step. The frequency for all tests is 1 KHz. And the input must be normalized to 0 dBFS, which is 1.178 Vrms (without us specifying this, the plug-in has no way of knowing). Recall above when asked to generate a 0 dBFS tone, the measured level was 1.178 Vrms, which is 1.43 dBV.

The resulting plot is as follows:

This type of plot is also called a "THD+N Level" plot. Most often, you'll see THD and THD+N referred to as a ratio: The level of the signal compared to the noise and distortion. Most commonly, AKM uses the above format for their DACs and ADCs. And it does make it easy to see where things start degrading. 

In the above, the left channel (blue) looks great. The right channel (red) looks nothing like the left channel. And in this particular Dragonfly, the right channel has something audibly wrong with it: some rather broadband noises tend to pop up and move around the spectrum--it's very audible. And its very visible here too. I've chalked this up to a "bad device". 

If you are curious about the performance of the QA401 in loopback, it is posted below. Note the QA401 noise floor, when connected to the DAC, is about -115 dBFS. This is roughly nearly 20 dB of margin to the Dragonfly Black.

Impedance versus Frequency

The next plug-in new for the 1.710 release is an impedance versus frequency plugin. 

This is pretty straightforward, and the configuration screen appears as follows:

Above we can specify the amplitude for the sweep, the frequency range, and the load impedance. Two sweeps will be made. The first will be unloaded. After that that is done, you will be asked to connect the specified load and the test will repeat and then generate the following graph:

If we attempt to verify manually, the measured unloaded RMS on on the left channel is 190.3 mVrms and the 32-ohm loaded measurement on the left channel is 177.0 mVrms, which gives get 2.40 ohms. 

Now, if you keep the right channel loaded at 32 ohms and unload the left channel, you get 184.8 mVrms. And then if you load the left channel you get 176.7 mVrms, which is 1.47 ohms. In other words, impedance on the left channel depends on the load of the right channel. Strange. Keeping the right channel tied to 32 ohms yields the following plot below. What you'd expect to see here is the output impedance for the right channel would be 0 ohms (since the load remained constant for both loaded and unloaded measurements). Instead you see just under 1 ohm reported, which means the measured voltage was different even though the load was unchanged. After much checking, this strange behavior is in the Dragonfly, not the plug-in.

The Existing Plug-ins

Moving on to the the existing plug-ins, let's take a look at the frequency response and matching between the channels. Here we see there's about 0.2 dB of mismatch. Frequency response looks great (the QA401 was in 192Ksps mode for this measurement and the Dragonfly was in 48Ksps mode with the dragonfly lit up blue).

Next, we can look at a single channel's frequency response at different loadings (8/16/32 ohms). The response doesn't change, though the output level does slightly due to the output impedance discussed above:

Next we can look at linearity and distortion versus level. The distortion curve here isn't as important as the linearity measurement.The blue linearity curve expresses the measured gain (input minus the output) on the Y axis versus the output level on the X axis. Ideally, it'd be a constant gain or a flat horizontal line. And what this does convey is that the gain between output and input is relative flat between as we'd expected between -90 and 0 dBFS. You can see a slight uptick in the gain beyond -5 dB. There's not much to be concerned with the gain non-linearity below -90 dBV as this is a portable player.

Next we can graph THD versus power out into 32 ohms. The right side of this curve could have been driven a little harder in the setup. But in the end, we end up with around 1 mW of drive power into the 32 ohm load being the best-case THD.

And finally, THD+N into 32 ohms. This again highlights that the cleanest spot for listening to music into 32 ohm headphones is around the 1 to 10 mW range. This might not seem like a lot, but remember it's easy to find 32 ohm headphones with sensitivity levels well north of 100 dBSPL/mW. If you have 32 ohm headphones with 110 dBSPL/mW, then 1 mW of power is ear splitting. You'd really want to be around the 10 uW power mark (90 dBSPL) for more comfortable listening.


And that's it! We didn't have to write any code or do any calibrations to make a series of quick and very informative measurements of a popular DAC on the QA401.