cpt_paranoia
Addicted Member
The following are some thoughts on the factors that might affect the audio quality of a digital-only streaming system.
Firstly, we need to be clear of the functions that a digital streamer performs:
Let's look at where errors may occur in these functions, or where one streamer might be better than another.
Network interface
This is a purely IT function; it has to receive the stream without any data corruption, delivering an error-free CODEC stream to the CODEC.
If the network interface fails to do this perfectly, it is BROKEN. It is all or nothing; it works perfectly, or it is broken. Thus, there is NO potential for variation between performance for streamers using different hardware/firmware for the network interface.
There are multiple causation barriers between timing on the network interface and the DAC clock, which mean that the timing of data on the network interface can have NO effect on the audio quality.
CODEC rendering
For lossless CODEC formats, the CODEC must produce bit-perfect samples, such that the output from the CODEC is exactly the same as the input of the original file before encoding.
If a lossless CODEC fails to do this perfectly, it is BROKEN. It is all or nothing; it works perfectly, or it is broken. Thus, there is NO potential for variation between performance for streamers using different lossless CODECs.
For lossy CODECs, where the output of the CODEC is not identical to the original file before encoding (because lossy formats must be reconstructed), there is scope for use of a better reconstruction algorithm in the CODEC. Thus, there is potential for variation between performance for streamers using different implementations of lossy CODECs. This potential depends on the degree of variation that the CODEC specifications allow for reconstruction, and whether anyone uses anything other than the 'reference implementations', or open-source implementations such as within ffmpeg.
Transmission to DAC
Transmission to the DAC is a digital service. It must transfer samples without error, without lost samples, without gaps, and in the correct order.
If the digital interface fails to do this perfectly, it is BROKEN. It is all or nothing; it works perfectly, or it is broken.
Noise on DAC Digital Interface
However, transmission of the digital sample stream to the DAC requires a physical interface to the DAC. This physical interface can carry noise from the streamer to the DAC. This noise is generated by, or externally coupled into, the electronics within the streamer. This noise may make its way to the analogue output of the DAC. Thus, there is potential for variation between performance for streamers using different hardware for the entire streamer.
Role of the DAC
Part of the role of a DAC is to ensure that noise on its digital interface does not make its way to its analogue output. How well it achieves this will depend on the quality of the design of the DAC, and the level of noise it has to deal with. Think of the DAC as a noise filter, able to attenuate noise by x dB.
Types of Noise
Noise on the digital interface can be electrical noise, or timing noise (aka jitter, aka phase noise). Both sides of the interface (streamer and DAC) can contribute to this noise, since both contain active digital electronics with fast edges, and other circuitry, that generate noise signals.
Electrical Noise
Electrical noise can be reduced by using differential transmission (assuming common-mode noise on the differential interface driver), and by filtering and careful design partitioning in the DAC. Opto-coupling can eliminate electrical noise coupling, but can increase timing noise (as electrical noise at the transmitter is converted to timing noise). Galvanic isolation, using transformers can also eliminate electrical noise coupling, but, again, can transform the electrical noise into timing noise.
Timing Noise
Timing noise is caused by variation of the position of clock edges. Since digital signals are real, physical signals, they have finite rise and fall times, dependent on the slew rate of the drivers. Those drivers also have noise on their power supplies (caused to the electrical activity in the streamer), and this noise couples to the digital signal. Note that optical and galvanic coupling usually have more limited bandwidth than digital electrical interfaces, so have slower edges. At the receiver, the received signal hits a threshold device, which determines the position of the clock transition point. Due to noise on the finite edge of the signal, and noise on the power supply of the receiver (and hence in the threshold voltage), there will be noise on the position of this clock transition point, causing timing noise. If this clock is used directly to clock the DAC (e.g. for some I2S interfaces), this will result in jitter on the DAC output.
Timing noise on the DAC clock causes variation in the timing of DAC samples, which results in frequency modulation of the output signal, including discrete spurii.
Source-Clocked Digital Interfaces
Digital interfaces where the DAC clock is provided by the source either have to have a very clean clock provided by the source, or else the DAC must clean the clock up. Some digital interfaces, such as SPDIF, have a clock embedded in the data stream, so the DAC must recover the clock from the data stream. This DAC clock recovery is what will clean up noise on the clock, to some degree; modern SPDIF interface chips do a very good job of cleaning the clock.
Eliminating Timing Noise with a Destination-Clocked Digital Interface
Timing noise on the DAC interface can be eliminated by separating the data interface transfer mechanism from the DAC sample clocking. This is done in destination-clocked interfaces, such as 'asynchronous USB', or destination-clocked I2S. In both of those cases, the streamer is a slave to the DAC clock, sending data when requested (exactly as it is in an integrated CD player). Some form of FIFO buffer separates the two clock domains (digital interface domain and DAC clock domain). This method provides a causal barrier between timing noise on the digital interface, and timing noise on the DAC clock; the level of DAC clock jitter is determined entirely by the DAC implementation, although electrical noise coupled to the DAC from the streamer can have an influence on this aspect of DAC performance.
Additional Functions Beyond Bit-True Transmission
Now, we might choose to add other functions (beyond network interface, CODEC and DAC interface) to a streamer; some room correction or EQ processing, or 'euphonic' filtering, or resampling or upsampling. If we choose to do that, then there is potential for variation between performance for streamers using different implementations of those functions.
Summary
In summary, for streamers providing lossless, bit-true transmission of digital audio streams to a DAC, the only way the design of the streamer can influence the audio quality is by the level of electrical and timing noise it imposes on the digital interface to the DAC.
A good streamer needs only to pay careful attention to this aspect of its design; the network interface and CODEC rendering are purely IT functions, and either work perfectly, or are broken. Note that this careful attention must consider the cleanliness of the power supply and any oscillators used in the digital interface. If a destination-clocked interface to the DAC is chosen, it will eliminate timing noise, leaving only electrical noise to be considered.
Likewise, a DAC needs to pay attention to this digital interface, and attempt to minimise the coupling of noise from the digital interface to the analogue output.
A destination-clocked DAC interface may require more circuitry in the DAC, which, in turn, could generate noise that the DAC must prevent from reaching the analogue output.
Firstly, we need to be clear of the functions that a digital streamer performs:
- network interface to receive the stream
- using one of a number of protocols (e.g. DLNA, CCA, RAAT, SlimProto, etc)
- over one of a number of bearers (Ethernet, Wi-Fi, (Bluetooth))
- rendering of streamed CODEC format to PCM or DSD samples
- supporting a number of CODEC formats (e.g. FLAC, WAV, MP3, AAC, DSD, etc)
- transmission of sample stream to DAC
Let's look at where errors may occur in these functions, or where one streamer might be better than another.
Network interface
This is a purely IT function; it has to receive the stream without any data corruption, delivering an error-free CODEC stream to the CODEC.
If the network interface fails to do this perfectly, it is BROKEN. It is all or nothing; it works perfectly, or it is broken. Thus, there is NO potential for variation between performance for streamers using different hardware/firmware for the network interface.
There are multiple causation barriers between timing on the network interface and the DAC clock, which mean that the timing of data on the network interface can have NO effect on the audio quality.
CODEC rendering
For lossless CODEC formats, the CODEC must produce bit-perfect samples, such that the output from the CODEC is exactly the same as the input of the original file before encoding.
If a lossless CODEC fails to do this perfectly, it is BROKEN. It is all or nothing; it works perfectly, or it is broken. Thus, there is NO potential for variation between performance for streamers using different lossless CODECs.
For lossy CODECs, where the output of the CODEC is not identical to the original file before encoding (because lossy formats must be reconstructed), there is scope for use of a better reconstruction algorithm in the CODEC. Thus, there is potential for variation between performance for streamers using different implementations of lossy CODECs. This potential depends on the degree of variation that the CODEC specifications allow for reconstruction, and whether anyone uses anything other than the 'reference implementations', or open-source implementations such as within ffmpeg.
Transmission to DAC
Transmission to the DAC is a digital service. It must transfer samples without error, without lost samples, without gaps, and in the correct order.
If the digital interface fails to do this perfectly, it is BROKEN. It is all or nothing; it works perfectly, or it is broken.
Noise on DAC Digital Interface
However, transmission of the digital sample stream to the DAC requires a physical interface to the DAC. This physical interface can carry noise from the streamer to the DAC. This noise is generated by, or externally coupled into, the electronics within the streamer. This noise may make its way to the analogue output of the DAC. Thus, there is potential for variation between performance for streamers using different hardware for the entire streamer.
Role of the DAC
Part of the role of a DAC is to ensure that noise on its digital interface does not make its way to its analogue output. How well it achieves this will depend on the quality of the design of the DAC, and the level of noise it has to deal with. Think of the DAC as a noise filter, able to attenuate noise by x dB.
Types of Noise
Noise on the digital interface can be electrical noise, or timing noise (aka jitter, aka phase noise). Both sides of the interface (streamer and DAC) can contribute to this noise, since both contain active digital electronics with fast edges, and other circuitry, that generate noise signals.
Electrical Noise
Electrical noise can be reduced by using differential transmission (assuming common-mode noise on the differential interface driver), and by filtering and careful design partitioning in the DAC. Opto-coupling can eliminate electrical noise coupling, but can increase timing noise (as electrical noise at the transmitter is converted to timing noise). Galvanic isolation, using transformers can also eliminate electrical noise coupling, but, again, can transform the electrical noise into timing noise.
Timing Noise
Timing noise is caused by variation of the position of clock edges. Since digital signals are real, physical signals, they have finite rise and fall times, dependent on the slew rate of the drivers. Those drivers also have noise on their power supplies (caused to the electrical activity in the streamer), and this noise couples to the digital signal. Note that optical and galvanic coupling usually have more limited bandwidth than digital electrical interfaces, so have slower edges. At the receiver, the received signal hits a threshold device, which determines the position of the clock transition point. Due to noise on the finite edge of the signal, and noise on the power supply of the receiver (and hence in the threshold voltage), there will be noise on the position of this clock transition point, causing timing noise. If this clock is used directly to clock the DAC (e.g. for some I2S interfaces), this will result in jitter on the DAC output.
Timing noise on the DAC clock causes variation in the timing of DAC samples, which results in frequency modulation of the output signal, including discrete spurii.
Source-Clocked Digital Interfaces
Digital interfaces where the DAC clock is provided by the source either have to have a very clean clock provided by the source, or else the DAC must clean the clock up. Some digital interfaces, such as SPDIF, have a clock embedded in the data stream, so the DAC must recover the clock from the data stream. This DAC clock recovery is what will clean up noise on the clock, to some degree; modern SPDIF interface chips do a very good job of cleaning the clock.
Eliminating Timing Noise with a Destination-Clocked Digital Interface
Timing noise on the DAC interface can be eliminated by separating the data interface transfer mechanism from the DAC sample clocking. This is done in destination-clocked interfaces, such as 'asynchronous USB', or destination-clocked I2S. In both of those cases, the streamer is a slave to the DAC clock, sending data when requested (exactly as it is in an integrated CD player). Some form of FIFO buffer separates the two clock domains (digital interface domain and DAC clock domain). This method provides a causal barrier between timing noise on the digital interface, and timing noise on the DAC clock; the level of DAC clock jitter is determined entirely by the DAC implementation, although electrical noise coupled to the DAC from the streamer can have an influence on this aspect of DAC performance.
Additional Functions Beyond Bit-True Transmission
Now, we might choose to add other functions (beyond network interface, CODEC and DAC interface) to a streamer; some room correction or EQ processing, or 'euphonic' filtering, or resampling or upsampling. If we choose to do that, then there is potential for variation between performance for streamers using different implementations of those functions.
Summary
In summary, for streamers providing lossless, bit-true transmission of digital audio streams to a DAC, the only way the design of the streamer can influence the audio quality is by the level of electrical and timing noise it imposes on the digital interface to the DAC.
A good streamer needs only to pay careful attention to this aspect of its design; the network interface and CODEC rendering are purely IT functions, and either work perfectly, or are broken. Note that this careful attention must consider the cleanliness of the power supply and any oscillators used in the digital interface. If a destination-clocked interface to the DAC is chosen, it will eliminate timing noise, leaving only electrical noise to be considered.
Likewise, a DAC needs to pay attention to this digital interface, and attempt to minimise the coupling of noise from the digital interface to the analogue output.
A destination-clocked DAC interface may require more circuitry in the DAC, which, in turn, could generate noise that the DAC must prevent from reaching the analogue output.
Last edited:

