• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Best spec ADC Chip currently.... ??

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
The ASIO driver uses a single callback at soundcard period boundary for passing samples in both directions - see method bufferSwitch at https://github.com/mhroth/jasiohost#example . If the two soundcards are clocked independently, the single call will eventually get out of sync with the slave soundcard, causing sample drops in the slave direction.
 
  • Like
Reactions: Tks

Grooved

Addicted to Fun and Learning
Joined
Feb 26, 2021
Messages
679
Likes
441
Hey, guys, I found the way to use 2 ASIO devices with REW, check this out ;)
Thanks! And great measures!
Just tried and it's actually working with only one instance of REW, and the two ASIO devices
Now, I checked something : if I disable the WDM driver of one device (you can do it in Windows device manager, ant it doesn't disable the ASIO driver of the same device), the device does not appear anymore in ASIO4ALL, so ASIO4ALL act itself as a ASIO driver that you can select in a software, but it's not using ASIO driver of all audio device, if any at all. Once I unabled the WDM driver again, the device was back in ASIO4ALL

Did you try it ? (disabling the WDM driver to see if ASIO4ALL still see your devices once relaunched)

If it uses WDM drivers, you can still be limited at 16bit on some devices, which is not the case with ASIO, but at least you can use both devices at the same time

The ASIO driver uses a single callback at soundcard period boundary for passing samples in both directions - see method bufferSwitch at https://github.com/mhroth/jasiohost#example . If the two soundcards are clocked independently, the single call will eventually get out of sync with the slave soundcard, causing sample drops in the slave direction.

Need to check it more, or wait for what @IVX got, but it would appear that ASIO4ALL doesn't communicate with the devices with ASIO, it uses WDM only. The only ASIO link would be between ASIO4ALL and the software.
Yet, each device certainly keep is own clock, and I will try to test it without sync, and with (I can via SPDIF, ADAT and Wordclock)
 
Last edited:

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
The ASIO links asio4all and REW. Therefore REW receives/sends equal number of samples every ASIO period (every call of the bufferSwitch callback). That is not compatible with two independently clocked devices. Fortunately it usually takes a substantial time for the typically small clock difference to result in the buffers under/overflow, especially for longer buffers.

A real world example: When testing duplex operation of the USB analyzer RTX6001 on linux I was getting glitches every 10 seconds. A quick analysis revealed that the linux driver did not respect the implicit feedback requested by the device. As a result the capture stream was clocked by the analyzer clock and the playback stream was clocked by the USB host controller clock. The clock difference in samplerate terms was 6Hz, quite a lot. Testing the same on a different host PC (i.e. a USB controller with different clock) produced glitches every 50 secs, the samplerate clock difference of 1.2Hz.

The issue was easily fixed by telling the linux driver to respect the implicit feedback and align the playback rate (number of samples in each USB packet outgoing from the USB host) with the incoming capture rate https://github.com/torvalds/linux/c...fe6877772c2b98e0f89d69aeb8158b31579684ed1df12 . But this option of synchronizing the clock would be available only for devices with clock output/input in this scenario. On the other hand the ASIO buffer in the driver is likely much larger than the short buffer in XMOS chip of the USB analyzer.
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
The pops corrupt whole averaging or stepped-sine sessions, unacceptable for precise measurements.

REW is written in java which has no wasapi connector in its javasound layer nor a simple third-party library like jasiohost exists. Since I need REW for my project I have a simple wasapi-exclusive connector built with wasapi and jni rust crates on my todo list that John, the author of REW, could use like he already does jasiohost.
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
The REW project started almost 20 years ago (version 3 in 2005). Using java for a large project was the best option back than. Java gave REW "free" multiplatform support which I consider REW's major competitive advantage.

Recent java has made many improvements in garbage collector latency, making the language better suited for time-critical tasks (which the duplex audio analyzer is). While the current REW package is still using the outdated Java 8, I tested REW to work perfectly on java 14 in linux https://www.diyaudio.com/forums/sof...stortion-measurements-rew-32.html#post6130483 and believe John will eventually migrate to the latest java. With that the future path for further REW improvements is open and well supported.

C# with .NET is very popular on windows, but does not offer a truly multiplatform support. QuantAsylum is trying to run a core of its .net software on linux https://quantasylum.com/blogs/news/qa401-headless-linux but it's not the full package, only a command-line RPC server.

C++ is powerful but very complex, easy to make difficult-to-find errors. Many multiplatform projects use it but the developers must be well experienced in C++.

If I were to start a project like REW today, I would definitely look at Rust. The learning curve is rather steep compared to java/.net, but afterwards the language offers C++ performance with java/.net-like high-level structures and advanced simple build with lots of very good 3rd party libraries mostly with commercially-friendly open source licenses. Also multiplatform support is top (therefore I want to code the java wasapi connector in rust as it's simple to build natively on windows). It's still lacking a bit in multiplatform GUI though...
 

IVX

Major Contributor
Joined
Mar 3, 2019
Messages
1,409
Likes
2,773
Location
South of China, SHZ area, - Слава Україні
performance chart for 5 ADC samples. THD+N looks very consistent(and 3db better than AP SYS2***!), SNR/DR has one unit with 1db worse, others 128b(A) +/-.5db.
Cosmos_ADC_5samples_THD+N.PNG
Cosmos_ADC_5samples_SNR.PNG
 

Grooved

Addicted to Fun and Learning
Joined
Feb 26, 2021
Messages
679
Likes
441
yeah, Jul-Aug but still we bought not all parts that we need. I would say the September 100% but you know, the situation around the $ilicon price is so weird.
Thanks, perfectly understand your point. I will order one as soon as it gets available ;)
 

IVX

Major Contributor
Joined
Mar 3, 2019
Messages
1,409
Likes
2,773
Location
South of China, SHZ area, - Слава Україні
a couple of days ago measured Cosmos ADC with APx555 analog generator THD+N -122db@1kHz -.5dbfs. My "sine generator" aka DAC+LPF 1kHz gave THD+N -123db at the same ADC.
AP, always too noisy, I think they must die or offer a new king or 1/5 price and so on ;) What do you think?

2021-09-07_10-44-44.jpg
 

boXem

Major Contributor
Audio Company
Joined
Jun 19, 2019
Messages
2,014
Likes
4,853
Location
Europe
a couple of days ago measured Cosmos ADC with APx555 analog generator THD+N -122db@1kHz -.5dbfs. My "sine generator" aka DAC+LPF 1kHz gave THD+N -123db at the same ADC.
AP, always too noisy, I think they must die or offer a new king or 1/5 price and so on ;) What do you think?

View attachment 152331
I think that your hard work deserves more than these 2 straight lines done with paint.
 
Top Bottom