Programs / Spc2Midi

Download Spc2Midi 1.3.0

This project aims to translate SPC DSP commands into equivalent MIDI events. Although the emulation core is finished and the sound output is decent, the most important part of it, (SPCs 2 MIDIs) is only partially finished. The excellent SPC Tool has since come out which does almost everything I intended for mine to, so I suggest you use it until then.

The emulation core works with every game savestate and SPC that I have tried. Although it is not necessarily faster than SpcPlay or SpcTool, without the full workload of sound sample processing, it easily plays twice as fast. The player lets you easily skip forward and backward, change play speed, and even play backwards (for pure amusement). If you are interested in the emulation core source, I decided to include it.

Spc2Midi supports a few different sound output modes: FM, wave sample, sine wave. Originally only capable of FM output (for maximum emulation speed), I later added wave sample synthesis (like every other SPC player in existance) and sine wave synthesis (for no reason at all). The FM generated sounds grate on the ears because they are all out of key, and I've given up on finding an algorithm to determine the dominant pitch of each samples.



Spc2Midi .130 preview

  • **Preview** GUI Windows version created.
  • Rather than using numbers from the source directory (0-255), emulation and simulation use uniquely identified samples, since some games remap them while playing. Secret of Evermore and DOOM sound correct (no longer the wrong instruments) and Return of the Jedi is finally audible. Also should fix the rare case of an SPC state captured while the game code begins to play but is still setting up the table.
  • Added clear oscilliscope, faded oscilliscope, ocean oscilliscope, volume bars, and voice info visualizations. And of course, the old horizontal roll sheet is still in there. They are slow because of using the GDI SetDIbitsToDevice. Any suggestions?
  • Set function keys F5,F6,F8 to play/pause/stop. No F7 for record yet.
  • Silly fix. MIDI files exported all notes the same volume because of debugging code I forgot to remove :/
  • Change the stupid hack for drums. Implement drums and banks in all MIDI sound and file outputs.
  • Stop now stops emulation too, when before emulation would continue. Pause still continues preemulate.
  • Put hacks in for both "Sailor Moon RPG" and "Super Puyo Puyo 2" (they were stuck in an infinite loop polling the data port) but they are not yet applied because I'm unsure what method would best detect when those are loaded. Header game name would work, but only if a header was present in the SPC and wouldn't work with savestates.
  • Typo in last version. Dump buffer should have been "dbrr", not "brrd".


    'Mario RPG' intro 'Mario World' note patterns