Configuration defines#

An application using the USB audio framework provided by lib_xua needs to be configured via defines. Defaults for these defines are found in lib_xua in xua_conf_default.h.

An application should override these defines in an optional xua_conf.h file or in the CMakeLists.txt for the relevant build configuration.

This section documents commonly used defines, for full listings and documentation see the lib_xua.

Code location (tile)#

AUDIO_IO_TILE#

Location (tile) of audio I/O. Default: 0.

XUD_TILE#

Location (tile) of audio I/O. Default: 0.

MIDI_TILE#

Location (tile) of MIDI I/O. Default: AUDIO_IO_TILE.

PLL_REF_TILE#

Location (tile) of reference signal to CS2100. Default: AUDIO_IO_TILE.

SPDIF_TX_TILE#

Location (tile) of SPDIF Tx. Default: AUDIO_IO_TILE.

Channel counts#

NUM_USB_CHAN_OUT#

Number of output channels (host to device). Default: NONE (Must be defined by app)

NUM_USB_CHAN_IN#

Number of input channels (device to host). Default: NONE (Must be defined by app)

I2S_CHANS_DAC#

Number of I2S channesl to DAC/CODEC. Must be a multiple of 2.

Default: NONE (Must be defined by app)

I2S_CHANS_ADC#

Number of I2S channels from ADC/CODEC. Must be a multiple of 2.

Default: NONE (Must be defined by app)

DSD_CHANS_DAC#

Number of DSD output channels.

Default: 0 (disabled)

Frequencies and clocks#

MAX_FREQ#

Max supported sample frequency for device (Hz).

Default: 192000Hz

MIN_FREQ#

Min supported sample frequency for device (Hz).

Default: 44100Hz

MCLK_441#

Master clock defines for 44100 rates (in Hz).

Default: NONE (Must be defined by app)

MCLK_48#

Master clock defines for 48000 rates (in Hz).

Default: NONE (Must be defined by app)

Audio Class#

AUDIO_CLASS#

USB Audio Class Version.

Default: 2 (Audio Class version 2.0)

System feature configuration#

MIDI#

MIDI#

Enable MIDI functionality including buffering, descriptors etc. Default: DISABLED.

MIDI_RX_PORT_WIDTH#

MIDI Rx port width (1 or 4bit). Default: 1.

S/PDIF#

XUA_SPDIF_TX_EN#

Enables SPDIF Tx. Default: 0 (Disabled)

SPDIF_TX_INDEX#

Defines which output channels (stereo) should be output on S/PDIF. Note, Output channels indexed from 0.

Default: 0 (i.e. channels 0 & 1)

XUA_SPDIF_RX_EN#

Enables SPDIF Rx. Default: 0 (Disabled)

SPDIF_RX_INDEX#

S/PDIF Rx first channel index, defines which channels S/PDIF will be input on. Note, indexed from 0.

Default: NONE (Must be defined by app when SPDIF_RX enabled)

ADAT#

XUA_ADAT_TX_EN#

Enables ADAT Tx. Default: 0 (Disabled)

ADAT_TX_INDEX#

Defines which output channels (8) should be output on ADAT. Note, Output channels indexed from 0.

Default: 0 (i.e. channels [0:7])

XUA_ADAT_RX_EN#

Enables ADAT Rx. Default: 0 (Disabled)

ADAT_RX_INDEX#

ADAT Rx first channel index. defines which channels ADAT will be input on. Note, indexed from 0.

Default: NONE (Must be defined by app when XUA_ADAT_RX_EN is true)

PDM Microphones#

XUA_NUM_PDM_MICS#

Number of PDM microphones in the design.

Default: 0

DFU#

XUA_DFU_EN#

Enable DFU functionality.

Default: 1 (Enabled)

HID#

HID_CONTROLS#

Enable HID playback controls functionality.

1 for enabled, 0 for disabled.

Default 0 (Disabled)

CODEC Interface#

CODEC_MASTER#

Defines whether XMOS device runs as master (i.e. drives LR and Bit clocks)

0: XMOS is I2S master. 1: CODEC is I2s master.

Default: 0 (XMOS is master)

USB device configuration#

VENDOR_STR#

Vendor String used by the device. This is also pre-pended to various strings used by the design.

Default: “XMOS”

VENDOR_ID#

USB Vendor ID (or VID) as assigned by the USB-IF.

Default: 0x20B1 (XMOS)

PRODUCT_STR#

USB Product String for the device. If defined will be used for both PRODUCT_STR_A2 and PRODUCT_STR_A1.

Default: Undefined

PRODUCT_STR_A2#

Product string for Audio Class 2.0 mode.

Default: “XMOS xCORE (UAC2.0)”

PRODUCT_STR_A1#

Product string for Audio Class 1.0 mode.

Default: “XMOS xCORE (UAC1.0)”

PID_AUDIO_1#

USB Product ID (PID) for Audio Class 1.0 mode. Only required if AUDIO_CLASS == 1 or AUDIO_CLASS_FALLBACK is enabled.

Default: 0x0003

PID_AUDIO_2#

USB Product ID (PID) for Audio Class 2.0 mode.

Default: 0x0002

BCD_DEVICE#

Device firmware version number in Binary Coded Decimal format: 0xJJMN where JJ: major, M: minor, N: sub-minor version number.

NOTE: User code should not modify this but should modify BCD_DEVICE_J, BCD_DEVICE_M, BCD_DEVICE_N instead

Default: XMOS USB Audio Release version (e.g. 0x0651 for 6.5.1).

Volume control#

OUTPUT_VOLUME_CONTROL#

Enable/disable output volume control including all processing and descriptor support.

Default: 1 (Enabled)

INPUT_VOLUME_CONTROL#

Enable/disable input volume control including all processing and descriptor support.

Default: 1 (Enabled)

Mixing parameters#

MIXER#

Enable “mixer” core.

Default: 0 (Disabled)

MAX_MIX_COUNT#

Number of seperate mixes to perform.

Default: 8 if MIXER enabled, else 0

MIX_INPUTS#

Number of channels input into the mixer.

Note, total number of mixer nodes is MIX_INPUTS * MAX_MIX_COUNT

Default: 18

Power#

XUA_POWERMODE#

Report as self or bus powered device. This affects descriptors and XUD usage and is important for USB compliance.

Default: XUA_POWERMODE_BUS