Open-source USB interface: Audio Widget

Will the firmware support 16 bit in the future?

Any special reason 16 bit is not supported?
 

Attachments

  • i2s.jpg
    i2s.jpg
    73.2 KB · Views: 855
Hi 2A3SET,

All the ADC and DAC we are interested in with the USB-I2S module are 24 bit or 32 bit capable devices. It is technically possible to have a version of the firmware to support 16 bit I2S, but we have no plans to use any 16 bit ADC/DAC's :)

To play back 16bit music, the PC host software should be able to convert the samples to 24 bit easily, with dithering and/or other noise shaping techniques to reduce quantization error. The resulting quality of music should be better than playback on a 16bit DAC.

Alex
 
zero padding/shift 16 bit to 24 bit

I am not impressed with external upconverting+oversampling (still stick with NOS DAC). Most of DAC chip these days has oversampling built in already for jitter reduction like ES90xx.

I assume the MCU is generating standard I2S data format (64 bits left+right total with 0 padding) since DIF pin in ES9022/3(audio-widget design) is grounded. Can I just do a simple zero padding 16bit WAV file to 24 bit to let the MCU play 16 bit audio correctly?

sox input.wav −b 24 output.wav
 
Last edited:
I am measuring USB DAC EVMs (using an Audio Precision) as part of my job.
And probably results I measure for the engineers, not something I am directly
allowed to discuss. Will appear in spec sheets later, I would imagine...

Just curious what sort of THD and baseline noise are typical of these devices?
I have no idea if what I have measured was really great, or merely ordinary...
I wasn't asked to, nor did I try to measure anything directly related to jitter...

I did measure big differences depending which media player software was used
for USB test tones... I would have thought them all the same, but they are not.
I don't know if that was because of jitter, or something else.

Observation:
For the same tones. Quicktime was bad, windows media player was very good.
I don't have the luxury to install or try any others at this workstation...
 
Last edited:
The playback software and operating system sound settings make a big difference to the measured THD and noise levels.

The thing to avoid is resampling by the software (if the firmware/hardware us capable of the same sampling rate as the source music). However good the resampling algorithm used, it is never as good as the original source.

The other problem is that often the system default sound setting is 16bits. It has to be manually set to 24bits, otherwise there will be quantization error and noise.

That's why we place great emphasis in "bit perfect" transfer to the DAC.

Jitter is a critical hardware issue. With USB async out with rate feedback, we can clock the DAC directly with low jitter XO with < 1 ps jitter.

We are also trying to make measurements of our AB-1 and USB9022 DAC's with Audio Precision equipment but the friend who is helping us with it is still trying to figure out how to generate a sweep measurement. Usually the AP generates the sweep signal but in our case the USB-I2S is plugged into a PC to play back test tones.

We hope to have some test results soon, although we dont expect earth shattering results as our DAC's are USB powered entirely for the convenience.

Alex
 
Borge has designed the USB-I2S module for this purpose :)

U can mate the middle with a DAC of yout own liking and design !!!

As Borge mentioned, u can just pad zeros to 16 bit sources to make up 24 bits.

The slightly tricky bit is that u want/need to provide the low jitter clock that is used to clock yout DAC back to the USB-I2S module. Thus clock is needed by the module ti throttle control the USB stream from the PC - thus asynchronous with rate feedback :)

Alex

PS. We have successfully demonstrated 44.1-192khz 24 bit playback using an experimental Windows 7 32 bit uac2 driver :). So the same device/firmware will work in uac2 mode under Linux. OSX and Win7.
 
As Borge mentioned, u can just pad zeros to 16 bit sources to make up 24 bits.
I think the point was not the playback of 16 bit source material, but the use of the audio-widget USB-I2S interface with (old) 16 bit (only) DACs!

PS. We have successfully demonstrated 44.1-192khz 24 bit playback using an experimental Windows 7 32 bit uac2 driver :). So the same device/firmware will work in uac2 mode under Linux. OSX and Win7.
Good news. I couldn't care less for myself, but surely there are plenty of windoze users out there that will like that... :cannotbe:
 
Come to think of it, 16 bit DAC's might just ignore the extra bits even with the USB-i2S module sending out 24 bits - so no firmware mods needed. This is bacause the i2s protocol has the MSB coming out first :)

It then boils down to whether the DAC can take the high SCLK freq used to clock up to 32 bit data. In the module, for 48khz sampling, the SCLK or SICk is at 6.144mhz. At 96/192 kHz sampling the SICK is at 12.288Mhz.

Alex
 
Windows 7 installation with audio-widget

I just finished installation the kit from George. Now got stuck get device identified in windows 7.

With program button hold then the reset button, device appeared as AT32UC3A3 under windows device manager, I installed the driver from usb folder under
the FLIP program, then loaded the demo_composite.elf from demo_UAC1_v087_i_WinXP.tar.gz, following is the log,





AT32UC3A3256 - USB - USB/DFU


Device selection....................... PASS
Hardware selection..................... PASS
Opening port........................... PASS
Reading Bootloader version............. PASS 1.0.3
Erasing................................ PASS
Selecting FLASH........................ PASS
Blank checking......................... PASS 0x00000 0x3ffff
Parsing ELF file....................... PASS demo_composite.elf
WARNING: The user program and the bootloader overlap!
Programming memory..................... PASS 0x00000 0x17c1b
Verifying memory....................... PASS 0x00000 0x17c1b
Starting Application................... PASS RESET 0

Summary: Total 11 Passed 11 Failed 0



After this, device got reset, and I could not find any new device in device manager, WidgetControl cannot detect the device as well.

After this I tried the latest UAC2 firmware (I do understand it won't work correctly without UAC2 driver), three devices appeared under windows, one is USB composite device, the other is DG8SAQ-I2C under sound controller, the third one without driver under "other devices", I also try to update driver with AUDWGDT-USB driver with no success.

With wav file playing under foobar, I can see both LED flashing while no sound out, I guess without WidgetControl software, it cannot enable the XO clock correctly, that maybe the reason.

Did I miss anything during setup? Your help is much appreciated.
 
I installed the SDR-Widget driver instead, the device got identified by WidgetControl finally, after this I installed the Audio-Widget driver after new device get detected.
I set it to UAC1_audio although the firmware supports UAC2 (we are still waiting for the Windows UAC2 driver, I tried the Theyson with no success, driver installed but device not working), and it worked now!

Do we get bit perfect (async) with UAC1?
 
Hi,

Under windows with the unified firmware, uac1 is not bit perfect yet (work in progress).

The windows uac2 driver is still experimental, not signed, tested with win7 32 bits only and not ready for public release.

PM me (alexlee188 att gmail dott com) if u would like to join the development team.

Alex
 
What OS you used? If you are use Windows XP, the player is very important. Because your signal may resampling by KMixer. You have better to use Windows Vista/Win7. Select the output sample rate in Advice setting with Audio Control panel. You can get more correctly measurement. Or you can use Mac OS to measuring your USB DAC.

I am measuring USB DAC EVMs (using an Audio Precision) as part of my job.
And probably results I measure for the engineers, not something I am directly
allowed to discuss. Will appear in spec sheets later, I would imagine...

Just curious what sort of THD and baseline noise are typical of these devices?
I have no idea if what I have measured was really great, or merely ordinary...
I wasn't asked to, nor did I try to measure anything directly related to jitter...

I did measure big differences depending which media player software was used
for USB test tones... I would have thought them all the same, but they are not.
I don't know if that was because of jitter, or something else.

Observation:
For the same tones. Quicktime was bad, windows media player was very good.
I don't have the luxury to install or try any others at this workstation...
 
Audio-widget with Black Gate capacitor

Audio-widget with UAC2 driver runs pretty good, a big step up from UAC1 with same 16/44.1 material. Very interesting, even with async mode under windows 7 comparison between the minimalist(andy) audio player and foobar player showed minimalist better, it shares same quality of sound with ecasound under ubuntu studio.

I just upgraded the capacitors around ES9023 to BlackGate N, first tried the VREG (10u) and Pump capacitor (4.7u) to bring SQ to a higher level with silk smooth sound and quieter background, then the bypass for 3.3V (10u) and -3V (4.7u) of ES9023. The onboard regulator ADP-151 sounds pretty good already, although personally I think it worth a try to replace it with Salas shunt (run as external modules). Anyway I am still pretty happy runing with USB bus power so far.
 

Attachments

  • aw-blackgate.jpg
    aw-blackgate.jpg
    222.7 KB · Views: 796
Last edited:
higher async clock for ES9023

I've heard jitter reduction circuit doesn't work very efficiently on ES9023 unless external clock is 50M or up esp for 192K material, while too higher clock can bring in more noise.

Does it worth to use 45/49M dual rate clock (current 22/24M on audio-widget) together with two FF to feed 1/4 rate Atmel? It may be easier to run a seperate async clock like Acko DAC.
 
Audio-widget with UAC2 driver runs pretty good, a big step up from UAC1 with same 16/44.1 material. Very interesting, even with async mode under windows 7 comparison between the minimalist(andy) audio player and foobar player showed minimalist better, it shares same quality of sound with ecasound under ubuntu studio.
What is the minimalist(andy) audio player?

I just upgraded the capacitors around ES9023 to BlackGate N, first tried the VREG (10u) and Pump capacitor (4.7u) to bring SQ to a higher level with silk smooth sound and quieter background, then the bypass for 3.3V (10u) and -3V (4.7u) of ES9023.
You noticed much improvement with upgrading these caps? Did you do them one at a time & note dthe change or in two groups as you said?
The onboard regulator ADP-151 sounds pretty good already, although personally I think it worth a try to replace it with Salas shunt (run as external modules). Anyway I am still pretty happy runing with USB bus power so far.
Supplying a cleaner power to ADp151 will improve it
 
I've heard jitter reduction circuit doesn't work very efficiently on ES9023 unless external clock is 50M or up esp for 192K material, while too higher clock can bring in more noise.
Best solution, I believe, is a local clock at the DAC synchronised back to the transport

Does it worth to use 45/49M dual rate clock (current 22/24M on audio-widget) together with two FF to feed 1/4 rate Atmel? It may be easier to run a seperate async clock like Acko DAC.
?
 
What OS you used? If you are use Windows XP, the player is very important. Because your signal may resampling by KMixer. You have better to use Windows Vista/Win7. Select the output sample rate in Advice setting with Audio Control panel. You can get more correctly measurement. Or you can use Mac OS to measuring your USB DAC.

I use XP32 for all our test platforms, and consider it the "disposable" OS
for device driver compatibility. XP32's surely gonna get trashed with half
dozen conflicting runtime libraries (gawd how I hate Labview!). So, save
nothing on XP thats gonna cause a fit of crying to lose. Win7 as the non-
disposable stable OS, mostly for office paperwork. We try various Linux
from time to time, but it doesn't do anything special to make it stick.

When I test as a guest at TI, its whatever OS the Engineer chooses.