Forums

Measuring "payload" skew across network

Started by Don Y September 24, 2020
I have an application that distributes audio among multiple, distant
nodes (emitters/speakers) over an ethernet.  I control the relative
timing (phasing) of the signals from each emitter -- either in synchronism
or leading/lagging by specific dynamic amounts (which can be on the
order of many ms).

To date, I've been measuring this skew in the time domain by emitting
a plosive burst whose start time can readily be identified (on a 'scope)
relative to the time it appears from another emitter.  This is the
direct analog of a "clap board" in a film production.

Is there a cleverer way I can do this -- likely in the frequency
domain -- by deploying a signal of particular "characteristics"
that would let me "miss" the start time of the emission and still
yield the same results?  (it's just annoyingly inconvenient to
have to set up each experiment with an introductory delay just so
I can be prepared for the output(s).  A "steady state" sort of
approach would be nicer -- set up a stimulus, then probe each
emitter to check results for that emitter!)

[I.e., you need to be able to differentiate between THIS point on
the time series on THIS device and THE SAME point on another device.
You can't risk that point being on a subsequent cycle of a periodic
waveform!]
On Thu, 24 Sep 2020 07:51:10 -0700, Don Y
<blockedofcourse@foo.invalid> wrote:

>I have an application that distributes audio among multiple, distant >nodes (emitters/speakers) over an ethernet. I control the relative >timing (phasing) of the signals from each emitter -- either in synchronism >or leading/lagging by specific dynamic amounts (which can be on the >order of many ms). > >To date, I've been measuring this skew in the time domain by emitting >a plosive burst whose start time can readily be identified (on a 'scope) >relative to the time it appears from another emitter. This is the >direct analog of a "clap board" in a film production. > >Is there a cleverer way I can do this -- likely in the frequency >domain -- by deploying a signal of particular "characteristics" >that would let me "miss" the start time of the emission and still >yield the same results? (it's just annoyingly inconvenient to >have to set up each experiment with an introductory delay just so >I can be prepared for the output(s). A "steady state" sort of >approach would be nicer -- set up a stimulus, then probe each >emitter to check results for that emitter!) > >[I.e., you need to be able to differentiate between THIS point on >the time series on THIS device and THE SAME point on another device. >You can't risk that point being on a subsequent cycle of a periodic >waveform!]
Send something aperiodic and wideband - a long chirp or noise or something - and cross-correlate. I assume the emitters are identical, which simplifies the situation. In theory, that could be done continuously at inaudible levels. -- John Larkin Highland Technology, Inc Science teaches us to doubt. Claude Bernard
On 24/09/2020 15:51, Don Y wrote:
> I have an application that distributes audio among multiple, distant > nodes (emitters/speakers) over an ethernet.&Acirc;&nbsp; I control the relative > timing (phasing) of the signals from each emitter -- either in synchronism > or leading/lagging by specific dynamic amounts (which can be on the > order of many ms). > > To date, I've been measuring this skew in the time domain by emitting > a plosive burst whose start time can readily be identified (on a 'scope) > relative to the time it appears from another emitter.&Acirc;&nbsp; This is the > direct analog of a "clap board" in a film production. > > Is there a cleverer way I can do this -- likely in the frequency > domain -- by deploying a signal of particular "characteristics" > that would let me "miss" the start time of the emission and still > yield the same results?&Acirc;&nbsp; (it's just annoyingly inconvenient to > have to set up each experiment with an introductory delay just so > I can be prepared for the output(s).&Acirc;&nbsp; A "steady state" sort of > approach would be nicer -- set up a stimulus, then probe each > emitter to check results for that emitter!)
Chirp might well do it. Same technology as bats use but with a fairly high computational load reducing the data. You can even modulate each emitter with a characteristic start frequency, sweep rate and duration to be able to tell them apart. The other choice might be periodic Walsh functions on a length 2^N which are an orthogonal basis set on binary sequences. https://mathworld.wolfram.com/WalshFunction.html IOW You can uniquely determine the delay from each emitter in one go if you can sample the resulting waveform fast enough. -- Regards, Martin Brown
torsdag den 24. september 2020 kl. 17.29.36 UTC+2 skrev Martin Brown:
> On 24/09/2020 15:51, Don Y wrote: > > I have an application that distributes audio among multiple, distant > > nodes (emitters/speakers) over an ethernet.&nbsp; I control the relative > > timing (phasing) of the signals from each emitter -- either in synchronism > > or leading/lagging by specific dynamic amounts (which can be on the > > order of many ms). > > > > To date, I've been measuring this skew in the time domain by emitting > > a plosive burst whose start time can readily be identified (on a 'scope) > > relative to the time it appears from another emitter.&nbsp; This is the > > direct analog of a "clap board" in a film production. > > > > Is there a cleverer way I can do this -- likely in the frequency > > domain -- by deploying a signal of particular "characteristics" > > that would let me "miss" the start time of the emission and still > > yield the same results?&nbsp; (it's just annoyingly inconvenient to > > have to set up each experiment with an introductory delay just so > > I can be prepared for the output(s).&nbsp; A "steady state" sort of > > approach would be nicer -- set up a stimulus, then probe each > > emitter to check results for that emitter!) > > Chirp might well do it. Same technology as bats use but with a fairly > high computational load reducing the data. > > You can even modulate each emitter with a characteristic start > frequency, sweep rate and duration to be able to tell them apart. > > The other choice might be periodic Walsh functions on a length 2^N which > are an orthogonal basis set on binary sequences. > > https://mathworld.wolfram.com/WalshFunction.html > > IOW You can uniquely determine the delay from each emitter in one go if > you can sample the resulting waveform fast enough. >
walsh, maximum length or gold codes and correlation, basically GPS or CDMA
On 9/24/2020 8:29 AM, Martin Brown wrote:
> On 24/09/2020 15:51, Don Y wrote: >> I have an application that distributes audio among multiple, distant >> nodes (emitters/speakers) over an ethernet. I control the relative >> timing (phasing) of the signals from each emitter -- either in synchronism >> or leading/lagging by specific dynamic amounts (which can be on the >> order of many ms). >> >> To date, I've been measuring this skew in the time domain by emitting >> a plosive burst whose start time can readily be identified (on a 'scope) >> relative to the time it appears from another emitter. This is the >> direct analog of a "clap board" in a film production. >> >> Is there a cleverer way I can do this -- likely in the frequency >> domain -- by deploying a signal of particular "characteristics" >> that would let me "miss" the start time of the emission and still >> yield the same results? (it's just annoyingly inconvenient to >> have to set up each experiment with an introductory delay just so >> I can be prepared for the output(s). A "steady state" sort of >> approach would be nicer -- set up a stimulus, then probe each >> emitter to check results for that emitter!) > > Chirp might well do it. Same technology as bats use but with a fairly high > computational load reducing the data. > > You can even modulate each emitter with a characteristic start frequency, sweep > rate and duration to be able to tell them apart. > > The other choice might be periodic Walsh functions on a length 2^N which are an > orthogonal basis set on binary sequences. > > https://mathworld.wolfram.com/WalshFunction.html > > IOW You can uniquely determine the delay from each emitter in one go if you can > sample the resulting waveform fast enough.
Can I get an *instrument* to do this for me? E.g., I've been using a DSO and just letting it measure the delay between two signals.
On Thu, 24 Sep 2020 07:51:10 -0700, Don Y
<blockedofcourse@foo.invalid> wrote:

>Is there a cleverer way I can do this -- likely in the frequency >domain -- by deploying a signal of particular "characteristics" >that would let me "miss" the start time of the emission and still >yield the same results?
Look into various automated room equalization schemes used in higher end hi-fi speaker systems. For example, from 2013: <https://hometheaterreview.com/automated-room-correction-explained/> I'm sure there are patents available for dissection. <https://www.google.com/search?tbm=pts&q=room+equalization> My Harman Kardon AVR 254 amp has such a feature. I place a plug in microphone near where I expect to be sitting when listening to the hi-fi, punch the "setup" function, and the amp adjusts the delays and frequency response to each of the 7 speakers (channels). The noises emitted during the setup process sound like a mixture of clicks (time of flight delay?) and hiss (broadband noise). Actually, I'm not sure if it can deal with variations in speaker distance and delays from the listener. The diagram in the manual showing recommended placement for the 7 speakers is a perfect circle, which suggests that it can't handle random speaker placement. Still, I think it might be worth investigating. -- Jeff Liebermann jeffl@cruzio.com 150 Felker St #D http://www.LearnByDestroying.com Santa Cruz CA 95060 http://802.11junk.com Skype: JeffLiebermann AE6KS 831-336-2558
On 09/24/20 15:51, Don Y wrote:
> I have an application that distributes audio among multiple, distant > nodes (emitters/speakers) over an ethernet. I control the relative > timing (phasing) of the signals from each emitter -- either in synchronism > or leading/lagging by specific dynamic amounts (which can be on the > order of many ms). > > To date, I've been measuring this skew in the time domain by emitting > a plosive burst whose start time can readily be identified (on a 'scope) > relative to the time it appears from another emitter. This is the > direct analog of a "clap board" in a film production. > > Is there a cleverer way I can do this -- likely in the frequency > domain -- by deploying a signal of particular "characteristics" > that would let me "miss" the start time of the emission and still > yield the same results? (it's just annoyingly inconvenient to > have to set up each experiment with an introductory delay just so > I can be prepared for the output(s). A "steady state" sort of > approach would be nicer -- set up a stimulus, then probe each > emitter to check results for that emitter!) > > [I.e., you need to be able to differentiate between THIS point on > the time series on THIS device and THE SAME point on another device. > You can't risk that point being on a subsequent cycle of a periodic > waveform!]
If yu are using ethernet, transit time across the network can depend on network load, retries etc and is not guaranteed. For that sort of work, a private subnet or a different protocol may be more appropriate. Have you modelled worst case transit times ?... Chris
jlarkin@highlandsniptechnology.com wrote:
> On Thu, 24 Sep 2020 07:51:10 -0700, Don Y > <blockedofcourse@foo.invalid> wrote: > >> I have an application that distributes audio among multiple, distant >> nodes (emitters/speakers) over an ethernet. I control the relative >> timing (phasing) of the signals from each emitter -- either in synchronism >> or leading/lagging by specific dynamic amounts (which can be on the >> order of many ms). >> >> To date, I've been measuring this skew in the time domain by emitting >> a plosive burst whose start time can readily be identified (on a 'scope) >> relative to the time it appears from another emitter. This is the >> direct analog of a "clap board" in a film production. >> >> Is there a cleverer way I can do this -- likely in the frequency >> domain -- by deploying a signal of particular "characteristics" >> that would let me "miss" the start time of the emission and still >> yield the same results? (it's just annoyingly inconvenient to >> have to set up each experiment with an introductory delay just so >> I can be prepared for the output(s). A "steady state" sort of >> approach would be nicer -- set up a stimulus, then probe each >> emitter to check results for that emitter!) >> >> [I.e., you need to be able to differentiate between THIS point on >> the time series on THIS device and THE SAME point on another device. >> You can't risk that point being on a subsequent cycle of a periodic >> waveform!] > > Send something aperiodic and wideband - a long chirp or noise or > something - and cross-correlate. I assume the emitters are identical, > which simplifies the situation. > > In theory, that could be done continuously at inaudible levels. > > >
As in using a burst of white noise from a given speaker for timing purposes. Could be less noisy than the plosive burst.
On 9/24/2020 9:53 AM, Chris wrote:
> On 09/24/20 15:51, Don Y wrote: > If yu are using ethernet, transit time across the network can depend > on network load, retries etc and is not guaranteed. For that sort of > work, a private subnet or a different protocol may be more appropriate. > > Have you modelled worst case transit times ?...
Of course! Every device on the switch is of my own design -- I know exactly what it sends/receives and when. The switch participates in the clock synchronization algorithm (similar to PTP). So, I distribute the "content" slightly ahead of time. Then, tell each node when to emit it, relative to that synchronized "clock". The issue then distills to ensuring I can keep ahead of the "consumers" (cuz I can't deliver a complete "audio snipet")
On 9/24/2020 9:51 AM, Jeff Liebermann wrote:
> On Thu, 24 Sep 2020 07:51:10 -0700, Don Y > <blockedofcourse@foo.invalid> wrote: > >> Is there a cleverer way I can do this -- likely in the frequency >> domain -- by deploying a signal of particular "characteristics" >> that would let me "miss" the start time of the emission and still >> yield the same results? > > Look into various automated room equalization schemes used in higher > end hi-fi speaker systems. For example, from 2013: > <https://hometheaterreview.com/automated-room-correction-explained/> > I'm sure there are patents available for dissection. > <https://www.google.com/search?tbm=pts&q=room+equalization>
Thanks!
> My Harman Kardon AVR 254 amp has such a feature. I place a plug in > microphone near where I expect to be sitting when listening to the > hi-fi, punch the "setup" function, and the amp adjusts the delays and > frequency response to each of the 7 speakers (channels). The noises > emitted during the setup process sound like a mixture of clicks (time > of flight delay?) and hiss (broadband noise). Actually, I'm not sure > if it can deal with variations in speaker distance and delays from the > listener. The diagram in the manual showing recommended placement for > the 7 speakers is a perfect circle, which suggests that it can't > handle random speaker placement. Still, I think it might be worth > investigating.
OK. That's a different goal than what I'm pursuing but I can possibly borrow some ideas/techniques from it. In my case, the individual "nodes" are located over reasonably large distances (50 ft) and not "line-of-hearing" (concocted term as a play on "line-of-sight"). I also want to be able to numerically demonstrate the individual delays (hence the DSO time-domain approach... no "magic" involved in convincing yourself that a SPECIFIC delay has been achieved) (later, I'll need to do the same with video; and the audio wrt the video)