Along with ICEknight's request for XM support, I would also love to see a feature that allows ripping of the voices/samples from the midi, for a perfect conversion. I know it sounds lazy, but there are times when finding the perfect voice for a track can be frustrating.

Can't Nineko's 2612 Instrument editor tool, found alongside Mid2smps, already rip voices from various sources? The resulting instrument assembly can then be used in conjunction with that tool to include the voices in the new track created, right?

Bump for smps2mid v0.3. (And today I release the source, too.)
Aside from a few bugfixes and a now 100% GM-correct volume calculation, I did these few but big updates:

- implemented Sonic 3 & Knuckles coordination flags
- added support for the Master System/Game Gear games (including all revisions) Sonic 2, Sonic Chaos, Sonic Triple Trouble and Sonic Blast
- improved Modulation controllers (they still ignore the vibrato delay, but at least it sounds good with the MS GS midi driver)
- improved support for Oerg866's SMPS player - it now works with all SMPS player ROMs and not just the one I used

Note on the Sonic 2 SMS and later SMPS format:
They're 3 revisions. Sonic 2 (rev 1), Sonic Chaos (rev 2) and Sonic Triple Trouble/Sonic Blast (rev 3). rev2+ has additional coordination flags (D8 to DF) to set the channel volume. D8 is PSG volume 0, DF is PSG volume 7.
rev3 (rev2 maybe too) has coord. flag FC, which does the same as flag EB in Sonic & Knuckles.
rev1/2 and rev3 have a different way of calculating their frequencies, so the notes or the key displacement value in rev3 must be 3 octaves lower than in rev1/2.
All the SMS drums that sound (they're some that don't do anything) and mapped to quite fitting GM drum sounds. (more hardcoded stuff )

smps2mid still fails on some of the Sonic & Knuckles songs. The problem is that I seem to have a wrong music pointer list, so some of the music pointers are wrong.

This is awesome! Working with the DAC/PSG channels is so much better than working with a MIDI converted with VGM2MID. Now I can finally fix up a Diamond Dust Zone Act 1 MIDI that doesn't sound like ass.

Although I do have one request. Is it possible to split certain FM channels that change their "instrument" to separate tracks? I know that the MIDIs SMPS2MIDI outputs change the instruments within the one FM channel, but I'd like the option to output the changes to separate channels. Like for example:

Chemical Plant before splitting:

Chemical Plant after splitting:

This is from a MIDI converted with VGM2MIDI but you get the idea.

I'm not sure if there's a program out there that can do this to a MIDI - if there is, I'd love to know what it is. I had to split everything manually so I could work the the entire song in FL Studio. :\

Although I do have one request. Is it possible to split certain FM channels that change their "instrument" to separate tracks? I know that the MIDIs SMPS2MIDI outputs change the instruments within the one FM channel, but I'd like the option to output the changes to separate channels.

It's easier to write a seperate tool that does that. It would be an easy task, so I'll write one when I have some time.

for PSG noise: "Note based on PSG instrument" or "use SMPS note and set vary PSG instrument"

Sonic & Knuckles still doesn't work properly though. All you can do is decompressing the sound driver manually, insert it into the ROM and make smps2mid use the decompressed pointer lists.
I also need to add a few additional features to improve SMPS Z80 pointer lists in general. There is currently no way to speficy a list of ROM bank values for the pointers. (And not only S&K and S3D are using such lists.)

Also, if you wonder about the version number: fixed PWM volume algrithms were planned for 0.4.0 final, but I did SMPS Z80 support first.

About those "generic" SMPS formats:
SMPS 68k should work with almost all SMPS 68k games. I know that MJ's Moonwalker and Nekketsu Koukou Dodgeball Bu are using Sonic 1-style Modulation commands, so they won't convert correctly.
SMPS Z80 should work with the majority of the SMPS Z80 games, but modified drivers and commands are a lot more common. Ghostbusters has a few custom flags but works mostly. OutRunners and Virtua Racing use a completely custom command set and don't work.
There are a few differences between SMPS "Z80 a" and "Z80 b". One can control the YM2612 timer to change the music/sfx speed (Z80 a) and the other one can jump out of a loop (Z80 b). Just try the other variant if one doesn't work.