Live Pro-Audio Mixing? Mixing? Reverb? USB HID? Ethernet/Wireless Control?

Technical discussions around xCORE processors (e.g. General Purpose (L/G), xCORE-USB, xCORE-Analog, xCORE-XA).
JayShoe
Junior Member
Posts: 5
Joined: Fri Jan 05, 2018 1:04 am

Live Pro-Audio Mixing? Mixing? Reverb? USB HID? Ethernet/Wireless Control?

Postby JayShoe » Fri Feb 09, 2018 12:26 am

Hello,

I know a lot of the professional audio companies are using SHARC processors to do the heavy lifting in live pro-audio mixing decks. What's the capability of an XMOS processor to perform live mixing tasks? If I need an XMOS+SHARC wi would look at the Danville Signal solutions (XMOS + SHARC), but if I can get away with XMOS only I would look at something like the miniDSP USBStreamer Kit (16 core XMOS only). So, how would an XMOS handle the tasks independently? Are there libraries that would make this easier?

Latency?
You'll have multiple ADC channels running into the XMOS via I2S. I know the throughput is rated at 3ms, an engineer I spoke with measured around 2ms from record to playback. What's the expected latency for mixing multiple channels? Is there any example code out there for mixing the channels? From what I've read, we need the latency to be less than 7ms to deem acceptable, but we strive for much better. What can we expect?

Reverb?
Say you take X number of those said channels, mix them, and then add a simple reverberation effect to the mix. Can the XMOS handle this? Again, are there any available shared code to make a simple reverb work?

USB HID?
We need to control the DSP via USB. Is there any example code out there that would make this easy for us? I've seen solutions that run over HID, MIDI, or most popularly TCP/IP.

Graphical Environment?
Some of the DSP's use Audio Weaver, Sigma Studio, or some graphical programming solution to make it easier to program the DSP. What's the possibility of the XMOS to host Audio Weaver by itself without a SHARC?

Thanks for the info,
Jay
User avatar
infiniteimprobability
XCore Legend
Posts: 1114
Joined: Thu May 27, 2010 10:08 am
Contact:

Postby infiniteimprobability » Thu Feb 15, 2018 9:24 am

Latency?
... What can we expect?


The normal architecture for DSP is to add a processing core which introduces a one-sample delay. The USB audio design is sample by sample (rather block) on the device end so there is no block delay. Mixing is just a dot product and you can approach 2 cycles per product for really efficient implementations (this is the limit) on newer devices (xcore 200).
There is an example mixer in the USB Audio reference design (free to download and that offers the following using 2 x 50MHz cores which was written for XS1: "The mixer takes two cores and can perform eight mixes with up to 18 inputs at sample rates up to 96kHz and two mixes with up to 18 inputs at higher sample rates."
So I don't anticipate a mixer to be adding any significant latency.

Reverb?
Can the XMOS handle this? Again, are there any available shared code to make a simple reverb work?


The xCORE is a pretty good fixed point DSP, amongst other things. We do a huge amount of audio DSP in voice applications for example.
There are various examples around of reverb including: https://www.xmos.com/published/xmos-xso ... on=&page=3


USB HID?

With or with USB audio?
Without - https://www.xmos.com/support/appnotes/AN00129
With - https://www.xmos.com/support/software/uac2
TCP is also no problem - see various lib_xtcp examples

Graphical Environment?
Some of the DSP's use Audio Weaver, Sigma Studio, or some graphical programming solution to make it easier to program the DSP. What's the possibility of the XMOS to host Audio Weaver by itself without a SHARC?


I am afraid not presently. While there are graphical tools for debug (scope view, waveform view..) DSP design is done via C source. We use Python and for exploring DSP before C implementation, as well as for generating coefficients etc.
JayShoe
Junior Member
Posts: 5
Joined: Fri Jan 05, 2018 1:04 am

Postby JayShoe » Thu Mar 01, 2018 3:21 pm

Hello infiniteimprobability,

I just realized this post was live and responded to. This is a great news for a Thursday morning! I just adjusted my notification settings, but it seems that I do not receive the notices via email for some reason. I'll watch out.

I think that xMOS only design would work fine for my purpose. I believe this post describes in pretty basic detail what I'm trying to do. USB Audio, USB HID, 8 Channels of ADC, 2 channels of DAC, Mixing, Reverb, done. Of course there are a few more details other than that, but from your response I do believe it is all possible to prototype on an xCORE-200 Multichannel Audio Board. This board should be powerful enough right?

As for the graphical environment - I don't need it. My project is relatively simple. I want USB Audio, some microphones and line inputs, some mixing, some reverb, and HID control over the mix. I don't need customization beyond that point - just a rock solid USB Audio Soundcard with built in DSP Mixer for mics and line levels.

The job description would be to implement the above features using the xCORE-200. Once that's done we'll look to creating our own custom hardware, or piecing together other commercial boards to get the job done. The challenge is finding a coder who is able and willing. I'm all ears! Anyone want to take up the task of implementing this on an xCORE-200? :-)

Jay
User avatar
infiniteimprobability
XCore Legend
Posts: 1114
Joined: Thu May 27, 2010 10:08 am
Contact:

Postby infiniteimprobability » Tue Mar 06, 2018 12:37 pm

This board should be powerful enough right?

Yes -plenty of power left in this chip. You'll have about 2/3 of the CPU resources left and most of the memory for your own DSP.

There's an example of patching in DSP to the USB audio reference design here:

viewtopic.php?f=8&t=6305

Who is online

Users browsing this forum: No registered users and 16 guests