[PlanetCCRMA] Re: Mulitple Jack audio interfaces (was Tascam US-122 audio problem)

Mark Knecht Mark Knecht <markknecht@gmail.com>
Fri Feb 25 10:44:02 2005


On Fri, 25 Feb 2005 10:05:57 -0800, Andrew Burgess <aab@cichlid.com> wrote:
> >>It should be possible with firewire devices, as its possible to make them
> >>share a common clock, 

How? Standard 1394 devices transmit using there own clock and receive
using the clock from the other end of the cable. If you set up a
stream of 1394 devices there is resynchronization happening at every
node in the bus. 400Mb/S is not the same exact number at all
locations.

If these 1394 devices have word clock inputs, etc., then the problem
is solved, but without them (and assuming real time delivery) clocking
is a bigger mess in 1394 leading to stuff like 61883-X.

> >>but with unmodified consumer PCI devices you have no
> >>source of sync, the drift will be substantially more than 1 sample every
> >>100k.
> 
> >How much more substantial will it be? That seems like a high guess to me,
> >aren't crystals accurate to a few ppm?

100-200ppm at the outset for inexpensive crystals, independent of
temperature drift and changes over lifetime.

> 
> I ran some overnight tests and found with 3 soundcards (2 usb and one mb)
> the rates differed by 2-4 samples/sec. About 10 times more than my 100k
> estimate (oops).
> 
> I think I'll try generating some pure sin tones and see if I can
> audibly detect sample insertion/deletion, or maybe try to find the
> detection threshold.

I hate to be a grouch but I think this isn't going to result in much
that's useful to you. These crystals will change frequency slightly
over the day. They speed up and slow down. It's happening to every
device on your net that is using it's own clock. None of it is stable
and the results will change every time you do the test.

The only thing I think you can do in this space is to count samples.
If you know that all devices generate 44100 samples in whatever period
of time they consider a second to be then you could arbitrarily
designate one of them to be the master '44100 sample supplier' and
then *possibly* do some adjustment to your other sample streams based
on that. What that adjustment is would be complex as you would
sometimes be adding and sometimes subtracting samples.

Designating a '44100 sample supplier' is essentially what ADAT
clocking or spdif clocking does.

It seems to me that this would invariably lead to clicks and pops, and
that should you choose to do it every second then you'll end up with
some repetitive click that's likely to be more noticeable.

Anyway, I hate to be a grouch but I think this isn't going to be a
good use of time or compute power.