Real hardware audio player for YM2413, AY-3-8910, SCC, YM3812 and SID

By imqqmi

Supporter (12)

imqqmi's picture

07-02-2021, 15:24

The last couple of months I've been toying with the idea to create a hardware player that can use VGMPlay data to play on actual hardware. As a proof of concept I've managed to program a PIC microcontroller and play pre compiled data from Aleste and works ok, aside from some minor timing issues.

I'm planning on replacing the PIC I've used so far with an Arduino Due so that i can connect an SD card for storage, have a USB port available for possible 'tethered' play from a PC using a serial port interface, it may be possible to add support in emulators and/or VGMPlayers or even create a midi device to use these chips with composer software. The Due has a fast usb2 interface, should be fast enough to push data quick enough.
The Due is probably also quick enough to run a Z80 emulator to create register data for the synth chips, but I prefer VGMs simplicity, and I'm not sure a Z80 emulator would fit in the memory.

I'll add a display to show what track is playing, maybe a way to create playlists.
I'll design a shield for the Arduino that will hold the synth chips and connectors for SD card and display, filtering, oscillators, DACs and a pre-amp. I've made such a shield before using PCBWAY, quality was pretty good.

I'm trying to use easily sourced modules so that it can be relatively easy to re-create by others (apart from the synth chips, these can be hard to find or expensive to buy).

Apart from the YM3812 (adlib), I've got all the chips desoldered (and placed a socket so that the chips can be returned to the original hardware). The computers and cartridges were in storage for years so I thought I could put them to good use by creating a hardware player from them. Still have 2x msx1 (Canon and Goldstar), 3x msx2 (NMS8235, -45 and -50), 1x C64, scc (pennant race) and fmpac clone. Also have an Amiga 500 but I'm not planning on including a mod player for now. Paula is safe for now Wink.

I'm working on the SCC now, but had a little trouble getting all the info to wire it up (on breadboard for now) and how to get the data to the chip from the Arduino. Since there doesn't appear to be a datasheet, I've made one of my own with all the essential data (sourced from this website and others, sources are in the pdf too) in one pdf. I'll use an old AD7541 12 bit DAC for it for now, as desoldering those resistor arrays is tricky, can be easily damaged. I'll probably create an smd 1% r2r ladder or something on the PCB. These DACs can be relatively expensive (15-30 euros depending on accuracy).

If you're interested in the scc datasheet, here's the PDF. It may contain mistakes, so if you find any please let me know:
http://makercentral.net/media/forum/SCC_K051649_Datasheet.pdf

I've ordered the YM3812 from aliexpress, hopefully I get lucky and get an actually working one ;) I've ordered the YM2413 before but these didn't really work, some notes dropped or didn't play at all. The desoldered clone worked immediately though.

I'm also looking at adding other synth chips to support more systems. For example the YM2151 that was used in arcade machines, ie Outrun.

To keep things as they are, I've been thinking about a way to connect konami scc and fmpac cartridges to this system so that the chips don't need to be removed. Finding the cartridge slot is going to be a challenge I think. If anyone has a source please let me know.

Once the project is done (or if I abandon it) I'll put it up on github.

Just thought I'd share :)

Login or register to post comments