What is baudline?
Mystery Signal
Sound Blaster Live!

vendor Creative Labs
product Sound Blaster Live! (value), SB Live
interface PCI
duplex full
channels 2
resolution 16 bits
max rate 48 Ksample/sec
chipset EMU10K1 rev 8
codec SigmaTel STAC9721,23
operating system Fedora core3 Linux x86 2.6.11-1
driver emu10k1 ALSA 1.0.9rc2
buffer size input 2 KB, output 32 KB
test date Aug 28 2005
notes Setting up the mixer controls is very tricky.  With an external mixer program, set the second Wave and the first AC97 slider pairs to maximum in order to get enough gain.  Mute Tone toggle for a flat frequency response. 

The emu10k1 chip crashes often when adjusting mixer settings.  The spectrum goes crazy when this happens.  Fortunately doing a pause/record cycle in baudline resets the chip. 

The emu10k1 driver only has 2 input fragments so xrun induced wideband spectral glitches are a common occurrence.  Setting -fragsize 12 helps the xrun problem but it makes the video frame rate slower.

The 4000, 8000, and 11025 Sample rates popup a "/dev/audio requested fragsize ignored" error message.  Set -fragsize 8 to get those rates to function correctly.  Unfortunately the larger fragment size will also make the frame rate slower.  The 5510 sample rate won't work with the SB Live no matter how the fragsize is set.

Set the Tone Generator's digital gain to -4 or -5 dB for 0.2 bits more of ENOB.

The EMU10K1 chip uses an internal 48000 sample rate for all data paths.  The native rate is 48000 and the EMU10K1 DSP does sample rate conversion. Many users complained loudly about this "feature" when the SB Live! card was first released.  Does this hurt or help the distortion measurements?  Let's see.

This card is part of the Full Duplex DAQ comparison survey.

Sample Rate
The sample rate on DAQ cards is not a fixed absolute constant.  Like time, it fluctuates, and it is difficult to measure accurately.  Sometimes there are relationships between the input and output sample rates that can reveal interesting details about the inner working machinery.

The following table of measurements use a technique described in the sample rate stability application note. The rate column is the sample rate value that the collection hardware is programmed to.  The in/out rate and in/out error columns are absolute measurements of the ADC / DAC clock.  The loop error column uses a tone generator loopback method for a high accuracy measurement of the relative difference between the ADC and the DAC clocks.  The three error PPM columns are theoretically related by the formula: "in_error - out_error = loop_error"

rate in rate out rate in error out error loop error
4000 4000.438 3999.482 +109.500 PPM -129.500 PPM +244.198 PPM
8000 7998.217 8000.867 -222.875 PPM +108.375 PPM -122.054 PPM
11025 11026.18 11025.67 +107.029 PPM +60.7710 PPM +53.1485 PPM
12000 11997.35 12001.39 -220.833 PPM +115.833 PPM +0.0000 PPM
16000 16001.85 16000.86 +115.625 PPM +53.7500 PPM +61.0381 PPM
22050 22043.61 22051.33 -289.796 PPM +60.3175 PPM +53.1485 PPM
24000 24002.28 24002.55 +95.0000 PPM +106.250 PPM +0.0000 PPM
32000 31995.93 32004.49 -127.188 PPM +140.312 PPM -30.5175 PPM
44100 44104.95 44105.51 +112.245 PPM +124.943 PPM -13.2850 PPM
48000  48001.67  48005.20  +34.7917 PPM  +108.333 PPM  +0.0000 PPM 

The non zero PPM difference of the in error and out error columns raised some suspicions.  For further investigation the -debugrate command line option was used to create the plot shown below.

This plot depicts a periodic fragment slip.  The output channel is converging nicely to a 48005.20 sample rate.  The input channel is experiencing a fragment slip every 300 seconds.  The sample rate is converging to 48001.67 with this this zigzag motion.  This is a 73.5413 PPM difference. 

The baudline spectro and waveform windows below show the wideband glitch that occurs every 300 seconds.

The periodic fragment slip is causing a discontinuity in the time domain.  This is typical of what happens when an xrun is encountered.  What is interesting is that an xrun is not reported because the SB Live! continues operating as if nothing unusual just happened.  Only having 2 input fragments could be enhancing this problem. 

Below is the -debugrate plot from Knoppix 2.4.27 OSS 3.8.2.  The hardware is the same but the Linux distribution, kernel version, and audio driver are all different.  The standard amount of audio fragments are available, all 128KB of buffer space is being used, and the -fragsize option was not required. 

The Knoppix plot has a smooth sample rate convergence and is an indication that the OSS audio driver is handling the fragment interrupts correctly.  Three major components have changed between Knoppix OSS and Fedora core3 ALSA which makes it difficult to determine the exact source of the fault.  The number of input fragments is decided by the audio driver so ALSA is the prime suspect.  The important points are:
  • The Linux SB Live! driver previously worked correctly but now it is broken.
  • Something strange is happening with Fedora core3's input sample rate estimate and it cannot be trusted.
  • Further testing is needed to determine the exact cause of this error.

Frequency Domain
The sound card's input and output jacks are connected with a short external cable and run in full duplex mode.  This is a loopback test and baudline's tone generator is the signal source.  Distortion, noise floor, filter response, and inter channel crosstalk are the frequency domain measurements of interest in this section. 

The signal test sources are a pure sine wave, a linear sine sweep, and WGN.  The sine wave is used for the distortions and crosstalk measurements.  The linear sine sweep and WGN are used for the filter characterization measurement.  Both are an application of the swept sine vs. WGN technique and are equivalent measures of the frequency response. 

Since spectral performance is a function of sample rate, each of the sound card's native rates will be tested.  The highest sample rate is usually the cleanest and this is advantageous because it allows the isolated testing of the ADC and the DAC.  The matched, source, and sink sample rate combinations are described below.

The input and output sample rates are the same.  This combination tests the performance of both the ADC and the DAC in a matched mode of operation.  The linear sine sweep signal in the left spectrogram display and the WGN (orange) in the Average window characterize the in-band filter response.  The sine wave (green) in the Average window is used for distortion and crosstalk measurements.  The sine leakage (purple) is used for crosstalk measurement

The sample rate of the input (sink) is the card's highest clean rate.  This combination tests the performance of the DAC.  The linear sine sweep signal in the middle spectrogram display characterizes the DAC filter response.  The position of the pass-band and the stop-band filter transition is defined by the Nyquist frequency of the DAC.  The noise floor (purple) is the Average collection of a silent channel.

The sample rate of the output (source) is the card's highest clean rate.  This combination tests the performance of the ADC.  The linear sine sweep signal in the rightmost spectrogram display and the orange curve in the Average window below it characterize the ADC filter response.  The position of both the pass-band and the stop-band filter transition is defined by time in the spectrogram and by folded frequency in the Average window.  The orange Average curve represents the pass-band while the cyan curve is a folded representation of the stop-band ADC filter response.  The noise floor (purple) is the Average collection of a silent channel.

The naming convention for the columns below is (DAC -> ADC) where DAC represents the source sample rate and ADC represents the sink sample rate. 

source (DAC)
sink (ADC)
4000 -> 4000 4000 -> 48000 48000 -> 4000

5510 -> 5510
No data.  Sample rate is broken.

8000 -> 8000 8000 -> 48000 48000 -> 8000

11025 -> 11025 11025 -> 48000 48000 -> 11025

12000 -> 12000 12000 -> 48000 48000 -> 12000

In the first average spectrum plot the yellow curve represents the left channel and the orange curve represents the right channel. 

16000 -> 16000 16000 -> 48000 48000 -> 16000

22050 -> 22050 22050 -> 48000 48000 -> 22050

24000 -> 24000 24000 -> 48000 48000 -> 24000

In the first average spectrum plot the yellow curve represents the left channel and the orange curve represents the right channel. 

32000 -> 32000 32000 -> 48000 48000 -> 32000

44100 -> 44100 44100 -> 48000 48000 -> 44100

48000 -> 48000  

Very mild passband ripple.

The following table of measurements were made using the technique described in the sine distortion application note.  It is a full duplex test that uses a loopback of the tone generator to measure the various distortion parameters.  The stereo crosstalk column is a measure of channel leakage that uses a sine wave channel and a silent channel as the signal sources.

rate SNR THD SINAD ENOB SFDR crosstalk
4000 +90.24 dB -90.66 dB +87.44 dB +14.230 bits +93.72 dB -85.37 dB
8000 +91.22 dB -91.98 dB +88.57 dB +14.420 bits +94.74 dB -85.11 dB
11025 +81.54 dB -87.25 dB +80.51 dB +13.080 bits +90.50 dB -85.94 dB
12000 +78.53 dB -83.67 dB +77.37 dB +12.559 bits +89.22 dB -84.78 dB
16000 +88.24 dB -89.91 dB +85.99 dB +13.989 bits +94.07 dB -84.90 dB
22050 +82.58 dB -87.99 dB +81.48 dB +13.242 bits +93.01 dB -84.23 dB
24000 +78.49 dB -83.54 dB +77.31 dB +12.549 bits +88.23 dB -83.78 dB
32000 +77.76 dB -85.49 dB +77.08 dB +12.511 bits +78.61 dB -82.47 dB
44100 +76.82 dB -81.39 dB +75.52 dB +12.251 bits +88.63 dB -81.35 dB
48000  +78.79 dB  -81.44 dB  +76.90 dB  +12.481 bits  +88.93 dB  -81.40 dB 

The 4000, 12000, and 24000 sample rates have poor ADC filters.  The 12000 and 24000 rates are special cases in that they alternate left and right channels that have nonexistent ADC filters (see the flat spectrum curves in the sink column).  It is very odd that the stereo channels have different filters and it is also odd this orientation is reversed between 12000 and 24000.

Other than the above mentioned exception, the SB Live! has good filters with fairly sharp roll offs.  The 11025, 22050, and 44100 sample rates suffer from some mild crosshatch aliasing.  The 32000 rate has a cleaner looking spectrogram sweep but the distinctive X-folded aliasing peak is about 20 dB higher which makes it more significant than the crosshatch aliasing.

The distortion numbers look good and comparatively the crosshatch and X-folded aliasing don't appear to hinder performance.

A white Gaussian noise signal source was generated and captured in full duplex loopback fashion at each of the standard sample rates.  The Histogram plots below show a unique sample distribution that is dependent on sample rate.

4000 ... 48000

This histogram is the same for all the standard rates except 12000 and 24000 which are below.


Right (purple) channel is spectrally flat.


Left (green) channel is spectrally flat.

The wider Gaussian curves of the 12000 and 24000 spectrally flat channels don't signify anything by themselves.  They just highlight that something unusual is at work.

Channel Delay
A sine wave signal was generated and captured in full duplex loopback mode.  The time domain response was observed with the Waveform window where the green curve represents the left channel and the purple curve represents the right channel.  A magnified view makes the spacing easier to see.  Two slightly different sample delay behaviors were seen and grouped by sample rates. 

4000 ... 16000

Almost zero channel delay.

22050 ... 48000

The channel delay is half a sample.

This inter channel delay will cause minor timing problems with stereo signals.  Minimal errors will be encountered while decoding quadrature signals for example.  This delay will be imperceptible.

The 5510 rate is broken and it can't be used at all.

The 12000, 24000, and 48000 sample rates all have 0.0000 PPM loop error.  Unfortunately the 12000 and 24000 ADC filters are either extremely low quality or completely nonexistent.  Decimation by 2 filters are the easiest type to design so this flaw must of been an oversight.

The 4000, 8000, 16000, and 32000 sample rates have a { +244 -122 +61 -30.5 } PPM loop error progression.  The PPM error grows by the same decimation by 2 factor that the sample rate decreases.  Not sure what the significance of this is but the internal filtering circuitry is propagating and multiplying the sampling rate error in successive decimation stages.

The 11025, 22050, and 44100 sample rates are related by having crosshatch aliasing and a loop error progression of { +53.1485 +53.1485 -13.2850 } PPM.  This doesn't make much of an effect on their distortion measurements and filter shapes since they are both pretty good.

The Sound Blaster Live! card is very quirky and setting up the mixer for the best performance is a very difficult task.  Failure to adjust mixer controls to optimal values will result in the loss of a couple bits of ENOB.

Avoid recording at the 4000, 12000, and 24000 sample rates since they have poor or nonexistent filters.  Audio record and playback at all of the other sample rates is recommended.  To avoid subtle aliasing don't use the 11025, 22050, 32000, or 44100 sample rates.  For full duplex work the best rates to use are 8000, 16000, and 48000.

Contrary to popular opinion, the SB Live! has quality filters and distortion performance numbers.  The only major problems the card suffers from is strange sample rate behavior and intermittent data loss caused by poor ALSA drivers.  The problems go away when the OSS drivers are used.

Copyright © 2005 - group - blog - site map