2026 Retrocomputing Challenge: USBSID-Pico Has Two SIDs, Many Inputs

We’ll give you three guesses what the most important bits of silicon in [LouD]’s USBSID-Pico are, and two don’t count. Yes, there’s a Raspberry Pi Pico, and a pair of the unforgettable SID chips from MOS– the sound chip of the C64, the die that launched a thousand chiptunes. Well, unless you build it with a hardware SID replacement, but the goal of this device is to get SIDs hooked up to modern hardware.

To that end, USBSID-Pico can be controlled via USB– obviously– in the form of CDC/WebUSB/WebSerial but also MIDI, and even ASID, which is a specific protocol for streaming SID register data over MIDI. You might be wondering the point, since surely you can get cycle-accurate SID emulation on an RP2040, right? Well, not everyone agrees that cycle-accurate emulation is accurate enough; like the people who swear by the subtle distortions tube amplifiers introduce into the sound, some say the chip’s own inaccuracies give the sound out of the physical device a unique vibe emulators don’t match. That’s a fight for others to litigate; we just appreciate the work that went into getting these old sound chips talking to modern hardware, and getting the project certified as Open Source Hardware.

This combination of old sound and new microcontroller makes the USBSID-Pico a good entry for our ongoing retrocomputing contest, particularly the retro-modern category. Just be aware of PAL and NTSC differences with these old chips, or your beeps and boops might be out of tune. They haven’t made them in decades, but there are more than a few modern replacements for the MOS 6581.

Millenium Falcon HID: Get Unity To Talk To Teensy

Here’s one that proves a hardware project can go beyond blinking LEDs and dumping massive chunks of data onto a serial console. Those practices are fine for some, but [dimtass] has found a more elegant hack for a more civilized age. His 3D Millennium Falcon model gets orientation data from his IMU as an an HID device.

The hardware involved is an MPU6050 6-axis sensor that is interfaced with a Teensy 3.2 board. [dimtass] documents his approach to calibrating the IMU going a bit further by using a Python script to generate offsets. We’ve advocated using Jupyter notebooks in the past and this is a good example of Jupyter plotting the data and visualizing the effect of the offsets in a second pass.

When in action, the Teensy reads IMU data and sends it over a USB RAW HID interface. For the uninitiated, HID transfers are more reliable than USB CDC transfers (virtual serial port) because they use smaller data chunks per event/transaction and usually don’t require special drivers.  On the computer side, [dimtass] has written a small application that gets the IMU values over the RAW HID and then provides it to the visualization application.

A 3D Millennium Falcon model is rendered in Unity, the popular open source game development engine. Even though Unity has an API, this particular approach is more OS specific using a shared-memory technique. The HID application writes to a file (/tmp/hid-shared-buffer) which is then read by Unity to make orientation changes to the rendered model.

[dimtass] provides lots of details on the tools used to bring his project to life and it can be a great starting point for more projects that need interfacing sensors with a visualization system. We have seen ways to turn a person’s head into a joystick and if you need a deeper dive into Unity, look no further.

Continue reading “Millenium Falcon HID: Get Unity To Talk To Teensy” →