There are 3.5 tools: PSG (SN76489), OPLL (YM2413), 2612 (YM2612 obviously) and the new RF (RF5C68, alpha state).
All of them got a few updates since the last release (some minor, some major).
The full source code (Visual Basic 6) is available for all of the tools.
mid2vgm PSG v1.2 Win32 Binary and Source
old topic on SMSPower, old version from 2012
Since the last release, it received some bugfixes and a few features requested by Aly James.
E.g. you can disable the panning volume compensation now. And the panning calculation works now properly.
mid2vgm OPLL v1.1 Win32 Binary and Source, Example Files
old topic on SMSPower, old version from 2012
Aside from a few minor bugfixes for edge cases, I added some new features:
- optional Normalization (was always enabled before)
- improved drum frequencies for Toms
- RPN support for Pitch Bend Ranges (00 00), Corase (00 02) and Fine Tuning (00 01)
You need to set a Winamp-style Marker Meta Event to make VGMs loop.
Note: Channel mapping is fixed.
MIDI channels 1-9 go to FM channel 1-9.
MIDI channel 10 goes to the OPLL's rhythm channel, which replaces channels 7-9 if enabled.
Other channels are ignored.
mid2vgm 2612 v0.3.1 Win32 Binary (exe/gyb only), Win32 Binary (incl. 2612edit and example files) and Source
old topic on Sonic Retro, old version from 2013
There were many bugfixes since the last release, thanks to Aly James who did lots of tests with mid2vgm 2612.
All the few new features (like support for GenMDM MIDI controllers) were requested by him, too.
mid2vgm RF alpha v1 Win32 Binary + Source
mid2vgm RF alpha v2 (2021 fix) Win32 Binary + Source
This tool never left the alpha state since 2013, so it is "useable" but not "nice to use".
In order to convert a MIDI to a VGM, you will be asked for an additional instrument definition file.
This specifies, which WAV files are used by which MIDI instrument. Samples must be 8-bit or 16-bit mono.
Loop points can be set in the instrument file. (It's the 3rd column - my documentation is wrong on that.)
It will then generate the contents of the PCM RAM (and it will complain, if there is too much sample data).
So far it is intelligent enough to ignore unused samples (unlike mid2vgm 2612 =P), but it can not swap samples dynamically during the song.
Anyway, have fun with what it does.
Note: Channel mapping is fixed. MIDI channels 1-8 go to PCM channel 1-8. Other channels are ignored.