News:

SMF for DIYStompboxes.com!

Main Menu

Next DSP Effects Board

Started by markseel, September 20, 2011, 10:10:43 AM

Previous topic - Next topic

markseel

Hi All,

I'm going to design another DSP effects board in the next one or two months.  I've done two so far:

http://www.diystompboxes.com/smfforum/index.php?topic=88301.0
http://www.diystompboxes.com/smfforum/index.php?topic=89316.0

So what's the next board look like?  An improvement of the low-power Simple DSP board?  A new board using the XMOS XS1-L1?
Here's some options ...

1) Revision of the Simple DSP board.  Same DSP (Wavefront AL3102), same micro controller (AtTiny84), new CODEC (AK4552 instead of the WM8731).  Perhaps add on-board LDO's for digital and analog supplies to reduce complexity to the end-user.  It has more low-speed ADC inputs for more pots (5 pot inputs instead of 3)?  Slightly lower power consumption (45 mA vs 51 mA), somewhat larger board (14 pin SIP at 1.4"x0.7" vs. 10 pin SIP at 1.0"x0.6").   Cost would be around $25 per board (assembled and tested).

2) Effects board based on the XMOS part.  I have a small board already but it doesn't use a standard DIP format so it would be difficult to prototype with.  I have a layout prepared for a 24-pin 600-mil wide DIP board with pins for power, ground, reset and 20 GPIO's.  Pretty small and has the XMOS XS1-L1 (48 pin part), 1 volt switching regulator for the CPU core supply, power-on-reset delay, crystal oscillator, and a connector for the XTAG debugger.  It doesn't have any peripherals (Audio CODEC, low-speed ADC's) on board although I do have XC code to interface to audio CODECs (I used the AK4556 for testing).  Board is 1.2" x 0.7".  Cost would be around $25 (assembled and tested).

3) Some variation of #1 or #2.  What's preferable as far as integration?  Should the board include the CODEC and voltage regulators and perhaps analog signal conditioning for the ADC?  Or should the board leave these off so that the user can select their own parts?

4) Take #3 even further.  I started laying a board that has everything on the board already and is dimensioned to fit within a small Hammond case (used for a lot of stomp boxes).  The board provisions for 6 pots (one volume, 5 parameter controls) and input/output jacks so that one could populate the board with parts and place it in an enclosure that has the pot holes and jack holes drilled out.  This would be a quick path to a digital effects box for people but it would cost more.  The Wavefront-based board would run off a battery (~30 mA @ 9V) whereas the XMOS part would probably be to hefty for a battery supply (I'd guess it would use around 60 - 80 mA at 9V depending on XS1-L1 CPU load).

Also, the Wavefront based boards are easier to program.  See the Simple DSP post on programming the Wavefront-based boards.  The XMOS-based boards would have to be programmed in 'C' and loaded via an XTAG interface ($50 from XMOS).  The AL3102 includes instructions for log/exp and handles the fixed point numerics as well.  For the XMOS board you'd have to do this yourself (although I'd be happy to share code that performs these primitives).

Thoughts anyone?


markseel

Here's a picture of the Wavefront AL3102 based board layout:
https://picasaweb.google.com/111829367884437703386/NextAudioDigitalAudioSignalProcessor#5657969962569206066

This board turned out a bit bigger than expected but it's pretty complete and has connections for:

- Power and ground (power can be 3.5V to 10V)
- Analog stereo input and output
- Five low-speed ADC inputs for potentiometers
- TX and RX pins for serial communications
- Regulated analog and digital supplies for external circuitry

The board is 1.6" x 0.65" and contains the following components:

- 16-pin SIP
- Wavefront AL3102 (DSP) - 50 MIPS
- AtTiny84 - Low-speed analog inputs, DSP program storage, and RS-232 interface
- AK4556 - 24-bit Stereo Codec
- Separate voltage regulators for analog and digital sections
- Crystal oscillator
- Filters for analog inputs and outputs

Power consumption is estimated to be around 70 mA at 3.5V to 10V.
The analog input and output filters allow the board to be connected directly to line level equipment.
Adding a simple high-impedance buffer at the input would allow connection to a guitar.

Boards should be ready in 4-6 weeks.

Quackzed

if you have a solid diyable layout and interface for programing, the only step needed is a site or thread with pre-made programs to use with this platform.
do it up, and show forumites the benifits of this type of programmable platform via clips of said programs and i think you have a winner!
-a good solid open platform for programming and maybee even, in future, a building block library of circuit fragments to use...
the programming aspect is the trouble, or the 'leap'. many analog diy circuit builders are gonna stop at the 'programing' level.with a little hand holding;insofar-as pre-written 'effecst' blocks, you can eliminate the 'leap' and provide a full diyable product. youll get plenty of help, after an initial 'show' of what you can do with it.
good stuff man. future sub-forum: circuit programs. circuit... algorythms? circuit shells... whatever...things to copy and paste into your DSPizer.(TM) lol.








ds
nothing says forever like a solid block of liquid nails!!!

markseel

Anyone have thoughts what a DSP configurator would look like.
The board has a simple serial interface for downloading programs so anyone could write 'C', Python or whatever programs to send program data over a COM port
I have a simple DSP assembler written in Python but it still requires knowledge of DSP.

So how about, as you eluded to, fixed programs that one could adjust using a bunch of parameters.
For instance a distortion effect would handle the anti-aliasing up/down sampling for you and would have adjustments for:
1 - number of gain stages
2 - variation of clipping function and symmetry for each stage
3 - pre and post frequency filtering/eq for each stage
4 - adjustable envelope compression before each stage
5 - up/down sampling ratio and interpolation filter cut-off frequency and slope specification (maybe a bit advanced for non-DSP people)

A chorus could have adjustments for number of voices, modulation function (sine, ramp, etc) for each voice's LFO, LFO rate and depth for each voice, wet/dry mixing for each voice, etc

There could also be EQ (parametric or graphic) blocks.

These would be pre-written effects blocks that the user would configure using the above 'parameter sets'.

A command-line effects block configurator and downloader would be pretty easy for me to do.
Anyone want to make a nice GUI front-end?


nexekho

#5
I've done something pretty similar on my Arduino DSP - though it can only handle one effect at a time.  It uses two pots, the left selecting the setting to change and the right changing that setting.  There is a unified LFO with triangle/sine blending, clipping, min/max depth, speed, duty cycle, etc. using a lookup table held in RAM.  If you put the max depth below the min, it'll lock to min (so you can zero the max and set the min where you want it) You can only select one effect at a time such as chorus/flanger/vibrato, distortion, reverb, tremolo, etc. but they all use the same configurable LFO.  In the case of chorus, the LFO controls the sweep, while in distortion it controls the amount of distortion.  The dry/wet mixers are also built into the program skeleton.  I'm not using a DAC or ADC, instead using the integrated ADC and the PWM output and a smoothing filter.  Although an Atmel's ADC is slow, you can tell it what to do and then process the last frame while it adjusts for solid performance and I'm using the busy wait cycle while the ADC works to update the LFO lookup table.  It can be a bit awkward at times but having a good solid base to write other effects on makes it a lot easier to experiment.

Anyway, if you've never seen it, look at how a high end POD does it - a visual effects chain, very good stuff
I made the transistor angry.

mhelin

#6
Quote from: markseel on September 30, 2011, 03:43:20 PM

A command-line effects block configurator and downloader would be pretty easy for me to do.
Anyone want to make a nice GUI front-end?


Haven't done any GUI programming but for CPython the wxPython (http://en.wikipedia.org/wiki/WxPython) might be one solution though I've been lately studying Jython which is a or THE Java Python implementation which can be also used from Java code (and vice versa) so the GUI could be built aroung Swing (or any other Java GUI libs). See http://www.jython.org/jythonbook/en/1.0/GUIApplications.html

I've found PyDev plugin for Eclipse quite usable actually, it fully (afaik) supports Jython development, too.

Ps. The boards look nice though I don't think I have time to study them more now. The XMOS solution is more for hackers I think, even I have some difficulties to get into the event-driver programming model (using XC).

edvard

Any possibility for using Nyquist as a programming language?
http://en.wikipedia.org/wiki/Nyquist_(programming_language)

Seems like a natural fit for DSP programming.
All children left unattended will be given a mocha and a puppy

markseel

I made some really interesting changes.

1) The board can now store up to four DSP programs (four separate effects) instead of just one program.

2) Each of the four programs can have up to sixteen sets of presets with sixteen parameters per set. Utilization of presets is available with the rotary encoders and led configuration. 

3) The board can be configured to operate in one of three modes.  Mode 1 allows up to 5 potentiometers for effects parameter control.  Mode 2 allows 4 pots for effect control and one pot for program selection.  Mode 3 allows program, presets, effects parameter and value selection and updating using two rotary encoders. A 4 digit seven segment display is supported in this mode. 

The board is 1.3" x 0.5" and contains the following components:

- Wavefront AL3102 (DSP) - 50 MIPS
- Micro-controller for controls and display, DSP program storage, and RS-232 interface
- AK4556 48 kHz 24-bit Stereo Codec
- Crystal oscillator

Power consumption is estimated to be around 70 mA at 3.3 Volts.
The analog input and output connections allow the board to be connected to line level equipment with a few passive components. 
Adding a simple high-impedance buffer at the input would allow connection to a guitar.