I'm trying to model a transfer function for a noisy audio system, specifically to measure delayed system response. Before I can confidently apply control, I need to verify that I can exert control over the system by broadcasting a signal and listening for the delayed (and potentially noisy) feedback.

I suspect I can add or subtract a unique signal to pink noise to simultaneously calibrate my transfer function as well as verify that the system is responding to my input.

Is there any prior art on this? Is pink noise the right approach here?

Current Plan:

  1. Generate a second of pink noise and calculate its FFT.
  2. Generate a second of unique signal and calculate its FFT. Maybe this can be a simple square wave at 5kHz.
  3. Sum the noise and carrier signal together as test signal. Split the signal into five 200ms chunks, calculate the FFT of the noise
  4. Record a second of (noisy) silence.
  5. Start broadcasting the combined test signal, while still recording.
  6. Take the FFTs of the "empty" and "full" signals. The difference should be the ambient noise.
  7. Look for the source spectrum distribution.
  8. Given that we found the distribution we were looking for, cross-correlate the recording with the source signal to find the delay at k samples.

Does this sound about right? When I'm done, I should know the average ambient noise, the system delay and the harmonic distortion (maybe I need to sweep frequency for this?).

For calibration, performance doesn't have to be real-time. Is there a more complicated sweep function I can use to find a more accurate delay and response?


your generated pink noise is just a signal. it's not noise because you know what it is.

  1. you can toss whatever broadbanded signal you want into your linear, time-invariant system. call that "$x[n]$".
  2. you can measure the output of that LTI system, call that "$y[n]$", given the known input.
  3. you can FFT both the input and the output. call those FFT results "$X[k]$" and "$Y[k]$", respectively.
  4. if the input was broadbanded, $X[k] \ne 0$ for all $k$. so you can divide $Y[k]$ with $X[k]$.
  5. the result: $$ H[k]=\frac{Y[k]}{X[k]} $$ is your system response. this is called the "Dual-channel FFT" method of measuring system response. if there is a delay, you will see a linear trend to the unwrapped angle of $H[k]$. the negative of the slope of that linear trend is proportional to the delay.

you can also use cross-correlation between the input and output to discover the prominent delay of the system. the definition of that is

$$ R_{xy}[m] = \sum_n x[n] y[n+m] $$

i'm deliberately playing fast-and-loose with the limits of the summation. the value of $m$ that maximizes $R_{xy}[m]$ is a good candidate for the delay of the system.

  • $\begingroup$ Thanks! Can you recommend a suitable test signal and whether a pink signal is the right thing for this? Or would a decaying impulse function be a better fit? $\endgroup$ – Petrus Theron Jun 18 '18 at 12:14
  • $\begingroup$ i s'pose pink noise is a good broadbanded test signal. $\endgroup$ – robert bristow-johnson Jun 21 '18 at 10:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.