Introduction: Commodore 64 MOS6581 SID Based Synth / Sequencer
This is an old project of mine from about 3 years ago. I was 8 when my father bought me a C=64 28 years ago, and I still remember how thrilled I was to play with it (I'm still a gamer and a hardware hacker thanks to it), and the main thing for me in most games was the epic music. So after many years, I decided to make a little synth based on the famous MOS6581. I lost my patience when it came to creating the patches (instruments made from using separate oscillators at different settings and times).
So this is a basic module you can experiment with, it allows you to play with the raw register values (but there's also the code for using it as a programmable 16 step sequencer, or a MIDI controlled synth).
The circuit consists of a MOS6581 (from old C=64s, the ones I got from e-bay had faulty oscillators, but I got a refund), a PIC18F452 (the brain), 2 shift registers (to be able to communicate with the SID serially, using the 8 data and 5 address lines), a 4x16 character LCD for display, a MAX232 for serial communication with a PC (never really used it for a purpose other than bootloading the firmware), an optocoupler for the MIDI input, a LM386 for direct audio output, linear regulator ICs, some connectors, switches, and pots.
Step 1:
Here's the schematic and a screenshot of the PCB. The circuit was designed on Proteus Isis, then transferred to Proteus Ares for the PCB design. The code and the schematic are self explantory. If you have any questions, please ask.
3 Comments
8 years ago on Introduction
Hello
I mention that I'm new at this, and your project seems fantastic.
I managed to get the SID and I decided to build your great job, but I have many doubts about my lack of knowledge and need your help.
Please e-mail me hector_adrian@outlook.com.
Beforehand thank you very much.
Note: Sorry for my English.
Reply 5 years ago
I'm sorry I saw this comment late. I hope you managed it yourself...
10 years ago on Introduction
Thanks a bunch! I hope this Instructable provides some help :)