Creating A MIDI Synth From A Commodore SID

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

    1. 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. ;)

      1. 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.

      2. 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.

      3. I think sound clips says more than thousand words
        SIDcog 8580:
        reSid 8580:
        Real 8580:
        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)

  1. 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 :)

    1. 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).

      1. 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.

  2. 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.

    Peace Be With You.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.