DSD audio over USB: an XMOS Reference Design implementation

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
so will this stuff run on other hardware that uses the top shelf XMOS USB UAC2 chips? needs FW loader i guess?

It is designed to work with XMOS USB Audio 2.0 Reference Design,
or any other implementation that uses the same processor (XS1-L1)
with the same pin I/O layout as in reference design.
A firmware loader is available by XMOS but I have not really tried it.

I think the XMOS USB Audio 2.0 Reference Design is the cheapest
and one quite good solution for anyone who wants to have all the audio
formats delivered to his/hers DAC without the hassle of proprietary drivers
and limited OS compatibility.

Nevertheless, as far as I know, this is the first and only, for the time being,
public available solution of DSD audio over USB standard ver 1.0.

By the way, I would like to thank you all for your kind words and support!
 
DAC low-pass filter for DSD?

I don't know any diy DAC which offers DSD-mode as a standard feature.
I can devise a way to set a WM8741 DAC, for example, into DSD-mode via pin 27, but do I then need to modify the output stage to include an analogue filter to remove high frequency energy? The WM8741 datasheet mentions this.

sp502 and adelias, did you add a filter to your Sabre32 DAC?
What's involved?

Thanks
 
I don't know any diy DAC which offers DSD-mode as a standard feature.
I can devise a way to set a WM8741 DAC, for example, into DSD-mode via pin 27, but do I then need to modify the output stage to include an analogue filter to remove high frequency energy? The WM8741 datasheet mentions this.

sp502 and adelias, did you add a filter to your Sabre32 DAC?
What's involved?

Thanks

In the datasheet of WM8741 DAC two DSD compatible modes are mentioned: "DSD DIRECT" and "DSD PLUS".
DSD PLUS mode converts the DSD bitstream to PCM so there is nothing to worry about.
DSD DIRECT mode does absolutely nothing (almost). For this mode a low-pass filter
is needed to reconstruct the analog signal from the PDM one.

But then you could just add a low-pass filter directly after the XMOS and have the same result.
I have done it and I saw the analog waveform on my oscilloscope.
With an addition of a proper buffer one can get a true usable output.
Of course in DSD the low-pass filter plays the most significant role...

Buffalo32 DAC takes care about everything internally, so any proper I2V does the job for both PCM & DSD.
We just listen to the music, we did no modifications to our equipment.

But you have already mentioned two DACs used by the DIY community that are able to handle DSD,
thus what do you mean by saying "DSD-mode as a standard feature"?
 
@linuxfan: the sabre was designed to take dsd as a standard input, no additional filter needed

sp502: ok, i guess i'll just test it out, afaik the usb board i'm using uses the top of the line xmos chip the one with multichannel capability. i run mac so its native 'driverless' operation.

there have been some experiments using dsd to drive digital amps directly from a xilinx chip and the EXAU21 as well. seems like an interesting area bypassing several processes should if handled well prod7uce excellent results i would think.
 
sp502: ok, i guess i'll just test it out, afaik the usb board i'm using uses the top of the line xmos chip the one with multichannel capability. i run mac so its native 'driverless' operation.

When I'll have some free time I will make the proper modifications in the MC board code
and I will give you the suitable firmware to test it!
I don't think the current firmware can be used in your board...
 
its called titan, theres a few around the forum; its the reciever from a rather high end dac that is also available standalone, i'll find out what chipset, but i think there is only one or 2 of the xmos chips capable of 4 x 32/384 or 8 x 32/192 like this one
 
I just tried the encapsulation software and it works fine.
At first I made a few mistakes using sacd_extract to get the proper file format form my iso rip, but thanks to some help for sp502 I have succeeded. Anyone scratching his head with sxacd_extract options, use the following:
sacd_extract.exe -2 –p –c –i”inputISOimage”

Encapsulated files work fine with win7->foobar->wasapi . So it should be possible with any bit perfect player.
Encapsulating is useful for testing purposes but not a final solution. Proper player support is essential. But everything seems closer now :)

I still get a few clicks&pops while changing files in foobar. If I have a playlist that includes mixed files say 44.1/16, 88.2/24, DSD encapsulated. When double clicking another song interrupting the one that is currently playing, while changing file and sample rate I get a clicking or hissing sound. When it happens I can see LED_B go off and then on in a second or so. That is a player-driver problem I suppose, some buffers are cleared and the audio interface is reset.

Back to linux and the special mpd from Jurgen Kramer, I seem to be experiencing the same clicks when distracting the playlist and change from a PCM file to a DSD file. LED_B keeps on so I guess mpd does a better job with the driver and all subsystems – keep the oil burning. But I can see buffalo32s lock-led blink for a fraction of a second.
Thankfully uninterrupted DSD playlists seem to work fine. I’ll have to do more listening tests and hope to have some more good news to report.
 
Encapsulating is useful for testing purposes but not a final solution. Proper player support is essential. But everything seems closer now :)

Thanks tmavr for the detailed report!
All the clicking and unlock problems are gone in my modified version of mpd that supports DoP v1 standard,
ask my excellent beta tester adelias...
I am also working on a foobar2000 component, but my schedule is full and it won't be ready any time soon.
 
AKM4399 and AKM4396 (or is it AKM4393?) also have native dsd and one presumes they handle the filtering also. i've been meaning to try out skipping the dac also and just making a nice LPF after the dsd stream, quite intriguing, this should produce very high measured performance only limited by the filter
 
Thanks for that info on the component and those AKM chips. I need to upgrade anyway, my soundcards are all maxed out at 24/96 and my dacs are Philips TDA1543/1541A/1545 based. I see there is a solution for AES/EBU yet for future needs I want to have that 352.8kHz hardware in my toolbox. I'll be checking in to watch the developments as they unfold.
 
Last edited:
Discovered a bug in the DSDtoPCM encapsulate Tool that in some cases
the two markers were mixed in each stereo sample pair, thus disabling the DSD output.
Now it is fixed and should have no problems.

Also I should warn you that the new VLC (2.0.1) for Mac OS seems to be broken
and does not output bitperfect when set at 100% volume. So for experiments
use the older one (I use version 1.1.9).

For those who would like to go a step further my good friend adelias helped me
to build a live CD based on the Voyage MPD distro with a DSD capable version of the mpd.
Just boot it with your XMOS device plugged in, add some .dff files with a USB flash drive and enjoy...
You can get it from here: Voyage MPD - DSD distro

Have fun!

Due to great public demand I implemented a DSD-to-PCM encapsulation application.

You may download the beta from this link: DSDtoPCM encapsulate Tool

It is not perfect and it supports only stereo files for the time being,
but at least provides DSD compatibility to all current bitperfect
playback applications.

adelias helped with the beta testing as always, thanks mate!

Enjoy!
 
Another component to play DSD files that can be used in Foobar is DSDIFF Decoder.

This foobar2000 component will convert DSD to PCM and thus defeats the purpose of this custom firmware for the XMOS board. The basic idea behind this firmware is to use the XMOS board to pass DSD natively via I2S to a DAC that supports DSD.
 
Last edited:
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.