Open-source USB interface: Audio Widget

Thanks for the kind words John!

Børge

The most pleasant surprise has been the sound quality (which hardly anyone seems to mention here...!) - I have to say for the price I wasn't expecting anything too fantastic at all, but it's seriously really REALLY good indeed!

Very nice work indeed guys - this wins my personal favourite audio product of the year award ;) ! :D

- John
 
Hi all,

I just tested an experimental Win uac2 driver with the latest 32bit all the way to DAC firmware. The driver somehow remained at 24bits. I suspect that the "old" driver setting of 24 bit with the old audio-widget firmware remains in the W7 system and I will need to manually remove all traces of old drivers and re-installing from scratch again.

If u encounter a similar problem u might want to revert to the old 24bit firmware for now.

Alex
 
Hi Alex,

I'm using the experimental UAC2 driver for which the -nik branch was originally written. None of the listed modes are 32-bit. My guess is that the driver has a few modes compiled in, and simply zero-pads up to 32 bits.

Børge

P.S. This experimental driver is not a sustainable solution. To use UAC2 on Windows we must purchase an expensive license, or write a driver.
 
Hi Demian,

I have tried both players. What I see after initial attempts is that they are oblivious to the sample rate set by the driver.

In Win7 left-click the lower-right Speaker icon, click on the icon above the volume scale, in the new window hit Advanced.

The "sample rate .... in shared mode" is not seen by the player. It may easily be different from the media's sample rate. If a player is active, trying to test a different sample rate from the one in use causes Windows to warn me that the application (player) may stop working. This is even the case if I'm going from the set rate to the one of the media.

I know the driver's Test button causes a sample rate change at the DAC, but I haven't yet 'scoped this with a player active at the same time. But wht this tells me is that the driver's sample rate setting is overriding that of the player, and that the OS may be resampling at will.

Does this match your experiences on Windows??


Børge

Normally Windows resamples everything to a single sample rate, and not with the best algorithm. There are a few players that will work around this, Foobar and JRiver are the first to come to mind. I tried VLC but got nowhere. JRiver supports ASIO. I managed to get the same problem in JRiver switching between a 44.1 and a 176 file. It seems to happen on the transition to a higher sample rate. At least is seems to be a specific repeatable problem.
 
Hi Borge,

I just completely removed and re-installed the experimental driver and the result is the same: only 24 bit modes are available. So it is not an issue with old driver.

Anyway the SQ with the 32 bit all the way firmware is the same - ie not better or worse than before when I was using the 24 bit firmware. Again, PurePlayer somehow sounds better than FooBar2000. But maybe it's my imagination - it is just not as good as playing under Linux :)

This shows up one of the possible limitations of the current crop of Windows uac2 drivers (besides several other limitations you mentioned). It will definitely not work with our true 32 bit DAC's that is coming out.

I agree that the best ultimate solution is to write our own open source uac2 driver (for up to 32 bits) :) Will have wait for some volunteers who can spare 1 man-year :) My experience so far is that folks who started off enthusiastic and thought this undertaking was a piece of cake (or walk in the park etc) soon realized how major this project would be :) As I mentioned before, the only practical way to move forward with writing an open source Win uac2 driver is to have a team project, with experience and expertise in Windows driver implementation, USB, and Audio. I suspect there are only a handful of such talents in the world and they already have their hands full working for big corporations :)

I am just too busy currently with my HAM radio project - ghpsdr3-alex - that Win uac2 driver is just not on my TODO list :)

Also my own prediction is that when we have plenty of Android devices flooding the market (and when the Android OS catches up with the current Linux Kernel with uac2 audio - unfortunately it will not happen with Icescream Sandwidth yet), Win uac2 will not be a big issue anymore - when any cheap tablet or cellphone can play 32 bit uac2 aync out with rate feedback :)

Anyway, that's about my adventure with Win 7 and audio-widget for the moment, I'm booting back to Ubuntu after posting this reply :)
 
Some newbie-type questions here (apologies in advance!):

1) I have a reasonably high quality external 5v supply which I'd like to try out, in place of the USB 5V supply. I realise this isn't as desirable as a dedicated supply for each line, but it'll give me some indication of whether moving away from the USB PSU is beneficial. Have had a look at the schematic but I'm not at all sure where the best place to connect the +5v and GND from the external PSU to the Widget PCB is?

2) If one wished to also use the Widget as a high quality USB to SPDIF converter (so one can try out other external DACs), can a simple SPDIF out feed be taken from the Audio Widget? I realise this wouldn't result in top quality (compared to using the internal ESS DAC) but it would be fun to try out...

Many thanks!

- John
 
Hi John,

Try removing R26 and feed your +5V to pin 2 of J5. Then your supply powers the entire Audio Widget.

Alternatively, remove L2 and put your supply to the + pin of C21 to power the DAC. Or remove L1 and put your supply to the + pin of C31 to power the XOs. These two may be combined.

There are numerous I2S to SPDIF converter chips. You'll have to patch such a device onto the analog board or module. This should be fairly doable, the largest challenge probably being the pinout and control of the converter chip.

Børge
 
Updated with real-time oscilloscope data :)

J River player and non-asio foobar2000 don't seem to have an influence over the sample rate of the DAC. Win7-64 seems to resample to highest available sample rate.

foobar2000 + ASIO4all did set the DAC to 44.1 for an MP3 file in that sample rate. And it changed to 192ksps for FLAC content when I changed to that. But something is wrong with the audio I'm getting. It's quite noisy with UAC2 on Win7-64. Track: "Undring" at http://www.2l.no/hires/index.html I'll try it in Linux as well.

I'm starting to suspect lack of sample rate change as a reason for poor SQ on Windows...

Børge

Hi Demian,

I have tried both players. What I see after initial attempts is that they are oblivious to the sample rate set by the driver.

In Win7 left-click the lower-right Speaker icon, click on the icon above the volume scale, in the new window hit Advanced.

The "sample rate .... in shared mode" is not seen by the player. It may easily be different from the media's sample rate. If a player is active, trying to test a different sample rate from the one in use causes Windows to warn me that the application (player) may stop working. This is even the case if I'm going from the set rate to the one of the media.

I know the driver's Test button causes a sample rate change at the DAC, but I haven't yet 'scoped this with a player active at the same time. But wht this tells me is that the driver's sample rate setting is overriding that of the player, and that the OS may be resampling at will.

Does this match your experiences on Windows??


Børge
 
Last edited:
Hi all,
Just wanted to say you are making very good progress guys, thumbs up :) It seems that everything we could wish for couple years ago is becoming available.
Just a quick one about all that uac2 on windoze hassle that still haven't changed. How about running some optimized linux distro on virtual box from win ? Sorry if that sounds bunkers, but some years ago I didn't had any problems running vmware with xp from ubuntu. Could use usb stick and reach all my files from xp, so maybe something backwards could be possible ?
P.S. So what that it would eat your 2GB ram for lunch and put 90% cpu load, go and listen to some music ! :joker:
 
Hi John,

Try removing R26 and feed your +5V to pin 2 of J5. Then your supply powers the entire Audio Widget.

Børge

Many thanks for that suggestion - looks like an easy mod so will try that later today. My only criticism of the sound of this unit (stock) is that it can sometimes sound a little 'sharp' and lacking in body. I feel a better PSU would probably address this issue - will find out soon ;)

Do I need to then cut the mini-USB 5V leg, so it doesn't pollute the 'new' external 5V supply?

As to the I2S to SPDIF sounds a bit beyond my abilities at the moment alas. I'll stick to what I have for now, and getting the best sound I can from these two modules :)

Thanks.
 
Last edited:
Playback - Actual sample rate

There seems to be some confusion as to which players / OSes actually perform sample rate conversion and which are bit perfect.

Banshee, the default player in my Ubuntu installation kept the word clock at 44.1 with 192 content.

Can someone please suggest a player for Linux and explain to a Linux noivice how to set and check the sample rate in the OS and player?

I'm throwing out Ubuntu for Linux Mint by the way. I can't find anything in the GUI...


Børge
 
Hi John,

look at the module sch and ab sch at the same time and see how the VBUS / VDD is set up :)

VBUS is sent down to the AB to be filtered etc. before entering VDD to the module LDO. The MCU needs to _sense_ VBUS but is not powered by it. A few posts back I linked to a conversation I had with Atmel support about this.

Børge
 
Again, PurePlayer somehow sounds better than FooBar2000. But maybe it's my imagination - it is just not as good as playing under Linux :)
the only way to get a chance for decent sound from windoze is by-passing as much of it as possible... that is, using ASIO.

(and possibly removing/disabling as much of the OS as possible, too. That is, "cMP²". Then of course one may ask why not use Linux instead... but that's another story. ;) ).

IMO the only open-source windoze driver effort that may make sense would be an UAC2 ASIO driver.

Such a driver will never happen from M$, and it is unlikely that anyone else would release one which is not tied to some specific hardware.

Oh, ASIO4ALL is not an option. Reportedly the sound with it is nowhere near that of a "true" native ASIO driver (of course that was tried with hardware which allows both options, such as Asus Xonar Essence, etc).
 
Last edited:
Børge: Ahaa I see what you mean now :D Super! I'll get modding later today then! Thank you.

UnixMan: Interesting - I'll try that. In regards to the supply lines, do you mean cap positions: C21/31/28?

Already using the ferrite beads - Surprising how clean the stock PSU is actually. It just needs a touch more solidity/body to sound REALLY good. Hopefully the mods you mention plus my PSU will help ;)
 
Banshee, the default player in my Ubuntu installation kept the word clock at 44.1 with 192 content.
there is an almost countless number of players, most of which are good. For simple/easy/light I can suggest the already mentioned "gogglesmm" or "audacious". But "banshee" is just perfect. It's not the player that matters!

Most modern Linux desktop distributions (including Ubuntu) have adopted "pulseaudio", an audio "middleware" which takes care of handling different audio inputs and outputs, mixing and/or routing the different streams, etc.

Of course, that requires that all the streams MUST be resampled to a single, common s/r. This is what is normally done also by the windoze audio stack, for the very same reasons. In windoze the solution is to by-pass everything and use ASIO.

In Linux, the simple and definitive solution is to get rid of pulseaudio. Just unistall it:

Code:
apt-get purge pulseaudio
and instruct whatever player you like to directly use ALSA instead.

BTW: for really best SQ, do use "Voyage MPD" Linux on a dedicated player machine and control it remotely using something like "GMPC". The Voyage MPD optimized kernel does make some difference WRT stock general purpose kernels. The light and clean environment with a minimum of extra processes likely helps, too.
 
Last edited:
There seems to be some confusion as to which players / OSes actually perform sample rate conversion and which are bit perfect.

Banshee, the default player in my Ubuntu installation kept the word clock at 44.1 with 192 content.

Can someone please suggest a player for Linux and explain to a Linux noivice how to set and check the sample rate in the OS and player?

I'm throwing out Ubuntu for Linux Mint by the way. I can't find anything in the GUI...


Børge


You can always check under /proc/asound/card0/<yourcard> at which bit depth and sample rate your cards works actually.

Linux is like Lego, so you can take care by yourself. A first measure would be to use hw instead of plughw, so alsa would not resample anything by itself.

I use mpd, a music server daemon that could run on a headless machine and could be controlled by numerous devices including browser plugins or smartphone apps. You can chain it to convolvers or other DSP software if you like. The howto and example config files are (almost) self explanatory.

Rüdiger
 
My "extremely personal" experience with WinXP and "custom made" UAC2 drivers .... and with foobar2000: everything is OK, sample rates are all accepted and played without problems. Sound quality is constantly high, with hard to hear differences when upsampling (with SOX plugin) from 44.1 to whatever else.

"Reasonable" behaviour (not perfect, some little delay and sometimes hic up, but perfectly tolerable) when switching songs, and even when changing the upsampling rate while playing.

From what I read (on the forum) and see (on my setup) the firmware should be quite OK since the versions of Chrystmas .... if you have so much problems maybe the reason is in the PC / OS / driver ....