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.
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.
Step 2:
Here's the schematic files, the PCB in PSD format in case you don't use Proteus and just want to print it out, and the code that was written on MPLAB IDE using the Hitech PICC18 compiler. Different C files are used for diferent modes of the system (sequencer, raw data, MIDI, etc.). This instructable probably needs further improvement. I'll deal with it when I have more time :) I also attached the datasheet for MOS6581. Here's a couple of videos of the system in action.