Low-distortion Audio-range Oscillator

Trick #1 lower the level. I find -15 dBFS to -20 dBFS gets the best results.
Trick #2 get as much hum out of the card as you can. The balanced to differential helps a lot. The hum and noises dominate the distortion readings
Trick #3 waste a lot of time f'ing around with it. Even the host PC makes a difference if the supplies are poor or the noise level is really high. The three cards you tried I have not. The Asus Xonar DX is the first Asus and that only because of the low profile.

The pro cards tend to be better executed for whatever reason. Probably because they will get flack from users faster.

You are right, I tried another pass with -20dB output (-17dBFS) and H3 went down significantly, see attached. The grand total THD went down to -120dB.

Very, very difficult to keep such a sound card based measurement setup within the optimum limits and reach the ultimate performance. I doubt it could be kept stable for THD measurements much under -120dB.
 

Attachments

  • Asus Xonar U7 notched -20dB out.jpg
    Asus Xonar U7 notched -20dB out.jpg
    142.8 KB · Views: 278
Member
Joined 2004
Paid Member
You definitely won't get there easily. Once you have it all down it should be repeatable. -120 dB THD is probably as good as you can expect. -100 dB THD+N seems even harder. I think the software is getting some of the source's skirt as well as other noise. The AK5394a is better by as much as 10 dB in ideal circumstances. it costs almost 20 dB more to the mfr. as well.

There seems to be an idea that ADC's and DAC's get better with higher levels but they all hit a sweet spot. However the same is true for analog analyzers. In those its a given up front and they "AGC" the input to a narrow range around the optimum, usually +/- 3 dB or so. I was working with a designer of one on raising the level to get better SNR/dynamic range for distortion but while the SNR was better the distortion got worse.

I suggested to Jan that his Autoranger should have a settable output target to match the ADC of the sound card.
 
Member
Joined 2004
Paid Member
FWIW here is the Xonar DX loopback at -15 dBFS Win 10 ASIO. The performance is limited by the other noises. The distortion products are at around -128 dB. The other junk dominates the floor. However turn up the drive to -10 and the harmonics increase more than 5 dB. I don't know if its source or ADC. Not really inclined to do more research on this.
 

Attachments

  • Xonar DX.PNG
    Xonar DX.PNG
    27.4 KB · Views: 234
Scott if you had something that dumped raw PCM to a file could you work with that?

I do that all the time, just looking to do the data acquisition inside the program. I hope I was clear on that, I was just looking for a turnkey solution for a package like Octave, Matlab, Python where the data in and data out is all contained in the program. I think there are some cheap solutions but every device/application pair has to be tested. Getting closer BTW.

I am being fussy, for most speaker/room/crossover studies or filter transfer functions 16 bits and 22.05Hz are probably OK.
 
Last edited:
I do that all the time, just looking to do the data acquisition inside the program. I hope I was clear on that, I was just looking for a turnkey solution for a package like Octave, Matlab, Python where the data in and data out is all contained in the program. I think there are some cheap solutions but every device/application pair has to be tested. Getting closer BTW.

I am being fussy, for most speaker/room/crossover studies or filter transfer functions 16 bits and 22.05Hz are probably OK.

Okay. Well good luck with that.
 
I'm hoping all the dead ends will be weeded out and I can soon easily setup and use Python and my Juli@ card in my Win 7 desktop to try some interactive audio measurement - finding, tracking TT notch f, iterative learning algorithm DAC output distortion cancellation...

last time I played with the Juli@ was when I still had a working XP PC
 
Last edited:
I do that all the time, just looking to do the data acquisition inside the program. I hope I was clear on that, I was just looking for a turnkey solution for a package like Octave, Matlab, Python where the data in and data out is all contained in the program. I think there are some cheap solutions but every device/application pair has to be tested. Getting closer BTW.

I am being fussy, for most speaker/room/crossover studies or filter transfer functions 16 bits and 22.05Hz are probably OK.

Interest confirmed. Actually I'd prefer an python-only solution. Octave would be my second choice.
 
Administrator
Joined 2004
Paid Member
Hi Jan,
Currently they are set to 1V and 1.5V. I think after this discussion I should change it to say 500mV and 1V? Any better suggestions?
Why not set it to either dBu or dBm outputs? -10 dBx of either for zero would seem to make sense. I know the actual levels aren't that different, but you would be catering to whichever system the user is most comfortable with. I wonder, is there any use to select between the actual zero for each standard (1 V or 0.775 V), and also whether you want to use -10 dB of whatever system the user wants to use? Consumer "0" is about 316 mV. Too many choices?

Of course, you might just take executive action and decide for everyone.

-Chris
 
Member
Joined 2004
Paid Member
Hi Jan,

Why not set it to either dBu or dBm outputs? -10 dBx of either for zero would seem to make sense. I know the actual levels aren't that different, but you would be catering to whichever system the user is most comfortable with. I wonder, is there any use to select between the actual zero for each standard (1 V or 0.775 V), and also whether you want to use -10 dB of whatever system the user wants to use? Consumer "0" is about 316 mV. Too many choices?

Of course, you might just take executive action and decide for everyone.

-Chris

We should take this up in the right thread- http://www.diyaudio.com/forums/equipment-tools/299635-autoranger-soundcards-10.html#post5016640

I'll post more there.
 
Looks like while it has some support for ASIO, it doesn't say anything about support for Windows Exclusive Mode.

Yes I did see this, Labview requirement will turn off most folks. I'm still doing some tests but I can repeatably get 24/96 with an ordinary setup and some software. Exclusive mode does not seem to have anything to do with it.

I have had some experience with the packed 24 bit format that some (all?) cards send and I can easily see why some packages have problems. With cross platform support especially, the 3 byte variable needs some "fiddly" attention. On non-Intel processors the bytes are sometimes swapped on 16 bit boundaries so the data is shuffled like a deck of cards (sort of). For what ever reason GNU Octave, when asking for 24 bits, gives data that looks like it is using the wrong arrangement of bytes (asking for 32 bits returns empty data). I need to try the PyAudio package, basically the waveio thing for Python.

One thing that should be obvious, if your using a soundcard for measurements turn OFF all the DSP "enhancements" like reverb, etc. they are often on by default.
 
Last edited: