Is XCore the right choice?

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

Is XCore the right choice?

Postby mystic_joe » Wed Feb 08, 2017 5:20 pm

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: 346
Joined: Wed Jan 27, 2016 5:21 pm

Postby henk » Wed Feb 08, 2017 7:42 pm

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 Expert
Posts: 693
Joined: Thu May 27, 2010 10:08 am
Contact:

Postby infiniteimprobability » Thu Feb 09, 2017 10:30 am

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

Postby mystic_joe » Thu Feb 09, 2017 9:50 pm

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 Expert
Posts: 693
Joined: Thu May 27, 2010 10:08 am
Contact:

Postby infiniteimprobability » Fri Feb 10, 2017 10:15 am

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.

Return to “Introductions!”

Who is online

Users browsing this forum: No registered users and 3 guests