Sweep artifact when recording long T60 RIRs

jmannall

Registered
Thread Starter
Joined
Sep 30, 2026
Posts
4
Finding REW really useful. I am using it to measure room impulse responses (RIR) and came across a challenge with rooms with large T60s when using the acoustic timing references.

When the reverberation time is large, the reverberant tail of the leading timing chirp is still present when the FFT analysis block appears to start. The deconvolution skews that energy to negative time, where the circular FFT folds it back into the measured decay. I as able to reproduce this using my own circular convolution implementation. This causes a sweep like artifact and increases in level with T60. Unlike my implementation this artifact repeats over time in REW, and I was not able to work out what cuased this part of the artifact.

This means that the clean reverberation window is essentially the silent part of the analysis block after the sweep ends, which is roughly 1 s regardless of sweep length. Measured from generated sweep files: 1.2 s at 8 kHz and 1.6 s at 1 kHz for a 128k sweep, rising only to 1.6 s and 2.7 s for 256k. In practice I could not obtain a clean T60 much beyond 2 s even with a 256k sweep, and 128k already loses the 4 kHz band once T60 exceeds ~1.3 s. The image below shows the artifact for a roughly 1s reverb (preset 1) and extreme 3s+ reverb (preset 8) for a 128k and 256k sweep.

I think this artifact could be removed by:
  • Decoupling the analysis window (spacing between the start and end chirp) from the sweep length. I believe this would give roughly 3.8 s of clean decay with a 128k sweep in a 256k window, and 9.2 s in a 512k window without changing the excitation signal. This also avoids having to increase the length of the sweep for loudspeaker measurements.
Would it be possible to make this change in REW?

REW_artifact_example.png
 
The timing chirp is 5 kHz to 20 kHz, shouldn't really be having an impact. The sweep itself should be chosen to be comfortably longer than the room's reverberation time, so using a longer sweep would be the first suggestion. For anything beyond a typical domestic space I'd recommend at least 512k (assuming 48k sampling). You can change how much of the IR REW retains for analysis in the Analysis preferences, that also needs to be increased for spaces with long RT60 (the current 5.40 beta shows a warning if the truncation is too short for the space). If those don't help, attach an example mdat.
 
Hi John,
Thanks for the prompt reply!
Yes, I initially did not suspect the chirp because of the frequency content, however I found that the artifact shown in the image went away if I ran the same recording without the first timing chirp (for reference there was no end chirp).
Using the longer sweep (I tested 128k and 256k) did not help. While the longest T60s are possibly too long for both, the artifact is present in anything above 0.8s in both sweep lengths. The analysis section was set to use the full IR (no truncation)
These were recorded using v5.40 beta 131
 

Attachments

When the timing signal is used REW knows where the sweep starts relative to that and starts its analysis there, excluding earlier data. There's 1 second of silence in the stimulus after the sweep ends. It uses a double length FFT so the deconvolution is not circular. The effect is what happens when a strong interferer overlaps the sweep capture. It doesn't have any influence on the measurements or the RT60 results, since it ends up as part of the noise floor, but if the extended IR were to be applied to signals in a convolver it would certainly be an issue.

The easiest solution would be not to use the acoustic timing reference for this application :). Otherwise there would need to be a way to specify a much longer delay between the end of the timing signal and the start of the sweep, but depending on the environment and how far the timing signal's influence were to be suppressed that could be many seconds. It would be more practical to just use a wired timing reference, or measure without one if the system delays are less than a few hundred ms.
 
I am looking to use the full IR as part of a convolution so do need it clear. I am recording on a device that I cannot sync to the playback or provide a loopback signal to. I also need the timing information as some of the sources are occluded/not directly facing the source so the direct sound is not the largest peak of the IR. I play the timing through a second speaker to get the timing alignment.

I ran some more tests and it seems the the artifacts are not directly caused by the reverb tail of the chirp. I lowered the level of the timing chirp from 0dB to -40dB and got the same result for both. Additionally I mocked up a sweep recording with a clean reverb free chirp and then the sweep (edited_chirp_sweep.wav) and I still get the same sweep like artifacts (preset_8_256k_edited_chirp.wav) though at a lower level. Removing the chirps lowers the artifact again but still not completely (though low enough to be ok, not an option for my use case). Additionally when I manually deconvolved the edited_chirp_sweep.wav I did not get the artifact.

I get the same issue with the 512k sweep, though again the level of the artifact is lower. I would prefer to avoid using the 512k sweep as it doubles the recording time which over the number of recordings I have planned is not very feasible.

It seems the main issue I am facing is actually the periodic (every 0.5s) sweep like artifact, though if you are not doing circular convolution I am not sure what is causing it in the REW processing?
 

Attachments

Last edited:
Are you using Import sweep recordings? If so, please attach the stimulus WAV and an example of the capture for preset 8. Scratch that, I see you are not. It might be worth trying to see how the result differs.

When you make a measurement with 256k and preset 8 please select the Captured graph and use the right click option to save the captured as WAV and attach that file.
 
Last edited:
Never mind, I simulated it and tracked down the problem. The code that realigned the input data after detecting the timing signal was truncating a bit too aggressively. Here's a spectrogram of the fixed code for a 256k sweep with a full band reflection at about 3 seconds, 140 dB span. The fix will be in the next 5.40 beta build.

1791918905555.png
 
Back
Top