Hi,
before i start, let me first tell you guys where i come from, so you get the picture
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.
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"
- 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 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 ).
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
regards
Peter