Forums

ADC clock drift

Started by Unknown April 1, 2005
Does anyone have typical error rates for ADC clocks in cheap and
moderately cheap PC soundcards?

I've measured clock drift of a soundblaster/Linux in parts-per-million,
and in my application that's easily compensated for.

But others have reported 1:1000 and even almost 1:100 (under windows)
which strikes me as outrageous - surely ADC clocks in the cheapest
soundcards are better than this?  Anyone know of known windows problems
which cause clock drift?


Tony

Hi Tony,

i guess you must distinguish between DRIFT and FREQUENCY OFFSET of the sound
card's clock. Since the sound cards clock is a simple crystal controlled
oscillator you may expect DRIFTS in the order of say a ppm per degree
celsius change in the surrounding temperature. In addition to that you may
expect a constant FREQUENCY OFFSET of up to +/-100 ppm depending on the
quality of the crystal. Then there is a third point: The sound card must
generate ALL sample rates from a single oscillator. That means: The
oscillator's frequency  should be at least the "least common multiple" of
all sample rates. However, this can result in REALLY high frequencies. That
is the reason why a lot of manufacturers go for less and build clocks that
may be very exact on 11025, 22050 and 44100 but not so exact on 8000 or
48000 sample rates simply because there is no integer division ratio to get
a exact 8000 out of the crystal frequency. If you need a very stable clock
then desolder the crystal of the sound card and apply a externally generated
clock signal. I just did this with a Creative Soundblaster Live 24 Bit. It
uses a 24.576 MHz Crystal. Instead of this i applied a externally generated
25 MHz signal that was derived from a rubidium frequency standard. The
sample rates are of course wrong by the amount of clock frequency
difference, but are very stable...to say the least. Note that you need to
apply the external frequency in order to boot or shutdown the pc with a so
modified sound card plugged in.

Regards
Ulrich

<tony@nospam.tonyRobinson.com> schrieb im Newsbeitrag
news:87wtrm4ykm.fsf@tonyRobinson.com...
> Does anyone have typical error rates for ADC clocks in cheap and > moderately cheap PC soundcards? > > I've measured clock drift of a soundblaster/Linux in parts-per-million, > and in my application that's easily compensated for. > > But others have reported 1:1000 and even almost 1:100 (under windows) > which strikes me as outrageous - surely ADC clocks in the cheapest > soundcards are better than this? Anyone know of known windows problems > which cause clock drift? > > > Tony >
Funny you mention this about the Soundblaster Live 24 bit card.

For years, my company has used the simple Soundblaster Live! Value in
videoconferencing stations that we manufacture and sell.  It is simple,
cheap, and unglamorous.  But the sampling clock is dead-on accurate at
8000, 16000, 22050, 32000, 44100.  From Windows, you can set the sampling
rate (at least on playback) to virtually any amount, and that card locks
on and plays accurately at that rate (i.e. 16008, 7992, etc).

That card is no longer made.  The new 24 bit card is a big crap-out in
this regard.  It is accurate at 8000, 16000, 32000, and 44100 (within 0.1%
or better).  But at 22050, it is horrible.  It actually captures at 22175,
125 Hz too high!    Even worse, when simultaneously capturing and playing
on the card, if I tweak the playback rate by a few Hz (i.e. say I was
playing at 22050, and I change it to 22042), IT AFFECTS THE CAPTURE RATE!

I don't know about using a single oscillator, or how they used to do it on
the old "Live!" card, but that was a simple cheap card, and its clocks were
dead-accurate.  So this can't be that hard.  There is really no excuse for
a card that can't keep time, for God's sake.

Laptops are notorious for this.  I've tested a bunch of them here, and
they notoriously are hundreds of Hz off on both the playback or record
side.
Even worse, many of them won't actually change their rate when you tweak
it by a few Hz.  The one in my Compaq Evo notebook does this.  Set it on
16000, it plays at 15780.  Set it to 15990, it plays at 15780.  In fact,
you can step down in little steps, and it won't budge, until you get to
about 140 Hz, and then it takes a MASSIVE leap downward by about 300 Hz to
16720!   It's like their driver only supports large integral steps in
frequency.

Again.... making an accurate digital clock is just not that tough.  This
is really cheapskate corner-cutting as far as I'm concerned.


>Hi Tony, > >i guess you must distinguish between DRIFT and FREQUENCY OFFSET of the
sound
>card's clock. Since the sound cards clock is a simple crystal controlled >oscillator you may expect DRIFTS in the order of say a ppm per degree >celsius change in the surrounding temperature. In addition to that you
may
>expect a constant FREQUENCY OFFSET of up to +/-100 ppm depending on the >quality of the crystal. Then there is a third point: The sound card must >generate ALL sample rates from a single oscillator. That means: The >oscillator's frequency should be at least the "least common multiple"
of
>all sample rates. However, this can result in REALLY high frequencies.
That
>is the reason why a lot of manufacturers go for less and build clocks
that
>may be very exact on 11025, 22050 and 44100 but not so exact on 8000 or >48000 sample rates simply because there is no integer division ratio to
get
>a exact 8000 out of the crystal frequency. If you need a very stable
clock
>then desolder the crystal of the sound card and apply a externally
generated
>clock signal. I just did this with a Creative Soundblaster Live 24 Bit.
It
>uses a 24.576 MHz Crystal. Instead of this i applied a externally
generated
>25 MHz signal that was derived from a rubidium frequency standard. The >sample rates are of course wrong by the amount of clock frequency >difference, but are very stable...to say the least. Note that you need
to
>apply the external frequency in order to boot or shutdown the pc with a
so
>modified sound card plugged in. > >Regards >Ulrich > ><tony@nospam.tonyRobinson.com> schrieb im Newsbeitrag >news:87wtrm4ykm.fsf@tonyRobinson.com... >> Does anyone have typical error rates for ADC clocks in cheap and >> moderately cheap PC soundcards? >> >> I've measured clock drift of a soundblaster/Linux in
parts-per-million,
>> and in my application that's easily compensated for. >> >> But others have reported 1:1000 and even almost 1:100 (under windows) >> which strikes me as outrageous - surely ADC clocks in the cheapest >> soundcards are better than this? Anyone know of known windows
problems
>> which cause clock drift? >> >> >> Tony >> > > >
Hi!

mmagliaro schrieb:
> For years, my company has used the simple Soundblaster Live! Value in > videoconferencing stations that we manufacture and sell. It is simple, > cheap, and unglamorous. But the sampling clock is dead-on accurate at > 8000, 16000, 22050, 32000, 44100. From Windows, you can set the sampling > rate (at least on playback) to virtually any amount, and that card locks > on and plays accurately at that rate (i.e. 16008, 7992, etc).
Err, no offence, but the EMU10k chip of the SBLive operates always at 48kHz, whatever you tell windows. The resampling is done in the DSP and obviously the chip did not miscalculate the sampling rate.
> That card is no longer made. The new 24 bit card is a big crap-out in > this regard. It is accurate at 8000, 16000, 32000, and 44100 (within 0.1% > or better). But at 22050, it is horrible. It actually captures at 22175, > 125 Hz too high! Even worse, when simultaneously capturing and playing > on the card, if I tweak the playback rate by a few Hz (i.e. say I was > playing at 22050, and I change it to 22042), IT AFFECTS THE CAPTURE RATE!
This is a common feature of (as far as I know) all cards without a locked sampling rate of 48kHz. Otherwise there were no fixed phase relation between input and output when operating in full duplex mode. This would make the card entirely unusable for this purpose.
> I don't know about using a single oscillator, or how they used to do it on > the old "Live!" card, but that was a simple cheap card, and its clocks were > dead-accurate. So this can't be that hard.
Use a $10 soundcard and your frequencies will be as accurate as with the SBLive. They all operate at 48kHz. Of course, the resampler may be not of that quality level, but you can do this in software just as well.
> There is really no excuse for > a card that can't keep time, for God's sake.
Well, the higher the multiplier of the PLL, the more critical is the jitter. And noone uses 22,05kHz. It's mainly for compatibility with old games and bad sounding system sounds. You should know what you are doing when you use consumer components for measurement purposes.
> Laptops are notorious for this. I've tested a bunch of them here, and > they notoriously are hundreds of Hz off on both the playback or record > side.
Well, on the box is written "with 16 bit sound". There is nothing said about tolerances or if at least the half of the 16 bits contain useful information.
> Even worse, many of them won't actually change their rate when you tweak > it by a few Hz. The one in my Compaq Evo notebook does this. Set it on > 16000, it plays at 15780. Set it to 15990, it plays at 15780. In fact, > you can step down in little steps, and it won't budge, until you get to > about 140 Hz, and then it takes a MASSIVE leap downward by about 300 Hz to > 16720! It's like their driver only supports large integral steps in > frequency.
It's a question of resampling againg. Switch to 48kHz and do the resampling on your own and you will get any sampling rate you like. Marcel