I finally got around to making some schematics for my dual-YM2612 synthesizer. There might be some bugs in the layout and my EE knowledge is limited so I may have done some dumb stuff. Rough draft ahead.
This device takes MIDI input through a standard 5-pin MIDI DIN connector, generates sound, and outputs non-amplified audio via an unbalanced stereo connector (3.5mm or 1/4" TRS). Alternatively, it can accept a filtered stream of a VGM file via USB from a host computer running the 'vgmfilter' program (source provided in the 'vgmfilter' directory with a makefile that should compile easily under Linux).
The device has a 256 kilobit EEPROM capable of storing around 150-200 custom instruments (or instruments ripped from games). The EEPROM is programmed with a custom loader by enabling the relevant section of code and using the tserial program, using an eeprom generated from compressed and truncated OPM files called 'PAK' files.
In the 'tools' directory are several potentially useful tools and documents:
- opm2pak.py - a Python program that can take an OPM file and produce several PAK instrument files. Several PAK files should be concatenated together directly (i.e. using the 'cat' program) before being flashed to the EEPROM
tserial.py - a Python program that flashes EEPROM files (made from several concatenated PAK files) to the device via USB serial
bitlist.txt - a crude specification for the PAK file format containing YM2612 parameters followed by the byte number of each parameter at which the value for that parameter is stored
pak.eeprom - a sample EEPROM created from 100+ PAK files containing instruments from various games
opms - a directory containing the 2612.org OPM file dump and some pre-generated PAK files
The code supports an RS232 serial LCD character display and has some (currently disabled because it eats too many microprocessor cycles) support for rotary encoder input and for LED matrix outputs using MAX72XX controllers.
I'm currently designing a printed circuit board for this device, after which I'll work on an enclosure and then will spend more time polishing the code.
Schematic (PDF format): http://7355608.net/ym2612play.pdf
Schematic (EAGLE): http://7355608.net/ym2612play.sch