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.

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)
  • 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:

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.

Community

Credits