How to enable 32bit resolution on USB Audio

Sub forums for various specialist XMOS applications. e.g. USB audio, motor control and robotics.
Frickler
Junior Member
Posts: 7
Joined: Mon May 05, 2014 11:21 am

Post by Frickler »

I imported the latest and unchanged version of the build. The problems with the customdefine.h still exist. The working directory is user/workspace.
With an absolute path, the custom.h is included correctly.
Must I set a path manually in the IDE?

With the included customdefine.h, my Makefile is working without any problem, and I get all
three audio formats (16/24/32bit) on the PC.

When I enable native DSD the STREAM_FORMAT_OUTPUT_3 disappears. Is this behavior correct?


pasnew
Member
Posts: 15
Joined: Wed Jan 16, 2013 7:28 pm

Post by pasnew »

Hi,Ross

I met the same problem. I've defined

Code: Select all

#define DOUTPUT_FORMAT_COUNT                        3
#define STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS      32
#define STREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS      24
#define STREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS      16
Then I got 3 output format in Windows correctly.

But if I define

Code: Select all

#define NATIVE_DSD			1
#define DSD_CHANS_DAC       2
Then the 32bit is disappeared.

Do you have any advice ?
thanks.
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am

Post by infiniteimprobability »

The reference design only supports 3 formats total currently. This corresponds to 3 USB interface alternates (+1 for null/streaming stop). Native DSD adds a "Raw" 32b interface, so with 3 PCM ones defined at the same time as DSD native (total 4 requested), one of the PCM ones get bumped.

There are two options:
- Reduce your PCM count to 2. Eg. Just have 32b and 16b
- Modify the code to add a 4th alternate

The second option is a reasonable amount of work - you'd need to start in devicedefines.h and add

Code: Select all

STREAM_FORMAT_OUTPUT_4_RESOLUTION_BITS
in all of the right places and extend descriptors.h to present the extra interface on enumeration, as well as extend endpoint0.c too. However, it's all doable and I don't see any technical problems in extending this.

The ref design should probably warn against asking for 3 formats + DSD native.