Blog Home

Play SNES SPC audio files from your browser using original hardware and Arduino

Arduino TeamAugust 9th, 2021

Listening to those classic 16-bit sounds from the ’90s video game era brings back a wave of nostalgia for those who grew up with a console. On the Super Nintendo Entertainment System, outputting sound was accomplished by an integrated circuit called the SNES Audio Processing Unit (APU for short), which was responsible for taking SNES SPC files and transforming them into waveforms. Mauri Mustonen — who goes by Kazooie on YouTube — wanted to isolate this chip to play authentic music from his favorite tracks on his browser without needing to boot up the entire SNES console. 

The system he came up with has an Arduino Micro at its heart that is connected to the SNES APU via a series of wires. Some of these links are for putting the APU into read or write mode, while others set the desired port and address for where the song data should be written. Data is sent or received over a set of eight parallel data lines. 

There is a web-based frontend written in Python that allows a user to select their songs of choice, which are transferred to the Arduino over USB and then sent to the APU via its parallel lines. From there, the IC runs a bootloader that begins playing the audio files. 

You can read more about how this system works and check out the code here on GitHub, or you can see Mustonen’s demo video below.