The USB Audio standard specifies Isochronous transfer protocol. Isochronous transfer guarantees timely delivery of the data but does nothing to ensure the correct reception of the data. With USB 1.1 that was a reasonable trade off because data transfer was slow (12Mb/s) and latencies were large (1ms). An occasional 1-millisecond dropout due to a corrupted packet was preferable to multiple millisecond delays due to retries and interference from other USB traffic. During the initialization of an isochronous device, the USB host reserves enough bus bandwidth to meet the needs of the device. Thereafter, every millisecond, the device gets one chance to send or receive data.
In the early days of USB Audio, dropouts were a common occurrence, whether due to lost packets or PC player software running on slow CPUs unable to keep up with the sample rate. Now, USB 2.0 is the norm, with 40 times the data rate and one-eighth the latency. Still, occasionally I hear little glitches when listening to USB Audio. Is it in the source or in the delivery? Invariably when I back up the file and replay the section where I heard the glitch, it is not there.
Could it be an isochronous USB dropout? To find out, I needed to know what a 125µs dropout sounded like. I wrote a foobar plugin that introduced a periodic 125µs silence accompanied by a visual clue to mark the event. The results were unexpected.
Years earlier I performed a similar experiment simulating 1ms dropouts. Those sounded like ‘negative’ LP ticks. LP ticks are about 1ms in duration and create a large, transient output. The ticks are audible during the loudest and the softest sections of the recorded music and even the lead-in and lead-out grooves. On the other hand, USB dropouts were 1ms of silence; inaudible during inter-track gaps, barely noticeable during soft passages, but most obvious during loud passages.
As expected, the 125µs dropouts were inaudible during inter-track gaps and very quiet passages but during loud passages, the audibility depended on the dominant frequencies and texture of the music. In addition, the audibility depended on the DAC. Each of the three DACs I tried, including old-school multi-bit and new-school delta-sigma, responded differently.
The solution is to use a USB transfer method that guarantees correct reception. That is easy to do with USB 2.0 using either bulk or interrupt transfers. I am working on a DAC with a non-isochronous USB interface that can sustain 40MB/s with zero errors. Now, that’s bit-perfect.
In the early days of USB Audio, dropouts were a common occurrence, whether due to lost packets or PC player software running on slow CPUs unable to keep up with the sample rate. Now, USB 2.0 is the norm, with 40 times the data rate and one-eighth the latency. Still, occasionally I hear little glitches when listening to USB Audio. Is it in the source or in the delivery? Invariably when I back up the file and replay the section where I heard the glitch, it is not there.
Could it be an isochronous USB dropout? To find out, I needed to know what a 125µs dropout sounded like. I wrote a foobar plugin that introduced a periodic 125µs silence accompanied by a visual clue to mark the event. The results were unexpected.
Years earlier I performed a similar experiment simulating 1ms dropouts. Those sounded like ‘negative’ LP ticks. LP ticks are about 1ms in duration and create a large, transient output. The ticks are audible during the loudest and the softest sections of the recorded music and even the lead-in and lead-out grooves. On the other hand, USB dropouts were 1ms of silence; inaudible during inter-track gaps, barely noticeable during soft passages, but most obvious during loud passages.
As expected, the 125µs dropouts were inaudible during inter-track gaps and very quiet passages but during loud passages, the audibility depended on the dominant frequencies and texture of the music. In addition, the audibility depended on the DAC. Each of the three DACs I tried, including old-school multi-bit and new-school delta-sigma, responded differently.
The solution is to use a USB transfer method that guarantees correct reception. That is easy to do with USB 2.0 using either bulk or interrupt transfers. I am working on a DAC with a non-isochronous USB interface that can sustain 40MB/s with zero errors. Now, that’s bit-perfect.