While browsing through past HackaDay articles looking for projects to spark the imagination we noticed a trend. It seems that people are keen on connecting the audio chips from old computer and arcade games to their Arduino! Heck, while we were writing this wiki page a new project showed up on hackaday!

Seeing all these cool projects led us to a moment of inspiration. We could use the features of the new ZPUino 1.0 soft processor to take this type of project to the next level on the Papilio FPGA! By using the Open Source VHDL files for popular audio chips from places like FPGAArcade.com and Opencores.com we could eliminate all the wires, soldering, and wasted GPIO pins. Integrating popular audio chips like the C64 SID, Atari POKEY, and YM2149 into the ZPUino would put them under control of Arduino sketches. Effectively opening up all the Arduino libraries to control the audio chips. Fortunately, Alvaro had already done the heavy lifting of converting the YM2149 into a wishbone core and integrating it into his amazing ZPUino Soft Processor. So it only took a couple hours to hack in the Arduino MIDI library, splice in Arduino code snippets from the Hackaday articles, and end end up with a sketch that turned the Papilio into a YM2149 MIDI Synthesizer!

Whats next?

The ZPUino 1.0 release has C64 SID, POKEY, and YM2149 audio cores integrated into the codebase. So the next step is to make a MIDI synthesizer with the C64 SID core. The C64 SID has built in support for ADSR envelopes so we can define instruments such as a trumpet, drum, piano, or organ very easily in our sketch. If we can get the SID, POKEY, and YM2149 cores all running at the same time and can define instruments with the SID then we can use buttons to switch between which chip or instruments we are playing.

The ultimate goal is to get as many audio cores as we can find converted to work with the ZPUino. There is open source VHDL for NES, Atari 2600, SoundBlaster FM synth, and other sound chips that is available. It would be fun to be able to play all of them individually, together, or create a hybrid that uses 3 SID voices, 3 YM2149 voices, and 3 POKEY voices. Or we could make a SUPER SID that implements 20 SID voices instead of just 3. The FPGA gives us the ability to create things that have never existed in hardware before.