DiAna, a software Distortion Analyzer

Thank you for the updates!

I tested the 1.54.12 for characterizing the notch filter, and it works well with my device.
However, I don't seem to be able to get the characterization with the LNA attached to the filter. There is no overload condition at the interface - I've been working at low levels, monitoring the level continuously at the VU-meters on the front plate. I've also exchanged the LNAs, but the results remained the same.
I haven't had much time for the tests so it is possible that I made a mistake somewhere.

Regards,
Braca
 
Notch filter charaterization

Thank you for the updates! I tested the 1.54.12 for characterizing the notch filter, and it works well with my device. However, I don't seem to be able to get the characterization with the LNA attached to the filter. There is no overload condition at the interface - I've been working at low levels, monitoring the level continuously at the VU-meters on the front plate. I've also exchanged the LNAs, but the results remained the same.
I haven't had much time for the tests so it is possible that I made a mistake somewhere.
Regards,
Braca
Hi Braca,

Overloading the LNA or ADC, will seriously degrade the characterization. In order to prevent this happen, you might lower the amplitude of the sawtooth waveform: just alter the NotchTestVol in the ini file. I've added this parameter in version 1.54.14 (already uploaded). But be aware that a too low amplitude will affect the accuracy of the measurement (because of a lower S/N ratio).

As for generation the harmonics, what about white noise instead of a sawtooth? Perhaps it's less sensitive to overload conditions. Anyway, I will try it that way.

Cheers, E.
 

Attachments

  • NotchVol.png
    NotchVol.png
    3.2 KB · Views: 408
Noise instead of sawtooth

As for generation the harmonics, what about white noise instead of a sawtooth? Perhaps it's less sensitive to overload conditions. Anyway, I will try it that way.
Well, it does work more or less. But the results are not consistent, they vary by a few percent. Most likely due to noise that disturbs the measurement with it's inherently huge bunch of irrelevant spectral components (garbage in, garbage out).

edit: As a last resort, I might use a feedback (inverse) comb filter to rid of the irrelevant and disturbing stuff.

Cheers, E.
 
Last edited:
Yes . DiAna can be phase locked on a signal from "outside". Just enable the enable the "External sync" option (provided that the frequency of this external signal equals the fundamental of the test signal, otherwise you will get rubbish of course). This way you even can analyze signals from *.wav files.

Two ADCs with separate clocks will sample the same analog signal to different digital-domain frequency. Is this a problem for the two-soundcards setup of diana?
 
Two ADCs with separate clocks will sample the same analog signal to different digital-domain frequency. Is this a problem for the two-soundcards setup of diana?
If the reference signal (which is used as substitute for the suppressed fundamental of the notched signal) is derived from another clock, yes it is a problem. However, in case of two Lynx L22 for example, one can run them synchronously by connecting the clock output of the one card to the clock input of the other card.


Cheers, E.
 
RTX6001 USB port

My experiences with the RTX6001 have been really good. [...]
I would like for Diana to link to the RTX control software to correct the scaling but its not a roadblock to getting good data.

Hi Demian,

I few weeks ago I received an RTX6001. So I (finally) was able to develop and test a new version of DiAna that supports the RTX USB port. Admittedly, It wasn't that easy, because I had never programmed an USB port before. Moreover, the documentation about the RTX is a bit terse and incomplete. However, with some hints from Mr. Brennwald (thx!) and peeking into an .exe utility from RTX itself, I was able to figure out how to do it. It's running fine. Running in Monitor mode, you can even change the settings on the front panel of the RTX on the fly.
But please, have some patience, as the current version is not yet ready for publication. This is because I've used the C compiler from Digital Mars, which produces a lot of false positive virus warnings. To circumvent these false positives (more or less), I have to port DiAna to another compiler. So that means a couple of days more work.

Per discussion in the LDO thread here is crosstalk on my L22 using the internal DAC as the source with a 1 KHz square wave. The isolation is still well over 100 dB.
By then I also hope to dig further into the issue of inter channel cross-talk.

Cheers, E.
 
I use the DiAnna like a diagnostic tool, yet.
In reality the tone of dac's measurement work, done with the Mi-Pro (Virtins), RTX-6001 and Altor JKG 384-12 Digital Generator.

Measurements like:

  • output level
  • output impedance
  • dc offset
  • impulse response
  • white noise & ultrasonic roll-off
  • frequency response
  • interchannel crosstalk
  • low frequency noise floor
  • undithered 1kHz sinewave @-90db
  • total harmonic distiortion (thd)
  • output THD vs output dBFS
  • THD+N vs Frequency
  • intermodulation products (IMD)
  • jitter spectrum
  • dac linearity
  • SNR
  • GeedLee metric Test (sound quality)
  • Pre-regulators output Impedance
 
Using DiAna with notch filters

Per discussion in the LDO thread here is crosstalk on my L22 using the internal DAC as the source with a 1 KHz square wave. The isolation is still well over 100 dB.
Hi Demian,

Under certain conditions this is a serious problem, because not only the fundamental, but also harmonics leak from one channel to the other. If one tries to lower the measurement floor by using a (passive) notch filter and at the same time feeding a plain sine to the other channel for synchronization (DiAna needs this), much chance that THD figures are way too high, that is, not much better then say -120dB.

The following setup clearly reveals this.
ADC-DAC: Lynx L22 @ +4dBu
DAC output voltage: 777mV (-20dBFS)
Frequency: 997Hz
THD bandwidth: 20kHz
Measurement time: 43s
ADC channel A tied to DAC channel A
ADC channel B shorted (to mimic the effect of a notch filter)
THD channel B: -124.1dB (see fig. 1).
Next, I've used an ADC of a second L22 for synchronization, but still using the DAC of the first L22. Now I got:
THD channel B: -130.4dB (see fig. 2).
So there is also some harmonic cross-talk from DAC to ADC!
To get rid of that, one could, of course, use a DAC of the second L22, but I've added a new feature to DiAna: Using the signal generator directly for synchronization. In other words, just bypass the DAC and ADC. Then you even don't need a second sound card at all. In hindsight, this is a rather obvious solution, but for historical reasons I never thought of that before. Anyhow, using the "bypass" I got:
THD channel B: -140.1dB (see fig. 3) and by increasing the measurement time to 427s, it dropped to:
THD channel B: -150.3dB (see fig. 4).
The lower THD levels at longer measuring times indicate that these harmonics originate from noise and not from cross-talk.
(I found similar results using the DAC of the second sound card)

I also repeated these experiments with an RTX6001. Using a DAC and ADC for synchronization: THD = 119.4dB. Using the "bypass" and at measuring times of 43, 427 and 4268 seconds, THD was -143.3, -151.0 and -161.4dB respectively.

Conclusion: Without this bypass technique or using a second sound card, it's fruitless to lower the THD measurement floor by means of a passive notch filter, unless, of course, using a notch filter followed by an additional (ultra low distortion) gain stage. In that case the additional gain will lower the harmonic cross-talk/signal ratio accordingly.

Cheers, E.

PS: For ultra low distortion measurements, one also needs a clean signal source, of course. If the DAC (of the sound card) isn't clean enough, one could use a band-pass filter to remove (most of) the harmonics.
 

Attachments

  • crosstalk-1.png
    crosstalk-1.png
    17.8 KB · Views: 405
  • crosstalk-2.png
    crosstalk-2.png
    18.1 KB · Views: 411
  • crosstalk-3.png
    crosstalk-3.png
    17.9 KB · Views: 399
  • crosstalk-4.png
    crosstalk-4.png
    18.1 KB · Views: 365
Finding channel of a second sound card

Finding the channels of a second sound card is not always straightforward. Regarding a Lynx L22, for example, it appeared to be number 17 and 18, To figure that out I've added a new statistics page (#6) which shows all channels of a specific sound card. These data are loaded when opening the Preferences-Sound card menu and selecting an ASIO driver, see picture below.

Cheers, E.
 

Attachments

  • Second L22.png
    Second L22.png
    26.7 KB · Views: 365
Version 1.58.5

A new version of DiAna (1.58.5) is available. Since August last year a lot has been changed, but let's confine to the most important changes.

Fist, in order to avoid dropouts, I've implemented two additional ring buffers right between the ASIO interface and DiAna. In this way the busy time of the ASIO callback function is reduced to the absolute minimum (only 1us for 256 samples). So all further data processing (like format conversion etc.) has been done "offline" as far as the ASIO driver is concerned. Is it visible? Sure, as I've put two (thin) bars on the screen who show to what extent these buffers are filled.
Nevertheless, I still get dropouts when visiting at the same time certain websites on internet. Also from time to time I got a few dropouts when two Lynx sound cards are installed and running under Windows 10 (no issues under Windows 7). I've tried everything within my power to avoid these dropouts. So if they still occur don't blame me, rather the OS or the driver.

Second, an interface to an USB port. This enables the readout of the rotary switches on the RTX6001 front panel. On the following conditions the calibration factors (of the ADC's and DAC's) are automatically updated:
1. During startup of an analysis.
2. When running the Monitor (oscilloscope) .
3. When the Preference -> Sound Card menu is opened.
If, for some reason, you want to use other calibration factors, you can disable this feature by removing the Autocalibration check-mark in the Sound card menu.

As mentioned in post #816, the ADC and DAC of one of channel can be "bypassed". Go to Preferences->Distortion, set Ref channel to Internal and select the (test) channel which will synchronized by the signal generator.
Except Absolute and Relative to which the THD level can be referred, now you also can select Reference in which case the Output level as shown in the menu will be used for that purpose (see pictures).

Cheers, E.
 

Attachments

  • Internal.png
    Internal.png
    12.2 KB · Views: 128
  • reference.png
    reference.png
    2.1 KB · Views: 117
Last edited: