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
ADC clock drift
Started by ●April 1, 2005
Reply by ●April 4, 20052005-04-04
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 >
Reply by ●June 24, 20062006-06-24
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 thesound>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 youmay>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 clocksthat>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 toget>a exact 8000 out of the crystal frequency. If you need a very stableclock>then desolder the crystal of the sound card and apply a externallygenerated>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 externallygenerated>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 needto>apply the external frequency in order to boot or shutdown the pc with aso>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 inparts-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 windowsproblems>> which cause clock drift? >> >> >> Tony >> > > >
Reply by ●June 25, 20062006-06-25
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