Want to built a synth. Arduino the right choice?

Hi,

before i start, let me first tell you guys where i come from, so you get the picture :slight_smile:
I'm far away from being an electornic expert. I have basic knowledge about what resistors, capacitors, diodes, transistors and ICs do. Also, when i was around 13 years old, i did a little PIC programming in assembler (haven't done that in ages, can't do anything in assembler anymore i think). That's about it.
When it comes to programming, i have above average knowledge in C# and Java which i use for game and app development. I also do a lot of GPU Shader Programming in HLSL/GLSL, so i know how to work with limited ressources and how to optimize code for performance and size.
Recently i got to work with microcontrollers again, namely the arduino, and i really liked it (especially the debugging, which was hell when i was 13.). So to get started with electronics again, i build myself a LED running light board, a very basic synthesizer based on 555 timer ICs (turned out i was building some sort of atari punk console), and an 8-step sequencer based on a 40106 and a 4017. Finally i mixed the snyth with the sequencer and got myself a small little toy to play with. :slight_smile:
Now i want to combine both worlds again and create a syntheizer based on an arduino.

Project:
Create an arduino based synthesizer with an optional internal sequencer and MIDI In/Out. Use a touchpanel for a tonematrix-like sequencer (see here Laboratory ). If possible, put a color lcd underneath the touchpanel for visual feedback and the possibility to have different subprograms for the touchinput so it can be used as sequencer input, filter properties, and other stuff, based on the choosen subprogram. Use Potentiometers and buttons for other input which wouldn't be smart to be handled by a touchscreen (bpm, some filters, etc).
The touchscreen and lcd should be at least 7 inch in size for easy usability.
The synthesizer should output MIDI signals and final sound (of course).

Problems i see so far:

  • Waveforms: I guess these will be relative costly concerning performance, so it might be a good idea to create these the analog way (555s for square, LM101A + LM107 for triangle, etc) and then forward the results to the arduino ? Also quality might not be the best when creating these by code, plus digital waveforms lack the "nice random noise" :wink:
  • 7 inch color lcd. I think the arduino alone can't handle that and a dedicated controller might be needed (apart from the basic interface for the lcd). Any info on that? Has it been done before? All i could find about arduino lcds are either 2-4 row text displays or ~3 inch lcd shields (which is way to small for my purpose).
  • Actual sound. People tend to say that creating audio with the arduino is not a good choice because of it's limited ressources, especially the ram. I've red about a 128k ram upgrade for the arduino mega platforms. If i get this, would i be good to go? Or is it better to use a dedicated sound chip? I also red about some 400Mhz Co-Processor (i think it's name was xcore or something) to offload the heavy stuff to..but honestly, i don't think i can handle such high level stuff at the moment.
  • Filters. For me the initial reason to build a synth based on a microchip was filtering. I don't want to put stacks n stacks of ICs and resitors on my PCB for all the filters. Instead i want to do digital signal processing by writing code. Is this possible with arduino? Echo, Delay, Cutoff, etc should be doable, but i haven't tried it yet. Any info on that?

I DO know that this project is a lot of work. But if i get it done, there's much do learn from this. Plus i get a nice musictoy to play around with :slight_smile: Especially the touchinput with various subprograms sounds like a nice thing.
Of course i won't start with getting the touch+lcd part to work, but instead will start with outputting some random noise or bleeps and blips and then work from there.
I did choose the arduino plattform as it seemed easy to use, plus it has a very active a big community. I also like the modular shield approach (even though i think i won't make use of premade shields...but who knows, future will tell :wink: ).

So for now all i'm asking for is:
Is this doable with the arduino or do you see showstoppers? Are there examples, other projects or generally any info concerning the mentioned problems?

Looking forward to you answers :slight_smile:

regards
Peter

Hi, There are people out there doing some of this.. Google "arduino synthesizer"

You will learn a lot.

You might also look at the PIC DSP chips...

Hi,
thanks for your answer.

I already looked at a lot of arduino based synthesizers, but most of them weren't polyphon. The one using an AD5206 and dedicated waveform generators by Gian Pablo looked nice though and i'm currently building something like that using 555 timers to create sinewaves and a 40106 for squarewaves. If mixed together, you can create some really crunchy sounds with that. Can't wait for the 5206 chip to arrive so i can start changing the oscillators by the arduino :slight_smile:

The first tests using only the arduino for soundgeneration weren't that great. As soon as i started changing the pwm frequency to 65.500Hz instead of 500Hz and using an interrupt routine for wavegeneration, things started to finally become interisting. But doing polyphon sounds seemed a bit difficult and wasteful on ressources, so i decided to go the dedicated waveform generator way (555, 40106). I want to keep as much processing power for the lcd, touchpanel and filters. Also the waveforms generated by the ICs sounded a tad better than the ones from the arduino. :wink:

As i'm waiting for the 5206 i will play around with filters and effects using the arduino. DSP chips might be the better choice, but they seem to be a bit difficult to work with (that is, in comparison to the arduino). So let's see how far i can get with just the arduino.
I also have some SIDs and OPL3 chips laying around here. Might look into using these as additional sound generators when the time comes...

Also , my breadboard is a big mess right now :smiley: