This is not a guide for building a standalone synthesizer as all MIDI sound generation will be done through a computer. All the software and hardware that I used to build my own synthesizer is Open Source, WOOHOO! I did write some custom code though as any hardware/software hacker needs to be able to do for a custom system.
What one minimally needs to build a synthesizer such as the one I built:
A computer running Linux
An Arduino or your favorite microprocessor
Some Buttons, Wires and Resistors
Probably a sodering iron unless you are going for a ghetto fabulous project that is duck-taped together (I admit I have done this before).
On my Dell laptop I installed Ubuntu. Not necessarily a big fan of Ubuntu but Fedora was being difficult and I didn't want to spend all my time just trying to make my video drivers work. I'm too old for that. There are a number of cool and awesome MIDI programs for Linux, when I first started I was so excited and spent a bunch of time messing around with alot of them including Rosegarden and Hydrogen. These are not what we will use but are pretty cool for just playing around and learning about MIDI sound generation.
The software I use and what you probably need are:
JACK audio software
I think all of these programs can be installed with yum or apt-get except ttymidi, which can be acquired from Here I chose to use the arduino with this project because it already has a serial MIDI interface library so you don't have to code one up on your own. MIDI messages(See here) however are pretty straight forward and would not be that difficult to code up on your own say if you were using something such as the MSP430. Once you have all your hardware and software then we are ready to move onto the next part!