I played a lot of games, especially as a kid. I was conditioned over time to enjoy the sound of old retro games. When I bought an Arduino, which is an 8-bit microcontroller, I decided to make a synthesizer as my first project.
This project was my first experience as far as hardware goes, I had only dealt with software on computers previously. I had, and still have, a strong desire to understand how these extremely complex devices work. An arduino is essentially a miniture computer on a board with no operating system, and is therefore a great new way for me to play around with programming. I have been working on this synthesizer for months off and on, occasionally adding to it when I grow tired of other projects.
This is actually the fourth version of this synthesizer, as I have rewritten it from scratch several times. It has also been encased in many different things: a cardboard box, the case of a digital clock, a hollowed-out spanish book, and for now I have settled on tupperware.
Anyway, down to the current specifics. My synthesizer is running at 16 megahertz, and has a tiny 2 kilobytes of RAM. I've got the synthesizer playing up to 10 sounds, or 'voices' at once, while being able to store up to 24 in memory. This was a huge feat compared to my earlier prototypes which were unable to even run one voice at a consistent rate.
Just like in standard synthesizers, I built envelopes that support attack, decay, sustain, and release. And I have low frequency oscillators, with support for many different waveforms. In order to control these envelopes and LFOs, and the oscillators (noises) themselves, I had to develop software on my PC. Basically, with more things able to control, and more numbers you that can be adjusted, many more unique sounds can be created. This software is able to adjust the pitch and volume of wave forms using a set number or using the envelopes / LFOs.
My software is also able to play MIDI files. And therefore I've spent way too much time playing any and all retro video game midis I could find. I can't tell you how fun it is to open up songs I've never heard and try to tune the instruments in such a way to make the songs sound good again. (even if it was for a loose definition of good)
After MIDI file support, the next logical step was MIDI input. It not only allows that, but by using a free program called LoopBe1, the synthesizer can be controlled using a program like FL Studio.
I'm almost finished with this project as far as prototyping goes. The only thing I'd like to learn more about is hardware analog filtering. I have a low-pass filter built in, but I'd like to build a stronger one. It would be nice to have a couple of filters that were controllable by the envelopes, LFOs, and potentiometers. During my experimentation, I seem to have built a distortion filter that is controllable by the twisty knob that is visible in the pictures. Since I was trying to build a stronger low-pass filter, the distortion was quite the surprise.
So, how does it sound?
Keep in mind that the connections are not all soldered yet, and that each song was recorded at different times while the synth was evolving. When it is playing through the speaker instead of the headphone jack, it is pretty damn loud thanks to the amplifier I soldered into it. And the tupperware container gives it a little reverb.
So in conclusion, I'm happy with where this is going. Once I clean up the sound a little with filtering, I think it will be awesome. I plan to clean up the code eventually and release it to the public. I enjoyed learning about audio synthesis, and learned a lot from examples that others have uploaded.