Can I (we) temporarily synchronize outputs of multiple DAC units (each of them has own independent ASIO driver) in 10 micro second (0.01 msec) precision in DSP-based multichannel audio setup?
Edit:
After reading this post, you would also please visit my Part-2 post here #804;
Can I (we) temporarily synchronize outputs of multiple DAC units (each of them has own independent ASIO driver) in 10 msec (0.01 msec) precision in DSP-based multichannel audio setup? Part-2: Simplified experiments without using audio mixer
Important top message:
This post is not intending to suggest/recommend you to apply or utilize the same setup and procedures in your DSP-based audio system, but I just would like to share my curiosity and experiments relating to the above titled subject for your possible reference and interest.
Hello ASR friends,
Introduction
It is well known that we should not use multiple DAC units (through ASIO routing) simultaneously in our audio setup since we essentially have no way to fully synchronize them; each of the dedicated ASIO driver has its own "settings" such as "Safety Mode", "ASIO Buffer Size", "Latency (ms)",
etc., and hence they never can be configured into completely the same. Furthermore, we usually know nothing about the physical buffer(s) inside the DAC units, and we cannot control Windows' (or MAC's) ASIO packet sending priorities and/or timings.
Nevertheless, I have very temporarily used a second DAC unit in my audio setups, for example in the case of my posts
#264, just for my sub-woofer channels in that "tentative" configuration; I had
no "audible out-of-sync issue" at that time, even though I fully understood the two DAC units were not fully "in-sync" with each other.
During the past five years, I have been much curious about what and how-much would be the possible "out-of-sync" characteristics/nature between the multiple DAC units if I use them simultaneously in my
DSP-based multichannel multi-SP-driver multi-amplifier fully active audio setup, and also I have been wondering that if I could have any "acceptably compromising method(s)" to temporarily synchronize the outputs of multiple DAC units in my audio rig.
In order to clarify and resolve my above personal curiosity, therefore, this time I carefully designed my experiments as follows.
Preparation of a test audio track with sharp-peak timing markers, and other experimental setup and conditions
First of all, using Adobe Audition 3.0.1, I prepared one stereo music track (44.1 kHz, 16 bit) consists of two portions of full orchestral music (I use the first track, 9 min 59 sec
"Overture", of my favorite
Schubert "Rosamunde" orchestra album which I shared
here #588), and then I inserted sharp-peak 10 kHz timing markers (width 1 msec) at the beginning, in the middle, and in the end of the track; the total length of this test track is 21 min 35 sec.
Hereinafter uSec is "micro second", 0.001 msec.
As shown in above
Fig.01, the time resolution of this test track is 22.7 uSec (0.0227 msec) on the readable X-axis (time scale) which is corresponding to the 44.1 kHz test track of 22.7 uSec time resolution. Furthermore, we can easily identify/read the exact time point of the timing markers in 1 uSec precision by using vertical-line timing cursor on fully enlarged/expanded X-axis (time scale).
In the following present experiments, I used four (4) DAC units each of them have its own dedicated ASIO driver as shown in this
Fig.02;
Again, let me emphasize that each of the dedicated ASIO driver has its own "settings" such as "Safety Mode", "ASIO Buffer Size", "Latency (ms)",
etc., and hence they can be never configured into completely the same. Furthermore, we usually know nothing about the physical buffer(s) inside the DAC units, and we cannot control Windows' (or MAC's) ASIO packet sending priorities and/or timings.
I intentionally connected these USB 2.0 compatible DAC units to USB 3.0 ports of my PC for much better stability especially in so-many-multichannel DSP operations; no other USB device was connected to USB 3.0 port. On the other hand, I connected my keyboard and mouse to the USB 2.0 ports.
Just for your possible reference, I usually use latest version of "USB Device Tree Viewer, UsbTreeView (x64)" (now v.3.8.8.0) to see and confirm my USB tree-path/routing/status, as well as maximum USB speed of the port and device, in my PCs.
In present experiments, I used my default and favorite digital music player JRiver MC v.31.0.52 (64-bit) together with ASIO4ALL v.2.14 as virtual Audio Device, as shown in this
Fig.03;
Please note that, as shown in above
Fig.03, I usually convert all the music tracks into 96 kHz PCM on-the-fly to be fed into DSP "EKIO" through
ASIO4ALL + VB Audio ASIO routing; this remained unchanged throughout present experiments (ref. here
#532 for "my" rationales for conversion into 88.2 kHz or 96 kHz PCM).
The details of ASIO4ALL configurations for JRiver MC and DSP software "EKIO" are shown in this
Fig.04;
Please understand that, with properly configured ASIO4ALL, EKIO can select any of the available USB-ASIO DAC units as output destination from each of the output channel, as shown in
Fig.05 below;
And, EKIO can have unlimited numbers of output channels as far as your PC is capable of handling all of them finely. (Later-on in this post, I will share the simultaneous 24-channel case in Day-3 Experiment.)
Although I have already shared the details of my two (2) audio dedicated Windows 11 Pro (64 bit) PCs (ref. here
#225 and
#774), I believe it would be worthwhile sharing here again for your reference.
Day-1 Experiment: Non-XO-ed through stereo 2-channel to be fed into four (4) DAC units, (total 8-channel simultaneous output)
To start my present experiments, I prepared very simple stereo "through path" EKIO configuration which has no XO nor group delay setting. I copy-paste such L&R "through" stereo channels three times to configure 4-set of stereo pairs,
i.e. total 8-channel, as shown in the below
Fig. 07.
Here I tentatively used OKTO DAC8PRO as 2-channel stereo DAC in this experimental setup by using its CH7(L) and CH8(R) as shown in the above.
All of the four (4) analog stereo outputs were fed into
EDIROL M-10E Active Analog Mixer where I intentionally "mixed" all of the output signals into one analog out, and such mixed sound was then fed into
TASCAM US-1x2HR Audio Interface for digital recording (192 kHz 24 bit) by Adobe Audition 3.0.1 on my second PC.
For simplicity of my writing, please let me abbreviate as follows in this entire post;
OKTO as OKTO RESEARCH DAC8PRO,
KORG as KORG DS-DAC-10,
OPPO as OPPO SONICA DAC,
ONKYO as ONKYO DAC-1000(S).
As for the recording of the test track, I always did the following step-by-step procedures;
1. Start recording by Adobe Audition 3.0.1 on the second PC,
2. About 5 sec later, push/start "PLAYING" the DSP EKIO,
3. About 3 sec later after 2., start "PLAY" the test music track by JRiver MC.
The mixing in
EDIROL M-10E were always set in almost the same gain for all the input analog channels, and so adjusted that the mixed highest/loudest full orchestra
tutti sound would hit about -2 dB below the clipping level.
The recorded "such mixed sound" was then analyzed by Adobe Audition 3.0.1 as shown in the below
Fig.08;
The enlarged/expanded time scale at the timing marker portions,
i.e. beginning, middle and end parts of the track, showed the same relative "time-domain discrepancies" of the four (4) DAC sound.
By your looking at
Fig.08, I understand that you may have simple question for me; "How can you assign the four timing markers to the four DACs??"
Yes, I can/could do it quite easily by using a tentatively "staggered" mixing levels in the audio mixer
EDIROL M-10E as shown in below
Fig.09;
Let's go back to
Fig.08, and we can clearly observe;
- The
relative time-domain discrepancies did not change/drift throughout the whole track of 21 min 35 sec,
-
ONKYO was the most slow-starting DAC in this setup,
-
OKTO started 7.08 msec prior to
ONKYO,
-
KORG started 4.81 msec prior to
ONKYO,
-
OPPO started 1.81 msec prior to
ONKYO.
Then an idea came to me;
"If the above five observations would remain the same in this experimental setup, then can I compensate the relative time domain discrepancies using EKIO's accurate group delay in upstream digital domain, so that the outputs of four (4) DACs would be fully synchronized in 10 uSec precision?"
I mean that I may test giving
7.08 msec group delay in EKIO's OKTO channels,
4.81 msec delay in EKIO's KORG channels, and
1.81 msec delay in OPPO channels so that
all the output analog signals from the four (4) DAC units would be fully synchronized in 10 uSec precision.
As shown in
Fig.01, since the test music track is in 44.1 kHz with 22.7 uSec time resolution, the possible compensation in 10 uSec precision should be enough. Furthermore, EKIO's group delay (in 96 kHz operation) has 0.01 msec (=10 uSec) numerical input granularity.
Consequently, I tested the above idea as shown in the below
Fig.10, and the result was just amazing; the outputs of all the four (4) DAC units were fully synchronized in 10 uSec precision.
Of course, the durability, stability, and reproducibility of such "compromising method" would be highly important; during the 18-hour Day-1 experiment with no change at all in the PC including ASIO settings, I repeated the recording eight (8) times until going to bed, and the result of
Fig.10 has been remaining unchanged.
Day-2 Experiment: Fully XO-ed group-delayed stereo 4-way (8-channel) to be fed into two (2) DAC units, (total 16-channel simultaneous output)
The somewhat positive result given by my Day-1 experiment encouraged me to proceed into Day-2 experiment where I tested two (2) sets of
"fully XO-ed and group-delayed 8-channel" (total 16-channel) to be fed into two (2) DAC units.
I have repeatedly shared my stereo 4-way 8-channel XO configuration in EKIO as shown in this
Fig.11; (ref.
here #774 for the latest total setup of my audio rig).
In the Day-2 experiment, I exactly configured EKIO for the two (2) sets of such
"4-way 8-channel" as shown in the below
Fig.12, and each of the
"4-way 8-channel" sets were fed into
OKTO and
KORG simultaneously;
Here the two (2) DAC units were used as stereo 2-Ch DAC, and therefore;
EKIO's
CH1, CH3, CH5, CH7 to go into
OKTO's CH7,
EKIO's
CH2, CH4, CH6, CH8 to go into
OKTO's CH8,
EKIO's
CH9, CH11, CH13, CH15 to go into
KORG's L-CH,
EKIO's
CH10, CH,12, CH14, CH16 to go into
KORG's R-CH.
The analysis of the recorded "mixed" test track gave this result in
Fig.13;
Now, like in the case of Day-1 experiment, we can clearly observe;
- The
relative time-domain discrepancies did not change/drift throughout the whole track of 21 min 35 sec,
-
KORG was the slower-starting DAC in this setup,
-
OKTO started 2.27 msec prior to
KORG.
Consequently, I added +2.27 msec group delay for all the OKTO channels in EKIO so that the outputs from the two (2) DAC units would be hopefully synchronized, and the result was shown in this
Fig.14.
We can observe that the outputs from the two (2) DAC units were fully synchronized in 10 uSec precision.
Of course, I checked the durability, stability, and reproducibility of such "compromising method"; during the 18-hour Day-2 experiment with
no change at all in the PC including ASIO settings, I repeated the recording eight (8) times until going to bed, and the result of
Fig.14 has been remaining unchanged.
Day-3 Experiment: Fully XO-ed group-delayed stereo 4-way (8-channel) to be fed into three (3) DAC units, (total 24-channel simultaneous output)
The rather favorable result given by my Day-2 experiment encouraged me to proceed into Day-3 experiment where I was so brave that I dared to test three (3) sets of
"fully XO-ed and group-delayed 8-channel" (total 24-channel) to be fed into three (3) DAC units, as shown in this
Fig.15; each of the
"4-way 8-channel" sets were fed into
OKTO and
KORG and
OPPO simultaneously;
The analysis of the recorded "mixed" test track gave this result in the below
Fig.16;
Now, like in the case of Day-1 and Day-2 experiments, we can clearly observe;
- The
relative time-domain discrepancies did not change/drift throughout the whole track of 21 min 35 sec,
-
OPPO was the most slow-starting DAC in this setup,
-
OKTO started 5.27 msec prior to
OPPO,
-
KORG started 3.00 msec prior to
OPPO.
Consequently, I
added +5.27 msec group delay for all the OKTO channels and
+3.00 msec group delay for all the KORG channels in EKIO so that the outputs from the three (3) DAC units would be hopefully synchronized, and the result was shown in this
Fig17.
We can observe that the outputs from the three (3) DAC units were fully synchronized in 10 uSec precision.
Of course, I checked the durability, stability, and reproducibility of such "compromising method"; during the 18-hour Day-3 experiment with
no change at all in the PC including ASIO settings, I repeated the recording eight (8) times until going to bed, and the result of
Fig.17 has been remaining unchanged.
Discussion and conclusion
Throughout those 3-day careful experiments shared above, I know/knew that I have been unexpectedly quite "lucky" in terms of the consistency and reproducibility of the
"relative time-domain startup discrepancies" given by the four DAC units (connected to USB 3.0 ports) I have tested, as summarized in this
Fig.18;
All of us, people in the DSP-based multichannel audio league including myself, know and rely on the "fact" that the "starter pistol" of DSP software for all of the XO-ed runners (channels) to run (go) into DAC(s) is always synchronized by the
"one starter pistol shot in (sub-)micro-second precision", otherwise no DSP-based multichannel audio system could be achieved.
We should also remind and understand that once the DAC unit "starts" its DA processing, the time-domain accuracy should be in sub-micro second accuracy and stability; I mean a sound track of 21 min 35.123456 sec should be played by any of the past-present (SOTA) DAC units in exactly the same playback length of 21 min 35.123456 sec, and this is essentially true in the real world.
(Of course, I know well that the time domain resolution depends on sampling rate of the track and processing; 44.1 kHz corresponds to 22.7 uSec resolution, 88.1 kHz to 11.4 uSec, 96 kHz to 10.4 uSec, 192 kHz to 5.21 uSec, and so on.)
Consequently, the
"relative time-domain startup discrepancies" between the multiple DAC units (in downstream) should be totally responsible for each of the ASIO drivers and physical DAC units, and also possibly could be affected by the timings/priorities of OS's (Windows 11 Pro, in my case) ASIO packet sending.
And, therefore, as a
conclusion at least in my experimental settings, my fortunate findings throughout the 3-day experiments told me that;
I can compensate such "relative time-domain startup discrepancies" of multiple DAC units by using DSP software's (EKIO in my case) group delay settings in 10 uSec precision, only if the "relative startup discrepancies" would remain unchanged throughout the specific experimental (and audio listening) session, so that the "outputs" of all the DAC units can be synchronized.
Of course, I need to objectively measure and confirm the
"relative time-domain startup discrepancies" in less than 10 uSec precision before and after my experimental (and audio listening) sessions when I would dare to apply this "acceptably compromising method" for multiple DAC units.
(As you may agree, I essentially have no intention of "routinely" apply this approach in my multichannel audio rig, though.)
Now, you may understand that I carefully wrote the title of this post as
"Can I (we) temporarily synchronize outputs of multiple DAC units (each of them has own independent ASIO driver) in 10 micro second (0.01 msec) precision in DSP-based multichannel audio setup?"
I was
not intending to (was
not capable of) physically synchronize the multiple DAC units, but I tried to synchronize the
outputs from the multiple DAC units by compensating the "relative time-domain startup discrepancies" (if it would remain unchanged during the session needed) using upstream DSP's accurate and precise group delay settings.
To finish this rather long post, let me repeat the top message I wrote;
This post is not intending to suggest/recommend you to apply or utilize the same setup and procedures in your DSP-based audio system, but I just would like to share my curiosity and experiments relating to the above titled subject for your possible reference and interest.
I would highly appreciate if I could hear your thoughts and discussion(s).
Edit:
After reading this post, you would also please visit my Part-2 post here #804;
Can I (we) temporarily synchronize outputs of multiple DAC units (each of them has own independent ASIO driver) in 10 msec (0.01 msec) precision in DSP-based multichannel audio setup? Part-2: Simplified experiments without using audio mixer