Designing an open-source synth and looking for the best architecture

hello,
all is almost in the title.

I'm currently designing an open-source synth and looking for the best architecture.
Before beginning to design the pcbs etc, I'd like to have a global view of all my project.

It will be an open source hardware DIY project ; but I probably sell the kits (already soldered pcb etc)

Some on avrfreaks advices me the AT32UC regarding the features I'd need!
But, naturally, I'm thinking about using directly arduino modules + shields ; I mean, arduino + some hardware peripherals.

Briefly, I can quote those features I need. There are "high level", I mean, I consciously don't evoke how I would make that.

  • digital synthesis (basic DCO, DCF, LFO linkable to several parameters)
  • (lofi) sample uploading to make a kind of wavetable synthesis
  • midi in (on USB probably)
  • little sequencer (where I could save around 16 patterns into a memory and dump/restore it on a computer)
  • some potentiometers
  • some leds
  • some buttons (switches)
  • possible save/restore of some presets on a computer (through max/msp software which basically can talk ... any protocols I'd need)

I'm interested by any informations about the first right choices which will drive my next days.
After that, I coul begin to code stuff and prototype things.

all the best,
gluontronic

The Arduino ATmega328 is a 8-bit 16Mhz chip, and can do only so much, so you won't be able to get a lot of those things from those chips. Unless you do a shield with some extra stuff outside the Arduino main chip.

For instance, I managed to get 6 voices from Timer1, and it would be possible to get another 4 voices from Timer0 and Timer2, but they are all 8-bits. Filters? I haven't tested, but, since you can get multiple PWM outputs, you could filter each output with an external analog filter.

Or you could make the whole thing monophonic, and have more options on board.

Still, so far I only managed to get like 32khz good sound from it, anything above makes a lot of noise. Or you could try a DAC, but, again, the ATmega328 can only do so much. :wink:

Wk

hello WilliamK,
thanks a lot for your answer.

I planned to make a shield, bigger than arduino itself, where I'll put every other components (filter, DAC, buffers, pots, muxer/demuxer etc)
What would be the platform you'd advice me ?

some people adviced me to build my own.
I could.
But really, I love the idea of modularity and I'd prefer to use the arduino as-it-is.

any advices?

Take a look at the propeller controller. That has 8 processors built into one chip and will allow you to do the time intensive task of synthesising a few waveforms. It also has 32k of RAM to give you space for buffers. It will also run up to 80MHz so is quite nippy. Best of all it is quite cheap, especially if you make it yourself.

Netduino or any .NET stuff is TERRIBLE for audio, don't go that route, really.

The Arduino can do a lot, if programmed correctly, but its still 8-bits and limited.

Wk

hello all,
and I have firstly to thank you a lot for this debate which is very interesting and instructive for me.
I'm at the very beginning of the project, and I cand choose the right route before prototyping anything else.

8 bits wouldn't be a problem for me
I won't make an hifi hardware
It would be consiously cheap & raw.
I love the arduino idea because it is a module I could have for cheap price.
I can also rebuild it on an only one PCB (I have those skills) but I'm not sure it will be the right ratio between time spent / cheapness / reliability (soldering smd is difficult for me) etc.

I'll look at the propeller right now!

About memory, I planned to add memory to this system.

So if I consider 8bits is ok, memory is added, the "only" problem would be the speed.
At the maximum consumption of job time for the processor, there would be:

  • MIDI listening (notes come from the computer, the keayboard)
  • one waveform playing (monophonic)
  • one LFO modulating 1 or 2 parameters
  • distorsion fx (hardware probably I guess!)
  • delay fx (hardware too ; but it is an option and not sure yet about that)

The sequencer could be only an array read for playing notes... I guess it wouldn't be cpu killing.

Do you think arduino could process that?
The next step would be prototyping it on my ... arduino. I have one.But no DACs, no buffers yet.

I think that the Arduino can do a lot, if you stick to 8-bits, but heck, I'm nuts. :stuck_out_tongue_closed_eyes: I already managed to get near 10 voices of 8-bit sounds at 20khz out of a single ATmega328 using the Arduino IDE. So its possible to do a lot of sound based stuff, you just have to be creative. :wink:

Wk

I did a numerically-controlled oscillator with my NB1A board
(ATmega328 + Quad 8-bit DAC). The code and documentation
is at
http://wiblocks.luciani.org/docs/app-notes/nb1a-nco.html

My plan is do add more audio modules VCF, VCA, in the future

(* jcl *)

I forgot to mention this Georgia Tech link --

Some students at Georgia Tech used the code as a DDS example
for a synth project --
http://www.ece.gatech.edu/academic/courses/ece4007/10fall/ECE4007L01/dk4/index.html

There is a Synth class at Georgia Tech and IIRC one of the requirements
is to post the project documentation. You could try searching through the past projects.

(* jcl *)

hello,
thanks a lot
it is very inspiring & interesting.
I almost decided to use a 32bit processor, finally.
If anyone is interested, I'll post everything on designthemedia.com/blog

You could end up needing a 32-bit processor, a DSP chip or an FPGA.
Using an 8-bit uC that you probably already have is a quick way
to get started.

Have fun.

(* jcl *)

yes
I totally agree.
I intend to build/sell that under a CC license as an open-source hardware.

But, really, it will break the line and make the buzz.

Just, please, don't go the .NET route, it sucks for audio, I tried. :wink:

Also, check the XMOS chips, they are great and inexpensive for what they do. (400mhz is a lot) But I found to be a pain to program, as its all event based. :-o

Wk

hi william,
I'll consider your advices as precious ones!!!

arm9 samsung s3c2440 seems to be a nice & powerful beast.

c++ and lightest libs will be used.

The AVR32 UC3 series chips with DSP and an audio DAC may be a better fit.
50 Mhz, fixed point DSP math.

This is a low cost DSP chip compared to many others.

This chip is not Arduino compatible, thus the Arduino IDE will not work.