News:

SMF for DIYStompboxes.com!

Main Menu

Audio Effects DSP Board

Started by markseel, June 13, 2016, 11:53:46 AM

Previous topic - Next topic

markseel

Quote from: loopmasta on January 03, 2017, 11:46:42 AM
Do you sell this board as a kit?
Yes I'm planning on that.  I'm working to get the boards fabricated and assembled by a contract manufacturer.

Quote from: loopmasta on January 03, 2017, 11:46:42 AM
By the way the github link above is not working.
OK - I'll get that fixed and also update the code to support the additional 32-bit cores.

pruttelherrie

Quote from: markseel on December 29, 2016, 11:50:39 PM
This is a powerful board.  The 32-bit core count was upped from 8 to 32, memory upped from 256 kB to 1024 kB.  You could use this board for: 150 msec (or more) of IR/cabsim, 2 to 48 channel USB audio, 16k to 768k sample rates, etc.

Here's the digital board (XMOS XUF232, power supplies, JTAG, I2S and I2C interfaces, and USB connector):
[snip]
I'll post the analog board that stacks on this digital board soon.
Mark, so if I understand this correctly, it would be possible to make a multitrack (say 16 inputs) USB audio interface with this board? And then have the DSP do sub-mixing for a number of monitor outputs?
If so, how would this work in practice? I see one would need to add I2S ADC's and DAC's and add microphone preamps.
Does the chip present itself as a generic USB-audio device?

Definitely interested in a kit-board then!

markseel

The device presents itself as USB Audio class 2.0 and USB MIDI device.  So it's basically a USB audio to I2S and USB to UART bridge with DSP capability.

The firmware can be configured to support up to 32x32 channels (48x48 eventually) audio channels.  For these high channel counts the I2S would be configured to support time-division multiplexed I2S (TDM).  Using the 4-bit ports you could to do I2S, I4S, I8S or I16S on 4 input GPIO's and 4 output GPIO's (64x64 I2S total channels).  So for your application you could either do 1 x I16S, 2 x I8S, or 4 I4S.  There's many CODECs/ADCs/DACs that support I2S/TDM.

USB audio class 2.0 and I2S/TDM can be implemented on a single tile XMOS device (8 cores - like an XUF208 device).  This board is 4 tiles (XUF232 device with 32 cores) so you'd be leaving perhaps 16 to 24 32-bit cores unused.  But if you don't care about that then this board would do the job and you'd have lots of cores for DSP.  BTW mixing audio at 16 or 32 channels in both directions could likely be implemented on one 32-bit core.

pruttelherrie

Interesting.

How would you then configure the mixers? Over the USB MIDI? Leftover cores can always be used for additional EQ etc on the monitoring channels, or for pre-recording processing.

How difficult is such a project going to be? I do program AVR's and I just started getting into the FV-1, but this is going to be 100% new for me. To be honest, I'd rather focus on the hardware :)

markseel

Yes you'd use USB MIDI.

The SDK for the board defines 'properties' that are used for configuring this sort of stuff (EQ settings, filter parameters, lookup tables, impulse response coefficients, et).  Anytime MIDI data is received over USB it gets distributed to each of the 24 32-bit cores that are used for your custom DSP stuff - in real time.

A property is a 32-bit ID followed by four 32-bit data values for a total property size of 20 bytes.  Assigning the ID in such a way that it doesn't collide with other effects parameters is up to the effects programmer and the community - the firmware doesn't enforce this (i.e. it provides mechanism but does not specify policy).

One approach would be to use one 32-bit ID per four EQ channels where each of the 4 data values holds an EQ band setting (like 0 to 31 representing -15 to +15 dB of gain in 1dB steps) and indexing a table of EQ band filter BiQuad coefficients that are precomputed and stored as arrays of data.

Another approach would be to use one 32-bit ID for each BiQuad filter in the EQ.  So for a 31-band EQ with each band's response set by two BiQuads you'd have 62 ID's and you'd send your BiQuad data from your application running on the PC (or RaspberryPi, etc).

You'd have to consider the noise (zipper noise or pops/clicks) due to changing filter coefficients.  There are straight-forward ways to handle this though.

I'll write up an example EQ for the SDK.



markseel

Thinking of doing a Kickstarter campaign to raise money for professional PCB design and manufacturing to get this board right.  Any thoughts on whether or not there'd be enough interest in this board/kit to succeed with a Kickstarter fund raising campaign?

vigilante397

I'd be interested. I haven't been following this thread the whole time, is there a demo somewhere showing the board in action? I would love to see it working ;D
  • SUPPORTER
"Some people love music the way other people love chocolate. Some of us love music the way other people love oxygen."

www.sushiboxfx.com

markseel


Ice-9

Quote from: markseel on January 05, 2017, 01:44:02 PM
Thinking of doing a Kickstarter campaign to raise money for professional PCB design and manufacturing to get this board right.  Any thoughts on whether or not there'd be enough interest in this board/kit to succeed with a Kickstarter fund raising campaign?

I don't see why it wouldn't succeed as a Kickstarter Campaign, A lot of success with Kickstarter is down to good presentation and spreading the word well enough. I suppose how much you need raise would also be a big factor.  I have always thought the line you are following with this DSP is quite different and unique to other DSP board/kits so it very well may benefit from Kickstarter promotion.

www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

Digital Larry

I'd contribute to a Kickstarter.  My concern at this point is that if you go to the top of the performance heap you are essentially putting forth the heart of a gigantic mixing console with assignable effects and all that, and it's not at all clear to me how the "average" person is going to pull together all the I/O and UI to leverage that amount of processing power.   Also the field seems to be getting a bit more crowded recently what with SparkFun having a pedal kit that uses a Teensy, and the Bela gadget based on a BeagleBone Black.  It would be good to have some iterations or versions of this that would be ready to go to perform a smaller specific task, e.g. the IR speaker sim you initially proposed.
Digital Larry
Want to quickly design your own effects patches for the Spin FV-1 DSP chip?
https://github.com/HolyCityAudio/SpinCAD-Designer

markseel

#70
Great feedback - keep it coming  :)

I'd like to get a sense of how many people would be interested in a board.  Th XEF232 is expensive and I estimate a BOM for this board to be around $35-$50 depending on parts purchasing volumes.  So maybe $100 for the board to cover R&D, BOM, assembly/fabrication, etc.

I'm still planning on a daughter board with ADC/DAC and analog circuitry for guitar applications.  That board wouldn't be very expensive.  Or folks could interface to their own analog board via I2S.

Yep it's a bit of a beast and offers way more DSP than many folks might need at the start - just one core can do multiple speaker crossovers or a 31-band EQ.  Impulse responses takes a lot of DSP - about one core for every 12.5 msec (at 48 kHz).  Overdrive effects, done properly with up/down sampling, look-up tables with interpolation, anti-aliasing filtering, and tone shaping takes about one core per gain stage.

If there was a community site that hosted effects that could downloaded then folks could chain many effects and perhaps then then the DSP power could be utilized (e.g. 3xOverdrive-->multi-voice chorus-->cab sim).  I can get that going with sample/starter effects and a command-line utility to load the effects via USB MIDI.  You could use MIDI to select different chains, change parameters of effects in the chain, set how USB audio is used (to record guitar, mix effects output with computer audio, etc).

I don't have the time for a nice multi-platform GUI application (like an effects builder and/or configurator).  But others could make one since the DSP board is just a USB MIDI device.  Another idea is to have a Raspberry Pi act as a USB MIDI host and send MIDI to control effects parameters based on other inputs (like knobs, touch screens, etc).

pruttelherrie

Quote from: markseel on January 04, 2017, 05:05:04 PM
Yes you'd use USB MIDI.
[snip]
I'll write up an example EQ for the SDK.
Ok, sounds totally doable-ish.

I would contribute to a kickstarter, if you were going that route. But I agree with Larry. Also, good ideas.

pruttelherrie

Also, I feel a collaboration coming up: if you get Larry involved he might host a forum on holycityaudio?

:icon_biggrin:

mhelin

Regarding the BOM you could choose to use XUF224-1024 or even XU224-1024 with external flash (those are cheap and don't add total costs too much). Then maybe if you want to please Hi-fi people the digital part should contain at least two "ultra low phase noise" crystals like NDK NZ2520SD like on diyinhk board (http://www.diyinhk.com/shop/audio-kits/101-xmos-multichannel-high-quality-usb-tofrom-i2sdsd-spdif-pcb.html).

Regarding the analog board (and the whole system) it should either have a custom box of fit to generic board like Hammond 1590BB or if used with multichannel audio applications 1590DD or something like it (maybe with optional 19" rack fittings). So for the stompbox format a codec like CS4272 is a common one, and the board should be fit with 1/4" jack connectors so that the input and output are on opposite sides for generic pedal board use together with a bypass switch so that you can use it without looper (switcher).

Analog board should also have a decent PSU with a 12V DC input using DC/DC converters (switching mode) to get outputs for a 3.3V digital (XEF232 takes over an 1A!)  and at least for a a one analog negative supply -12V for opamps - assuming the +12V input is well regulated. There are these days cheap 12V switch mode supplies available - I use one 48V supply intended for Cisco IP phones on a Neve 1272 mic pre built just and it's very clean. Add a small resistor and a large cap and you'll have a fine analog supply. However, for high end audio it will not be good enough, those guys are so critical about everything, and you rather have DIL sockets for opamps. OPA2604 is a rather good opamp for any use (both guitar fx and hifi - musical enough) though. For digital crossover there should be multichannel ANALOG volume control after DAC (can be builtin if you find such DAC, Cirrus might have one or two). Regarding converters they must have low latency filters (less than 1 ms), again Cirrus ADC/DAC/Codec parts are good, AKM usually use longish FIR filter kernels.

XMOS IDE is propably too much for regular users so you'll need write a multi-platform app (android, ios,pc,mac,linux) with GUI for controlling this device.

Regarding Kicstarter don't hurry, you can find lots of blog posts on tips how to succeed with them.

Digital Larry

#74
Quote from: pruttelherrie on January 06, 2017, 05:32:56 AM
Also, I feel a collaboration coming up: if you get Larry involved he might host a forum on holycityaudio?
I would do that if Mark wanted it (and maybe get some user donations to help keep the web site running).  Not sure how much effort I can ultimately put towards this, as I have a few irons in the fire myself with only so many hours in the day.  The Teensy project is leveraging some web-based (and therefore cross platform) code generator based on node-red.  Assuming that it simply spits out C code, maybe it is adaptable to the Xmos platform.  I've ordered a Teensy + audio thing and will be checking it out.
Digital Larry
Want to quickly design your own effects patches for the Spin FV-1 DSP chip?
https://github.com/HolyCityAudio/SpinCAD-Designer

markseel

Good point about the XU224 and other packages.  They're pin for pin compatible so that would work well - boards could be outfitted with different parts.

I think the analog board should contain the 'quiet' power supply, low phase noise oscillators, and ADC/DAC.  That way this board could just be digital and would remain more generic (USB to I2S) and the analog board could be designed to suit the application (guitar effects vs. high end audio DAC vs. multi-channel mixer).  Good points about the oscillator, OPA and volume control.

If a site hosted algorithms or had a hosted app that spit out 'C' then that would work well I think.  You'd just add that 'C' module to your project and then build it.  Building the app is simple (see earlier posts in this thread).

Keeping with the idea of minimalism for this board (XMOS, power supplies, USB/power, I2S/UART/I2C/GPIO's) I think one could mount this board on to another board that had the footswitch, knobs, jacks, and audio ADC/DAC, and a simple MCU.  This board would then send MIDI to the XMOS board over UART.  Sort like what the Pi community is doing?


pruttelherrie

Quote from: markseel on January 06, 2017, 11:15:05 AM
Keeping with the idea of minimalism for this board (XMOS, power supplies, USB/power, I2S/UART/I2C/GPIO's) I think one could mount this board on to another board that had the footswitch, knobs, jacks, and audio ADC/DAC, and a simple MCU.  This board would then send MIDI to the XMOS board over UART.  Sort like what the Pi community is doing?
Indeed, I would prefer to have it modular and not specifically for a certain application/housing.

Larry, I didn't mean to 'push' something on you! And I certainly didn't predict a web-based project builder (that needs to be maintained(!)), but it sounds cool :)

I'm currently looking into that Teensy/node-red audio app, in order to mangle^H^H^H^H^H^Huse it for a configurator for AD7519 based switchers. It could work, but the short route with connector functions is way quicker for the moment.

pruttelherrie

#77
By the way, audiophiles are a funny bunch. I tend to ignore them unless it's for a laugh  ;)

I believe it was Douglas Self who remarked that people obsessed with expensive opamps tend to forget that they are listening to music that went through at least a hundred TL072's before it was committed to CD (or something to that extent).

Oftentimes bad circuits and bad topologies introduce more problems than high-end opamps are able to mitigate.

mhelin

Quote from: markseel on January 06, 2017, 11:15:05 AM
This board would then send MIDI to the XMOS board over UART.  Sort like what the Pi community is doing?

MIDI could bring this module also to Eurorack synth community which is growing fast. They would also be a target group for the Kickstarter project. Because of the huge power this kind of module could be used to implement algos like additive (Fourier) synthesis.

Digital Larry

#79
Another possibility to consider for control protocol could be Open Sound Control.  I got into this as I took an online class in ChucK.  I used a Wiimote in conjunction with the Mac program OSCulator to control synthesis parameters in my ChucK program.  OSC does generally operate using UDP, so the sending and receiving devices need to support a network stack and physical interface.

If you use TouchOSC then you can also design virtual interfaces using iOS and Android devices.  The nice thing about OSC vs MIDI is that with OSC you are not in the least constrained by what commands you think should be sent (because you can invent your own), whereas you might encounter some limitations using MIDI.  TouchOSC also offers a MIDI bridge application but I think native OSC would be more flexible than MIDI anyway.
Digital Larry
Want to quickly design your own effects patches for the Spin FV-1 DSP chip?
https://github.com/HolyCityAudio/SpinCAD-Designer