The Commodore SID was the audio chip in the venerable Commodore 64 and in the 30 years since release has attained classic status and become one of the best ways to get your chiptune on. Designed by famous synthesizer designer [Bob Yannes], it was only a matter of time before we saw a real, homebrew MIDI synth based on the Commodore SID.
Because real SID chips are rare as hen’s teeth nowadays, [Jeff Ledger] built his SID synth around an emulated system running on a Pocket Mini Computer. This very cool microcontroller platform runs on the Parallax Propeller. An emulated SID runs in one of the Propeller’s 8 cores, with the remaining cores kept open for reading MIDI notes and displaying info on a display.
The hardware portion of this build is amazingly simple; just an optoisolater, a few resistors, and a diode connect a MIDI keyboard to the Pocket Mini Computer. The buttons and dials on [Jeff]’s MIDI keyboard control the waveforms, filters, and envelope controls. A very neat setup if we do say so ourselves, and just perfect if you’re needing more chiptunes in your life.
You can check out [Jeff]’s video after the break.
24 thoughts on “Creating A MIDI Synth From A Commodore SID”
Neat project, but this has been done tons of times before:
MIDIBox SID is a PIC based SID synth that goes into incredible depth, and has been around since 2002-ish:
And there’s a commercial version:
noouch, what you say is true, I knew and liked both projects/products.
But there is a fundamental difference: the minimum component bill to get *FOUR* SIDs with MIDI interface done on a single propeller could be trimmed to something in the $15-$20 range.
And you don’t need to source ancient chips.
So unless you’re looking exactly for the true-to-the-original sound of the original SID chip, or maybe a professionally made product like the SIDstation (which still, would be sold without the chips), IMHO you can’t beat a Propeller. ;)
Sidstations included the chip. I had one for several years – still regret selling it. The homebrew SID boxes require you to find your own SID.
I couldn’t tell from the original forum post, but it sounds like the Propeller SID is emulated by function, not by actual component-level emulation of the SID’s internal circuits.
Which isn’t to knock the Propeller emulation, but to say that for a synth like the SID that has a very idiosyncratic sound (which also varied between chip runs), simply emulating how the chip works may not be enough for those who really crave authentic SID sound.
I think the emulation of SID on Propeller attempts to mantain as much accuracy as possible within the memory and speed constraints.
If you look at the source, you will see phase accumulators, comparators for PWM, MSB inversion to get the triangle wave with “one bit less”, 23-bit LSFRs for noise, etc.
The execution tick is locked to the output sample rate (and not 1MHz), but there are no other shortcuts like i.e. mixing whole buffers at once. Even being iterative assembly code, it still looks more similar to an HDL desctiption than a functional emulation to me.
And most importantly, the way the module is used by the main app, the PolySynth or SIDplayer is very resemblant of the original chip: it appears as memory mapped registers in a common address space.
Maybe Johannes Ahlebrand, the author of SIDcog, could add some more details on the inner workings.
P.S.: “Bristol Audio Synthesis” package has a nice emulator (and I mean the way the source is structured, can’t really say how faithful it is), and in that case (x86) you can afford using floats to do analog simulation for filters, up to internal leakage.
I think sound clips says more than thousand words
SIDcog 8580: http://soundcloud.com/ahle2/harden-you-horns
reSid 8580: http://www.youtube.com/watch?v=JzSohANdohY
Real 8580: http://www.youtube.com/watch?v=gGCLPPyRUxA
The real SID has got a little bit more bottom than reSid and SIDcog.
I would love to hear a clip of SwinSID playing this exact tune, but unfortunately I do not own one. :(
Btw, making a SID emulator in less than 400 assembler instruction running on a core that doesn’t have a multiplication instruction and only 20 mips is kind of hard. ;)
(… and yes, AntoineDoinel is right about what he said)
Here’s another really tricky tune to emulate: http://soundcloud.com/ahle2/bored-teens
It hightlights the fact that the envelope emulation is the biggest issue with SIDcog. The ADSR bug (which isn’t emulated on SIDcog) might be the reason for that.
(btw, newer versions of SIDcog may emulate this tune better)
Also, if you haven’t been living under a rock for the past ten years, you’ve probably heard the sidstation in action.
Not to mention the MIDIbox SID.
Where would you find the SID chips? In any Commodore or in certain models?
“… Commodore’s CBM-II, Commodore 64, Commodore 128 and Commodore MAX..”
Shame, I only have an old Commodore 720. At least I know where to find them now.
…which as it turns out is actually from the CBM-II series.
Shows how much I know about Commodores.
I picked up a (Bontempi) Melodian keyboard at the thrift a couple of days ago lol so this couldn’t be more timely. It has the strange two port connector but had no software with it. This would be a fun project- may have to pick up a propeller at some point (Thanks Bob!). I guess if anyone is interested in the Melodian and a VIC 20 (In original box I’ve only booted it-works fine), give me a shout back and I’ll see if we can set something up in the sale section of HaD. It would be nice to find this gear a good home :)
Sorry to threadjack-I just read the post and thought “maybe someone reading this would want this gear”.
Again Nice work Bob and thank you :)
How about the SID running on an atmega8?
This one does it a bit better:
Thas’s nice, but it has no filters.
The SIDcog emulation on the Propeller, as far as I know, was the first SID emulation on a microcontroller to feature SID filters (excluding FPGA, ARM or x86 based implementations, obviously).
The Swinsid does have filters, and they sound surprisingly good. Have a listen on the site I linked to.
That’s really cool, especially the SwinSID nano. Finally the same form factor and pinout of the original SID. Thanks for the link, I missed the latest developments after the X2 prototype.
With the propeller, we had a DIP40 which included a SID player:
but we never attempted pin compatibility AFAIK… maybe something to look into, using a QFN chip.
It shouldn’t be any problem to put a Propeller(SIDcog) inside a real C64. With 8 cores you could have multiple instances of SIDcog running while one core handles the bus interfacing. Or why not put a AY38910(AYcog) or SN76489(SNEcog) in there simultaneously?! ;)
IMHO the Propeller is the ultimate microcontroller for stuff like this thanks to its many cores.
Very Nice !!!!!
FYI, there’s a native MIDI-editor for C64 called M64 which is rarely mentioned. Or, it’s more like a programming language. Very, very versatile – still today.
You don`t want to reduce timing on c64 to a simple midi synth. Rather sync it to another sequencer, and program the audio you want from it. Actually the c64 can do instant audio. And even a midi-seq written in asm on it, might have better timing than modern PCs suffering with OS paradigms that accepts latency / os-jitter. So maybe you should sync from the c64, lol.
Mega Apocalypse – No jitter, instant audio, constant 60fps, on a 1mhz c64. http://www.youtube.com/watch?v=ES_RbE6u6jg
Peace Be With You.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)