Conversion Tools for Video Game Music (Focuses on Sequenced Music → MIDI)
This article introduces conversion tools for various video game music format, mainly focuses on sequenced music. If your best favorite tool is missing, let me know!
This document is Unlicensed. Please feel free to copy and modify any part of its content as necessary. Credits are preferred but not required.
主にゲーム音楽を MIDI, DLS, Soundfont などに変換するツールを紹介しています。Google 翻訳を使って読めばだいたいの内容はわかると思います。
Allround
Application | ♥ | Author | License | GUI/CLI | Note |
---|---|---|---|---|---|
VGMTrans | ♥ | Mike | zlib License | GUI | Music player for sequenced music. MIDI/DLS/SF2 export is available. Various formats are supported with varying degrees of accuracy. |
VGMToolbox | ♥ | Snakemeat | MIT License | GUI | Collection of small tools with integrated interface. You may want this if you have some general file extraction/conversion tasks (especially when you face to xSF formats in my opinion.) |
vgmstream | ♥ | kode54 and more | ISC License | GUI/CLI | Library for streamed music formats. My favorite frontend is foo_input_vgmstream, a component for foobar2000. |
NES / Famicom
NES music is usually ripped as NSF and its extended format NSFe. NSFe can be turned back to NSF by VGMToolbox, if necessary.
Extract DPCM samples from NES/NSF is possible, but I don't know what approach is the easiest. Is there a good tool for it?
Application | ♥ | Author | License | GUI/CLI | Note |
---|---|---|---|---|---|
nsf2midi | ♥ | Gigo | Not Specified (Closed Source) | GUI | Classic Win32 application. Extra sound chips are supported. Frame-based emulation (i.e. approximately 1/60s resolution with fixed tempo; it's pretty enough for music but you may want more resolution for SFX). Unable to define instrument per duty cycle, sadly. |
nes2midi.lua | gocha | MIT License | GUI (Lua Console) | Lua script for FCEUX. User interface is not very fancy (see my guide). Extra sound chips are not supported. Frame-based emulation. It's worth a try when you couldn't be satisfied with nsf2midi. |
Specific Companies / Titles
In this era, there are no standard for in-game music formats. The music formats of some major games (Mega Man for example) are reversed by ROM hack communities.
Let me know if there is a fancy resource for them!
Game Boy
Game Boy music is usually ripped as GBS. GBS can be turned back to ROM by GBS2GB, if necessary.
Application | ♥ | Author | License | GUI/CLI | Note |
---|---|---|---|---|---|
gb2midi.lua | gocha | MIT License | GUI (Lua Console) | Lua script for VBA-RR V23. User interface is not very fancy (see my guide). Frame-based emulation (i.e. approximately 1/60s resolution with fixed tempo). GBS2GB required for conversion from GBS. |
SNES / Super Famicom
There are two music formats for SNES. Most games are ripped as SPC format. Some other undumpable games are ripped as SNSF format. 99% of tools accept SPC files as input.
SPC file can be converted to ROM by SPC2ROM command-line tool. SNSF file can be turned back to ROM by snsfopt command-line tool.
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
spc2midi | ♥ | Gigo | Not Specified (Closed Source) | GUI | No | Classic Win32 application. Emulation-based (i.e. fixed tempo, pitch detection can be wrong sometimes). Conversion options are fairly adjustable. |
split700 | ♥ | gocha | MIT License | CLI | Yes | Command-line tool to extract SNES BRR samples from SPC file. |
SPCTool | Alpha-II Production | Not Specified (Source Code Available) | GUI | Yes | Advanced SPC player/debugger/converter. It looks great despite it's very aged. However, it's unfortunately buggy and MIDI converter is not implemented. |
I'm not satisfied with spc2midi for several reasons. Creating my own converter is one of my dreams since 2016, but I have no progress as of now.
Specific Companies / Titles
Loveemu (it's me!) have reversed major music engines developed by a number of companies (collections of disassembly are archived at vgm-disasm). The music parsers are ported to VGMTrans, with some heuristic-based music engine detection. It's worth a try!
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
VGMTrans | ♥ | Mike | zlib License | GUI | Yes | The music parser is pretty accurate, but it lacks some MIDI conversion features such as pitch bend slider, vibrato, tremolo, etc. (as of 2018). |
sg2mid | ValleyBell | Not Specified (Source Code Available) | CLI | No | This converts SPC files from Speedy Gonzales: Los Gatos Bandidos to MIDI. No precompiled binary. | |
top2mid | ValleyBell | Not Specified (Source Code Available) | CLI | No | This tool converts SPC files from SFC Tales of Phantasia and Star Ocean to MIDI. No precompiled binary. |
Nintendo 64
USF is a portable music format for Nintendo 64. USF may contain an N64 save state and/or ROM image.
USF file can be turned back to ROM by hcs's usf2rom command-line tool. However I don't know where I can download his ripping tools.
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
N64 Soundbank Tool | ♥ | SubDrag | Unlicense | GUI | Yes | Able to extract sound data as MIDI/DLS files from ROM. A number of games are supported (despite there is a variety of format differences!) |
Seq64 | ♥ | sauraen | GPLv3 | CLI | No | Command-line tool for Nintendo's Audioseq format. It's integrated to N64 Soundbank tool, so you probably don't need to download and use it separately. |
Game Boy Advance
Most of GBA games uses a standard music engine named MusicPlayer2000 (also known as Sappy) developed by Nintendo. Detailed informations are available at the Bregalad's guide (and also explained well in the official SDK).
However, MP2000 is not the only sound driver of GBA. Some games use a custom driver based on MP2000 (Metroid Fusion, Golden Sun, Mario & Luigi: Superstar Saga for example), some other games use a completely different driver such as GAX (by Shin'En), MusyX (by Factor 5), Krawall, SCM3LT, etc.
GSF is a portable sound format for GBA. GSF contains a GBA ROM image with an extra header data. GSF can be turned back to GBA ROM by saptapper, or you can also use VGMTrans if you don't like a command-line tool.
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
GBA Mus Riper | ♥ | Bregalad | Not Specified (Source Code Available) | CLI | Yes | Input a GBA ROM, and MIDI/SF2 files shall be given for you. Even PCM channels are supported. Incredible! |
GBA Music Studio | ♥ | Kermalis | LGPLv3 | GUI | Yes | Integrated music tool. Good replacement for Sappy. Still in development. Requires Visual Studio (Visual C#) for compiling. |
Sappy 2006 mod 17.1 | Kyoufu Kawa, nagona | MIT License | GUI | Yes | Integrated music tool. Able to export/import MusicPlayer2000 sound data. Not maintained anymore. You must install original Sappy 2006 first, otherwise a wild VB6 error will appear. | |
VGMTrans | Mike | zlib License | GUI | No | Not recommended, as of 2018. |
GameCube
HCS Forum - Gamecube Sequence Format?
Sound files can be sometimes compressed/packed. In such a case, you may need an unpacker like WArchive-Tools.
JAudio/JaiSeq (aka. BMS) by Nintendo EAD
While many researchers had worked on the BMS format, the specification isn't documented very much. You can find some resources from the following topics.
- HCS Forum - Gamecube BMS sequence ripper/editor - Design? Language? Existing DAW/sequencer plugin?
- HCS Forum - BMS finally figured out!!! BMS to MIDI Converter/Exporter coming soon! BMS Collection Thread~
Here's a list of tools for GameCube BMS. I haven't tried them so I don't know what tool is the best.
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
VGMTrans (Jasper's fork) | ♥ | Jasper St. Pierre (magcius) | zlib License | GUI | Yes | Fork of VGMTrans that supports GameCube JaiSeq and NintendoWare RSAR. |
gctools | Martin Michelsen (fuzziqersoftware) | Not Specified (Source Code Available) | CLI | Yes? | Set of tools for reading and translating GameCube files. No precompiled binary. | |
BMS_DEC | Yoshimaster96, derselbst | Not Specified (Source Code Available) | CLI | No | No precompiled binary. | |
bms2mid | Cameron Hall (camthesaxman) | Not Specified (Source Code Available) | CLI | No | No precompiled binary. | |
BMSTool | Dylan Ascencio (Sage-of-Mirrors) | Not Specified (Source Code Available) | CLI | No | No precompiled binary. Requires Visual Studio (Visual C#) for compiling. |
MusyX audio engine by Factor 5
HCS Forum - Gamecube MusyX Audio Thread
Here's a list of tools for MusyX. I haven't tried them so I don't know what tool is the best.
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
amuse | Axiomatic Data Laboratories | MIT License | CLI | Yes? | MIDI and SFX sequencer, designed for compatibility with MusyX audio groups. | |
GCMusyXTools | Joseph Gibbs (soneek) | Not Specified (Source Code Available) | CLI | ? | No precompiled binary. | |
musyx-extract | Nisto | Not Specified (Source Code Available) | CLI | Yes (Extraction Only) | Sample extractor for GameCube MusyX files. Requires Python interpreter to run. |
Nintendo DS
SDAT is the standard archive file format for the official Nitro Composer framework developed by Nintendo. The following file formats can be found in the game that uses Nitro Composer.
- Nintendo DS (Nitro Composer)
- SDAT: Nitro Composer Sound Archive
- STRM: Nitro Composer SDAT Audio Stream
- SBNK: Nitro Composer SDAT Sound Bank File
- SWAR: Nitro Composer SDAT Wave Archive
- SWAV: Nitro Composer Wave File
- SSEQ: Nitro Composer SDAT Sound Sequence
- SSAR: Nitro Composer SDAT Sound Sequence Archive (collection for sound effect)
Unlike GBA, DS games have a filesystem in ROM. If you want to explorer and extract files in DS ROM, there are so many tools to do that. I personally prefer Tinke, an advanced viewer and editor for files of NDS games, or ndstool if you prefer CLI.
2SF is the portable sound format for Nintendo DS. As usual, 2SF contains a DS ROM image with an extra header data. 2SF can be turned back to DS ROM by 2sf2rom, or you can also use VGMTrans if you don't like a command-line tool.
NCSF is another PSF format specialized to Nitro Composer. NCSF contains a SDAT file with no extra header. You can turn an NCSF back to SDAT by xSF2EXE tool of VGMToolbox.
SDAT Tools
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
VGMTrans | ♥ | Mike | zlib License | GUI | Yes | Good for exploring sequenced music (SSEQ/SBNK/SWAR). |
NDS Sound Extractor | ♥ | Nintendon | Not Specified (Source Code Available) | CLI | Yes | Probably the best if you want to convert all files in SDAT at a time. |
VGMToolbox | ♥ | Snakemeat | MIT License | GUI | Yes (Extraction Only) | Includes some nice generic SDAT/2SF tools. |
There are more choices. Try searching what you like the best!
Tools for Digital Sound Elements by Procyon Studio (SMD/SWD)
Pokemon Mystery Dungeon Utilities and smd2mid are available.
Read the PMD2 research notes by psy_commando for specifications.
Wii, Wii U, Switch, etc.
Recent Nintendo consoles use formats very similar to Nitro Composer.
- Wii (NW4R; NintendoWare for Revolution)
- BRSTM (RSTM): NW4R Audio Stream
- BRSAR (RSAR): NW4R Sound Archive
- BRWSD (RWSD): NW4R RSAR Sound File
- BRWAR (RWAR): NW4R RSAR Wave Archive
- BRWAV (RWAV): NW4R RSAR Wave File
- BRBNK (RBNK): NW4R RSAR Sound Bank File
- BRSEQ (RSEQ): NW4R RSAR Sound Sequence
- Wii U (NW4F; NintendoWare for Café)
- BFSTM (FSTM): NW4F Audio Stream
- BFSAR (FSAR): NW4F Sound Archive
- BFWSD (FWSD): NW4F FSAR Sound File
- BFWAR (FWAR): NW4F FSAR Wave Archive
- BFWAV (FWAV): NW4F FSAR Wave File
- BFBNK (FBNK): NW4F FSAR Sound Bank File
- BFSEQ (FSEQ): NW4F FSAR Sound Sequence
- Nintendo 3DS (NW4C; NintendoWare for CTR)
- BCSTM (CSTM): NW4C Audio Stream
- BCSAR (CSAR): NW4C Sound Archive
- BCWSD (CWSD): NW4C CSAR Sound File
- BCWAR (CWAR): NW4C CSAR Wave Archive
- BCWAV (CWAV): NW4C CSAR Wave File
- BCBNK (CBNK): NW4C CSAR Sound Bank File
- BCSEQ (CSEQ): NW4C CSAR Sound Sequence
I haven't tried any tools below so I don't know what tool is the best.
Application | ♥ | Author | License | GUI/CLI | Export Samples | Note |
---|---|---|---|---|---|---|
BrawlBox | libertyernie | Not Specified (Source Code Available) | GUI | Yes | Integrated tool for Super Smash Bros. Brawl. Supports a lot of NintendoWare file formats. | |
VGMTrans (Jasper's fork) | Jasper St. Pierre (magcius) | zlib License | GUI | Yes | Fork of VGMTrans that supports GameCube JaiSeq and NintendoWare RSAR. | |
BRSAR Extractor | Atlas | Not Specified (Closed Source) | GUI | Yes (Extraction Only) | Unpacker for BRSAR sound archive. | |
3DSUSoundArchiveTool | Joseph Gibbs (soneek) | Not Specified (Source Code Available) | CLI | Yes (Extraction Only) | Unpacker for BCSAR and BFSAR sound archives. No precompiled binary. |
Genesis / Mega Drive
VGM format is widely used for logging Genesis sound. VGM file can be converted to standard MIDI by vgm2mid, but it may not be accurate sometimes since it's kinda old. Also, you can extract FM synth presets from VGM file by using vgm2pre.
Specific Companies / Titles
I highly recommend to check for ValleyBell's MIDI Converters, a number of command-line tools for various sound drivers are available.
Sega Saturn
seq2mid by Cyber Warrior X: Tool and documentation for the Sega Saturn SEQ format
Needs more information.
Dreamcast
Needs information.
TurboGrafx-16 / PC Engine
Needs more information.
Application | ♥ | Author | License | GUI/CLI | Note |
---|---|---|---|---|---|
pce2midi.lua | gocha | MIT License | GUI (Lua Console) | Lua script for PCEjin. User interface is not very fancy (see my guide). Frame-based emulation (i.e. approximately 1/60s resolution with fixed tempo). Conversion from HES/VGM isn't possible? |
Playstation
In-game sound data formats of Playstation are very PC-friendly. Usually, they are designed to be self-contained, so a song set or a sound bank can be extracted as a single file.
Sony designed standard music format for Playstation. SEQ for music sequence, and VAB for sound banks. VAB is often represented as separate two files, VH (header) and VB (body). SEQ/VAB are widely used, but there are some other formats designed by each developer companies are used as well.
The data is stored in CD-ROM. You can explore files by PC and you may find a music file so easily, if you are fortunate. Sometimes the data may be archived or compressed. In this case, it will be harder to identify the music data.
PSF is a portable sound format for Playstation. PSF represents a single PS-X EXE. Uncompressed PS-X EXE can be extracted by xSF2EXE tool of VGMToolbox.
How To Find Music Data
The easiest first step is to drop a PSF file into VGMTrans. It doesn't always work, but it's a good starting point. The next recommendation is to try PSF Data Finder of VGMToolbox, which has more powerful VH/VB search than VGMTrans.
If no results are given, you may need to save an intermediate dump file which contains the raw sound data, then scan sound files from the file (I will introduce scanning tools later). Here's some example methods for saving the raw dump.
- Decompress PSF by xSF2EXE tool of VGMToolbox (easy)
- Save a whole RAM image by PS1 emulator, such as XEBRA or BizHawk (especially effective for compressed formats)
- Save a whole RAM image by PSF player (requires external memory viewer tool?)
If all the steps above are not effective, probably you will need an advanced research specific to the game.
Tools
Application | ♥ | Author | License | GUI/CLI | Supported Formats | Export Samples | Note |
---|---|---|---|---|---|---|---|
VGMTrans | ♥ | Mike | zlib License | GUI | Various (see README) | Yes | VGMToolbox has more powerful VH/VB search. Not supporting the early version of AKAO, as of 2018. |
VGMToolbox | ♥ | Snakemeat | MIT License | GUI | SEQ/VAB | Yes (Extraction Only) | Includes various PSF utilities. I prefer using PSF Data Finder for extracting VAB. |
bin2seq | ♥ | Anonymous | MS-PL | CLI | SEQ/VAB, SSSQ/SSHD, KCET, SNTP, SQV, SEQQ and more (see Readme.txt) | Yes (Extraction Only) | Scanning tool for extracting various sound sequence formats. |
PGconv | tamogami | Not Specified (Closed Source) | GUI | SEQ/VAB and few others | Yes | Classic Win32 application often used by Japanese researchers. | |
seq2mid | ValleyBell | Not Specified (Source Code Available) | CLI | SEQ | No | SEQ to MIDI converter with some advanced options, including volume conversion and instrument remapping. No precompiled binary. | |
seq2mid | loveemu | MIT License | CLI | SEQ and Dragon Quest SSEQ | No | Simple SEQ to MIDI converter, with no special options. | |
AKAO2MID | ValleyBell | Not Specified (Source Code Available) | CLI | AKAO v1 and v2 | No | Square AKAO sequence to MIDI converter. No precompiled binary. | |
dmfMus | loveemu | MIT License | CLI | Natsume's PAC Sound Archive | Yes | Byproduct of creating Hokuto no Ken PSF. Not very user-friendly. |
By the way, jPSXdec is good for extracting audio/video resources. It's free for non-commercial use.
TODO:
- sssq2mid (for games developed by Sony)
- sqv2mid (for Brave Fencer Musashiden)
Playstation 2
Try VGMTrans and VGMToolbox in the same way as Playstation. That should be enough for you, if the game uses the standard SQ/HD/BD data. Those tool can read PSF2, the portable sound format for Playstation 2.
Playstation Portable
You can extract MID/PHD/PBD files by PSP Data Finder of VGMToolbox.
PSFP is a portable sound format for Playstation Portable. You may find further informations about PSFP on HCS forum.
Retouching Tools
Application | ♥ | Author | License | GUI/CLI | Note |
---|---|---|---|---|---|
MidiSplit | ♥ | gocha | MIT License | CLI | Command-line tool that splits single track into each tracks according to instruments. |
SmfExTime | ZEX | Not Specified (Source Code Available) | CLI | Command-line tool that flexibily scales timebase and tempo with keeping actual song speed. Usually used for correcting the tempo of MIDI data dumped by emulators. |
VST/AU Plug-ins for DAW
Soundfont Player
Application | ♥ | Developed by | Platform | Pricing | Note |
---|---|---|---|---|---|
sforzando | ♥ | Plogue | Windows, macOS | Free | Powerful SFZ player with SF2 import feature. |
Chip Emulator/Simulator
Application | Developed by | Platform | Pricing | Note |
---|---|---|---|---|
chipsounds | Plogue | Windows, macOS | $95 | 8-bit soft synthesizer. Features chips like the NES, Atari ST, ZX Spectrum 128, Nintendo Game Boy, Commodore 64 and VIC-20, Atari 400/800 and 2600. |
C700 | osoumen | Windows, macOS | Free | Sampler that emulates SNES S-DSP. By the way, you may want to check dpcmc from the same author, if you want a NES DPCM converter. |
FMDrive and Super PSG | Aly James Lab | Windows | €10+ | Virtual synthesizer instruments for Sega game consoles. VST bridge is required for 64bit DAW. |
Other Instruments
Application | Developed by | Platform | Pricing | Note |
---|---|---|---|---|
SANA 8BIT VST | Masaki Mori | Windows, macOS | Free (GPLv3) | Simple waveform synthesizer for chiptune, having pitch sweep function, vibrato function and wave scope. |
Super Audio Cart | Impact Soundworks | Kontakt Player | $149 | Sample library that features eight legendary systems: NES, FC, SNES, GB, 2600, C64, SMS, GEN. Includes standalone SNESVerb plugin. Easy-to-use UI. |
Sound Canvas VA | Roland | Windows, macOS | $125 | Virtual instrument of legendary '90s synthsizer. You might want to subscribe Roland Cloud if you want more Roland synths. |
KORG Collection - M1 | Korg | Windows, macOS | $49.99 | Virtual instrument of legendary '90s synthsizer. Full bundle of KORG Collection has more synths. |
Digital Synsations | UVI | Windows, macOS | $149 | Virtual 90's synthesizers instruments. Features the Korg M1, Ensoniq VFX, SY77 and D50. |
Proteus VX | E-mu | Windows | Free | Virtual instrument of legendary '90s synthsizer. VST bridge is required for 64bit DAW. |