Close
0%
0%

USBSID-Pico

USBSID-Pico is a RPi Pico (RP2040/W RP2350/W) based board for interfacing one or two MOS SID chips and/or hardware SID emulators over (WEB)U

Public Chat
Similar projects worth following
115 views
0 followers
USBSID-Pico bridges real MOS 6581/8580 SID chips (and SID hardware replacements) to USB, MIDI, WebUSB, and ASID via a Raspberry Pi Pico.

For many of us retro enthusiasts, the Commodore 64's MOS Technology SID chip (6581 and 8580) is regarded as one of the most iconic sound chips in audio history. (Modern) software emulation gets close, but nothing truly replaces the analog filters and warm distortion of real vintage hardware.

I am LouD (short for loudness) and I created USBSID-Pico to bridge real SID silicon directly to modern workstations, phones, and media players over USB (CDC/WebUSB/WebSerial), MIDI, ASID and in the future possibly WiFi and Bluetooth.

Powered by the Raspberry Pi Pico microcontroller series (RP2040 and RP2350), the board acts as a flexible controller for up to two (and soon four) physical SID chips or modern hardware replacements.

For the full origin story, how the project got here, and the meaning behind the "LouD" handle, see the Project Logs tab, where it's told chronologically alongside the hardware timeline.

Key Technical Highlights (v1.0)

  • Dual-SID fixed voltage socket support (6581 or 8580 MOS chip alongside hardware replacements like Swinke SID, FPGASID, and ARMSID).
  • Multi-protocol connectivity via native USB, WebUSB (browser playback), USB-MIDI, and ASID stream protocols.
  • Cross-platform support spanning Windows, macOS, Linux, Android, and AmigaOS.
  • OSHWA Open Source Hardware Certification (NL000035).
  • Schematic and PCB designs made available open-source via the GitHub repo and via PCBWay to enable community self-assembly.

v1.3 Upgrades

  • Mixed SID Setups: Allows simultaneous mixing of different chip generations (e.g., pairing a 12V 6581 in socket 1 with a 9V 8580 in socket 2).
  • Hardware Audio switching: Added digital switch to toggle between mono and true stereo (Socket 1 over left, Socket 2 over right) output directly on the board.
  • OSHWA Open Source Hardware Certification (NL000045).
  • Schematic and PCB designs made available open-source via the GitHub repo and via PCBWay to enable community self-assembly.

v1.5 Upgrades

  • 100% Jumperless Voltage Control: Automatically senses and sets correct supply voltages (9V vs 12V) based on the seated chip, protecting rare SID silicon from overvoltage damage.
  • Automatic switching: Based on the socket voltage, the filter capacitors, audio shunt resistor and digiboost resistor are automatically enabled and disabled.
  • Expanded Footprint: Slightly widened board dimensions to accommodate optional dual ZIF (Zero Insertion Force) sockets.
  • Better compatibility: Generous spacing added to fit larger hardware replacements like the FPGASID without mechanical interference.
  • Upgraded Audio protection: Extra audio input protection by added pulldown resistors when no plug is in the audio jack and added ESD diodes on the audio input.
  • Schematic made available via the GitHub repo to enable community self repair.

Pro Roadmap Features (undecided)

  • Quad-SID support (sockets for 4 hardware SID chips).
  • High-grade audio routing and lower noise floor for studio recording.
  • Dedicated MIDI input port

Firmware

Developing new and unique PCBs to seat microcontrollers logically requires you to develop the firmware for said microcontrollers as well. After having chosen a microcontroller you want to use, you actually need to get some experience with its SDK. This comes with pros and cons; you need to do a deep dive into the SDK of said microcontroller but also narrows your view in relation to other microcontrollers. Or at least, this is my experience, mostly because time is precious and you cannot do everything at once ;-)

Dual Core, Two Jobs

Before diving into the clock and bus tricks, it helps to know how the two ARM cores on the Pico actually split the work.

Core 0 always handles everything USB-related: CDC, WebUSB, MIDI, plus config management. Core 1 on the other hand has multiple jobs, it runs the MIDI engine, the onboard emulator for SID play or Cynthcart when required, the SID tests if triggered by the user and handles the VU when not doing any of the other tasks. When Core 1...

Read more »

  • The whole log

    LouD2 hours ago 0 comments

    Log: The Before - How It Started (Feb-Apr 2024)

    For as long as I can remember I have been interested in how things work. From the first Commodore 64 my parents bought, the first XT PC we owned at home, to the first Pentium PC I bought when I was a teenager, up until today (and beyond) where I work as software engineer. Tech fascinates me, so when I have the option I like to pry it open, find out how it works and put it back together with "improvements" not caring (at first) if it still works. I'm not much of a musician but do like to listen to all kinds of music, including chiptunes of course ;-)

    Inspired by my older brother who repairs Commodore 64s among other things, a new project idea popped into my head. I wanted to see if I could create a SID playing device to listen to the SID tunes I already listened to on my computer and maybe even play them through a real SID chip.

    Around February/March of 2024 I came across a GitHub repo that let you create a SID player based on a Raspberry Pi Pico called SIDPod. I liked how simple it seemed to use a microcontroller to play SID files so of course I had to build it.

    SIDPod testbuild

    The way of adding more SID files to SIDPod's flash made me try and add an SD card to the already great design, this resulted in SIDPod-SDCard.

    SIDPod-SDCard testbuilds

    In early April 2024 still not satisfied by the results I found ESP32-SIDView. This seemed like a nice replacement SID player for SIDPod with the added benefit of supporting real SID chips! Building one was the logical next step, but since I did not own any real SIDs at that time I had to find one. SIDKICK-pico was the first SID replacement I found, no schematics, but orderable. Having some hobby level experience in hardware reverse engineering I recreated a schematic and figured out the Pico to DIP-28 pinout so I could use it on a breadboard.

    ESP32-SIDView testbuild

    Not being satisfied with the spaghetti in that picture, I had to tidy things up a bit.

    ESP32-SIDView tidy testbuild

    Having some issues getting ESP32-SIDView to work, I contacted its developer tobozo through GitHub. We exchanged countless messages about this project on GitHub. We later moved to a different platform and continued talking (and still do) about his and my project(s), coding, cats, daily life etc. This one GitHub issue lead to a, if I may say so, great digital friendship.

    In the meantime I also found SidBerry. A Linux based console application for playing SID tunes via the Raspberry Pi's (not Pico) GPIO pins.

    RPi breadboard extension with SKPico


    Log: FTDI USBSID - First Try at a USB SID Controller (May 2024)

    SidBerry with Raspberry Pi is what in early May of 2024 eventually led to the creation of FTDI USBSID, my first try at creating a USB controlled SID device. To do this I used a FTDI FT223HL breakout board I already owned for reverse engineering. Somewhere in between I acquired a v0.1 SIDKICK-pico and 2 half broken MOS6581's.

    FTDI USBSID

    Creating your own hardware supporting board meant also creating software support. Reminiscing about that, here are the links:

    Using the FTDI breakout board came with a lot of limitations. It wasn't a microcontroller, so all the GPIO writes and input/output switching had to be done in the driver and using the FTDI ecosystem wasn't really something I enjoyed.


    Log: PicoUSBSID - Single SID Perfboard (May 2024)

    By the end of May 2024, having had enough of the FTDI limitations, is what led up to creating USBSID-Pico, or actually called PicoUSBSID at that time. A perfboard version with support for a single SID.

    PicoUSBSID single SID version


    Log: Dual SID Perfboard (June 2024)

    Halfway through June of 2024, I added dual SID support to the same perfboard.

    PicoUSBSID dual SID version

    With the continued support and encouragement of tobozo (thanks m8) the first actual USBSID-Pico v0.1 board came to life that...

    Read more »

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates