Is XCore the right choice?

First time on the site? Say hello here!
Post Reply
mystic_joe
New User
Posts: 2
Joined: Wed Feb 08, 2017 5:02 pm

Is XCore the right choice?

Post by mystic_joe »

Hello everyone!

I'm new here and I'm glad that I found this community. So hello everyone :) My background is in electrical engineering and I do music production as a hobby. I always wanted to get more into DSP and creation of sound itself so I decided to build my own little sampler. I have knowledge in electronics and also in programming but I've never programmed a uController before, so this whole thing is new to me.

To start, I would have the some questions to make sure XCore is the right choice for me.

As I said, I want to start with a simple sampler. So an array of buttons that just play a specifc sound each. For further development implementation of a simple sequencer would be nice.
I thought of just buying the StartKIT and doing all the examples available. Then maybe move on to a more advanced controller for the sampler project (if necessary).
  • In general, is XMos the right choice for building samplers and synthesizers?
  • Are any commercial synthesizer makers, such as Roland or NI, have an XMos implemented?
  • Are there any DSP libraries available?
  • What would be the best place to start? Are there any tutorials?
Thanks in advance,
Best,
Joe


henk
Respected Member
Posts: 347
Joined: Wed Jan 27, 2016 5:21 pm

Post by henk »

Welcome Joe!

As I work at XMOS I can only provide an unbiased answer to the final questions:

There are DSP libraries available. You can have a look what's inside it, it is on https://github.com/xmos/lib_dsp
You can import the library from the tools. It contains functions for most fixed point functions, try, FIR/IIR filters, matrix ops, FFTs and their inverse, etc. xCORE does not have native floating point, so all is implemented in fixed point to make it efficient. If there are things missing, you can always put a request on GitHub and we will see whether we can add it.

About the place to start: you can download the tools for free and use them for free, including the simulator. They come with a set of app notes and tutorials to get you going.

Hope that helps,
Henk
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am
Contact:

Post by infiniteimprobability »

I also work at Xmos so have to respect our customer's confidentiality but:
In general, is XMos the right choice for building samplers and synthesizers?
XMOS is very good at streaming interfaces (I2S), timing deterministic processing (lots of real time threads make for much easier management of timing). USB audio streaming or HID interface may be handy too.. For sampling, you will need extra memory - our chips have 2 x 256KB for code/data but you can add on an SDR SDRAM wg. 256Mb (32MBytes) for data storage for sampling..
Are any commercial synthesizer makers, such as Roland or NI, have an XMos implemented? but:
There are Xmos based, commercially available, synths on the market (as well as more being designed using XMOS) but I don't think I can share the names :( Sorry..
mystic_joe
New User
Posts: 2
Joined: Wed Feb 08, 2017 5:02 pm

Post by mystic_joe »

Thanks for your answers!

I guess the additional SDRAM with 256Mb should be enough to start with.
Does the StartKIT offer a headphone jack?
Is it possible to also write code in Matlab and compile it to C? Does anyone has experience with that? Matlab would be my tool of choice for DSP.

Best,
Joe
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am
Contact:

Post by infiniteimprobability »

I guess the additional SDRAM with 256Mb should be enough to start with.
Yes, it's a fair bit of memory. Please be aware though that this does not expand the address space - there is no on chip bus controller. The SDRAM would be I/O mapped via an API (read block/write block etc.) so suitable for data buffering.
Does the StartKIT offer a headphone jack?
I'm afraid not - it's a minimal kit designed for absolute lowest cost. Even though physically it's a 2 tile device, one of the tiles is hard fixed to being the debug adapter (USB + logic) for the one user tile remaining. You could do the RPi trick of outputting audio via PWM I suppose. The startkit also uses XS1 which only has 64KB per tile. I think for your kind of application, xCORE200 with 256KB per tile (and more DSP performance due to dual issue and various double length load/store instructions - also much of lib_dsp is based on this ISA). Not sure what you budget is, but the multichannel board https://www.xmos.com/support/boards?product=18334 is a very nice board with ADC/DAC. It doesn't have an SDRAM though.. the forthcoming new xCORE200 slicekit may be a better choice if you need SDRAM support I don't think that's around for another couple of months (I can check if you are interested).
Is it possible to also write code in Matlab and compile it to C? Does anyone has experience with that? Matlab would be my tool of choice for DSP.
Yes - that's been possible for some time https://uk.mathworks.com/videos/generat ... 68964.html. You would need to target the lib_dsp functions to get the best throughput though.
Xmos supports C99 and C++, as well as XC which is the choice for bare metal stuff.
User avatar
BEBDigitalAudio
Experienced Member
Posts: 82
Joined: Thu Nov 11, 2010 7:45 pm

Post by BEBDigitalAudio »

Are any commercial synthesizer makers, such as Roland or NI, have an XMos implemented? but:
There are Xmos based, commercially available, synths on the market (as well as more being designed using XMOS) but I don't think I can share the names :( Sorry..[/quote]

Since I do not work at XMOS, I can reveal some secret I know °-)
Native Instruments is using XMOS chips in their DJ products. And Behringer also use a XS-L2 chip as real time controller in the DeepMind series.
Post Reply