Robustness

Does a watermark survive speed and pitch changes?

A small linear speed change stretches the audio and shifts the watermark's carrier. If native detection fails, Aureal re-runs it at six factors between 0.99× and 1.01× (about ±1.0%). The documented fixtures cover that range; larger tempo changes, varispeed edits and analog wow and flutter need their own test.

Technical basis: Drift rake sweep at 0.998/1.002, 0.995/1.005 and 0.99/1.01 Reviewed: 2026-11-02

How Aureal handles it

A speed change is a resampling operation: the duration, the pitch and every carrier frequency move by the same factor. The detector therefore compensates by resampling again and scoring the result, rather than trying to stretch the correlation window. The sweep runs only after the native-rate attempt and the 44.1/48 kHz retry both fail, and it stops at the first factor that decodes; when it succeeds, the result reports the factor it used. The grid is coarse by design. A 2% change is outside it, and repeated small edits can accumulate past the range even if each step looks harmless.

Common failure mode

“A 4% speed-up is safe because the detector compensates for speed changes.”

Why it fails: The documented sweep covers about ±1.0% in fixed steps (0.99× to 1.01×). A 4% change moves the carriers well beyond that grid, so the detector has no tested hypothesis for it. Analog wow and flutter is also continuously varying, not a single fixed factor.

Verified example

Create a 1% speed-and-pitch change and test it; then test a change outside the sweep to see the boundary:
ffmpeg -i marked.wav -filter:a "asetrate=44100*1.01,aresample=44100" speed-101.wav
node aureal-watermark.cjs detect speed-101.wav --id 883921
ffmpeg -i marked.wav -filter:a "asetrate=44100*1.04,aresample=44100" speed-104.wav
node aureal-watermark.cjs detect speed-104.wav --id 883921
A pass at 1% does not imply a pass at 4%.

Example only. Validate against your own audio, codec and processing chain.

Scope and limits

  • Documented drift coverage is about ±1.0% in fixed steps.
  • No general guarantee for analog wow and flutter.
  • Repeated edits can accumulate beyond the tested range.
  • The sweep is a local fixture result, not a per-file guarantee.

Frequently asked questions

Does a DJ's 3% pitch shift work?

It is outside the documented ±1.0% sweep. It may still decode with enough signal and frames, but it is not covered; test the exact edit before relying on it.

Can I see which drift factor was applied?

Yes. When the drift sweep succeeds, the detection result includes the factor it used. That is useful for reproducing a marginal result, not for proving who edited the file.

Test the actual delivery chain. A fixture result is a starting point, not a guarantee for your material.

Open the Studio →