• Welcome to ASR. 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!

REW Loopback Timing via DAW/Software-Routing: Split DAC and ADC locked in time even at mismatched sample rates

TheLastGerman

Active Member
Joined
Aug 10, 2020
Messages
157
Likes
329
Location
Hamburg, Northern Germany
If this topic has already been covered, please accept my apologies. My statement below is not based on a deep understanding of REW's internal architecture and does not claim to be definitively correct, but it is derived from the empirical observations described.

To the point: If you’ve ever dug through the forums trying to set up an electrical loopback timing reference in Room EQ Wizard (REW), you’ve probably run into this golden rule: "Input and output MUST come from the exact same audio interface."

While that's safe advice, it actually rules out a ton of awesome setups. What if you want your multichannel DAC (like my Topping DM7) to handle playback, but a separate interface (like my Audient iD14 MKII) to do the measurement?


Direct Answer First & The Only Catch: You can absolutely split your playback and recording hardware. In fact, you can even run them at completely different sample rates, and your timing reference will still remain rock-solid. The only hard software requirement is that you must use a DAW, a software router, or a media center (like JRiver, Reaper, VoiceMeeter, etc.) capable of copying your active measurement channel to a spare output in real-time.

Sure, you could use REW's acoustic timing reference instead, but it has its drawbacks, which (I believe) I don’t need to go into further detail about.

The Key Insight: It's all about the ADC, not the DAC
Clock drift between your separate playback DAC and your measurement interface doesn't matter at all. Why? Because REW doesn't care about absolute time. It only computes the relative difference (the delta) between its two input channels.

As long as both of your REW inputs—the timing reference cable and the microphone—plug into the same measurement interface, they are digitized by the exact same ADC clock. If the playback DAC drifts and sends a sample 5 milliseconds late, that delay hits both inputs at the exact same time and completely cancels out mathematically.

In JRiver, I route the left or right channel as a copy to the otherwise unused center channel (3) of my Topping DM7. The latter is routed via cable into the right input of my Audient ID14 MKII as a loopback for the timing reference.

The "That just won't work" Stress Test
To push this theory to its absolute logical limit, I set up a deliberate sample rate and driver mismatch nightmare. Normally, mixing different audio driver architectures in Windows is a recipe for unstable buffer latencies and timing drift. For this test, the signal had to survive three completely different driver layers:

1. REW to JRiver (Java Audio): REW generates the sweep and sends it via the standard Windows Java driver interface to the virtual JRiver soundcard (JRiver WDM driver).
2. Inside JRiver (WDM Kernel Streaming): JRiver's virtual WDM driver captures the stream, brings it into the DSP engine for real-time resampling, and duplicates the channel.
3. JRiver to DAC (ASIO): The final resampled audio is handed over to the ASIO driver of the Topping DM7.

The Playback Chain: REW (via Java driver) → JRiver WDM Driver → JRiver DSP Engine (forcing real-time resampling and copying the signal) → Topping DM7 Multichannel DAC via ASIO.


1779554837074.png


The Recording Chain: Measurement microphone connected to the Audient iD14 mkII, accessed via REW's Java driver.

1779554827192.png


The Hard Data
I tested all four permutations of sample rate combinations between REW/ADC and the playback DAC. Here is what REW recorded under the hood:

Test Case 1: REW 48 kHz – DAC 48 kHz (The baseline)

Delay: 2.9192 ms | Clock adjustment: 140.1 ppm
Test Case 2: REW 48 kHz – DAC 44.1 kHz (Resampling active!)

Delay: 2.9191 ms | Clock adjustment: 139.5 ppm
Test Case 3: REW 44.1 kHz – DAC 44.1 kHz (Native 44.1k)
Delay: 2.9193 ms | Clock adjustment: 139.4 ppm
Test Case 4: REW 44.1 kHz – DAC 48 kHz (More resampling!)

Delay: 2.9192 ms | Clock adjustment: 140.1 ppm

Maximum Observed Deviation: 0.0002 ms (0.2 microseconds) / 0.7 ppm

Think about that: Despite forcing real-time software sample rate conversions (SRC), shifting driver buffers, and completely independent hardware clocks, the timing did not budge. A variation of 0.2 microseconds is mathematically invisible for acoustical analysis.

To visualize this, take a look at the attached screenshot below. It shows the Impulse Response Overlay of all four test cases zoomed in to the microsecond level. They line up perfectly:


1779554807595.png


Why this works (The Quick Math)
Some might argue: "But the clocks still drift while the sound travels through the air!"
Let's do the math for a standard 3-meter (10 ft) listening distance:
1. The sound takes about 8.8 ms to travel through the air. This is the only window where the clocks are decoupled.
2. Even with a terrible clock drift of 50 ppm, the drift accumulated during that tiny 8.8 ms window is just 0.00044 ms.
3. At 48 kHz, a single sample is 0.0208 ms. Our worst-case error is roughly 0.02 samples.

Long story short: The sweep is simply too short for clock drift to matter.

If you want to replicate this (ideally keeping everything at a matching 48 kHz for sanity's sake), just remember these two things:

  • Keep your Software Routing Stable: If you copy channels or resample, use a rock-solid engine like JRiver's WDM driver or a proper DAW matrix. Avoid standard Windows MME/DirectSound mappers, as they introduce random buffer latencies between sweeps.
  • Check the Phase: Make sure your routing software doesn't accidentally invert the phase of your copied loopback channel.
If you have the software routing capabilities, feel free to replicate the test and let me know if it works just as flawlessly in your system. I’m curious to see what the REW experts and veterans here think about this approach!

Thanks for reading!

Find the .mdat files here
.
 
Last edited:
Tiny font size is unreadable for old eyes, best to leave at default.

Windows is a nightmare IMO.

I bought an as-new E-MU 0404 for well under $60 delivered, that plus a three-way calibrated XLR measurement mic

enables the PERFECT time domain accuracy of hardware loopback without any futzing about or software / platform restrictions

and cost me way less than the inferior UMIK-2.

I do not dispute that your approach may give "nearly as good" accuracy, it just isn't the ideal, and the ideal being achievable at such low cost...
 
Thanks for your input, but you are completely missing the actual use case here. My main playback system uses a multichannel active DSP crossover setup with all the bells and whistles (individual routing, crossovers, per-channel EQ, and time-alignment).
To measure and optimize this system, the REW sweep must pass through my primary playback DAC (the Topping DM7) and it's active DSP routing chain. A simple stereo interface like your E-MU 0404 cannot handle a multichannel DSP playback system.

As you can see from my description, I am already using a proper XLR measurement mic and an input interface (Audient iD14 mkII) for the recording side. This method is specifically for separate multichannel playback and recording hardware.

I would be curious to hear your solution: How else would you measure a dedicated multichannel DSP crossover playback system like this, without owning a pro-audio multichannel interface that features both 8 output channels and at least two inputs?

Also, regarding accuracy: A maximum deviation of 0.2 microseconds across reboots and sample rate mismatches isn't 'nearly as good' - it is mathematically identical to a single-interface hardware loopback because it utilizes the exact same shared ADC clock domain.
 
Last edited:
OK thanks for the clarifications and helping me learn.

As a side note if I may

Is it not the case that the response measurements process can be performed on a completely different system from the one creating the filters

which in turn can be done on a separate system from the one actually doing the filtering?

And the sources, music rendering / player control nodes can also be separate from all the above devices?

So for example, if none of my 32 channels of ADC/DAC I/O attached to my headless convolution processor node include any mic preamps

the REW measurements side can still be done on a completely different laptop using the smaller / cheaper interface + XLR mic

?
 
That's a good point, and you are right! You could run a cable from a spare output of your 32-channel-gizmo (what is it?) into the second input of your 0404 on the laptop. You would be splitting the hardware domains – using the 32-channel system as your playback DAC and the 0404 as your measurement ADC.
As my data proves, this will work with rock-solid accuracy because both inputs on your 0404 share the exact same physical ADC clock domain. Whatever your headless processor is, the logic never changes.

The only remaining hurdle in that scenario is getting the REW sweep from the measurement laptop into your 32-channel playback engine in real-time. To do that without introducing massive, fluctuating software buffer jitters, you would use a reliable software routing matrix or network audio protocol (like Dante Virtual Soundcard, JACK, or JRiver's network features) to bridge the laptop to the server.

So in the end, whether you do it inside a single PC (like my Topping/Audient setup) or split it across a multi-channel server and a separate laptop, the rule remains identical: Use software routing to mirror the signal, split the DAC and ADC hardware as much as you like, and let the shared ADC clock domain on the recording side do the heavy lifting to keep your timing stable.
 
Again, thanks for helping me understand.

For terminology afaic there has so far been no "server" mentioned in this hypothetical system, but there is in fact a NAS+LMS out in the garage. Sources are routed from / through a Wiim Ultra including a squeezelite node.

The Linux computer(s) with 32 I/O interfacii attached are specifically dedicated to signal / channel routing, processing DSP filters.

I have used Wiim Ultra as Squeezelite render node, now looking at RPi5 but that is limited to only 8x I/O channels.

Question, while I have you (or anyone can answer, and apologies for the diversion)

I can use LMS to sync to multiple RPi much more accurately than Wiim grouping, but I want to keep the Ultra as my stereo hub / switching preamp.

Any ideas on doing equally accurate "network sync'ing" while multitasking from one master RPi to multiple slave convolvers?

I'm not in fact certain clock drift will be a real problem, but I've been told it might be.

tag: Modularised DSP ™
 
Last edited:
Please keep in mind that things can sometimes go wrong or get lost in translation (English is my second language). Unfortunately, I have absolutely no idea about any of this. My setup is basically as simple as possible - I stream using Tidal and have a few thousand tracks on a NAS.
 
OK, maybe the topic will attract some clues, pointers or other opinions.

Meantime afaict you did a fine job laying out proper test results, gives an alternative approach.

I assume a UMIK-2 has no place in your workaround?

All USB mics need to stick to acoustic timing reference, no way to do electrical loopback?
 
New thread on using LMS with squeezelite protocol for near-perfect network clock sync'ing

This would require that Wiim Ultra feed into the LMS PC upstream, not act as a squeezelite player / renderer itself.

 
Back
Top Bottom