Here's something I decided to make when I couldn't find a way to mass-convert .sad files. Decided to release it here since I can see how others might find it helpful.
Puggsoy's Video Game Sound Converter (a.k.a VGS Converter or just VGSC)
is an Adobe AIR app that basically has the ability to convert a range of different video game audio formats into .wav files. It can do multiple files at once, and it can be a mixture of formats.
The program uses a library called vgmstream
, which does that actual converting. I'm actually surprised that something like this hasn't been made before, vgmstream has a huge range of supported formats (it says so in the readme, anyway).
How to use
Unfortunately I'm not really useful at C++ or C# or any language that could use this library properly. I'm really good at AS3 though, which is the language for Flash and AIR applications, so I wanted to know if there was a way that I could use vgmstream.
One the very page that I linked to above, there's a link to some builds of a test program. This test program is basically a command-line application that samples what the library can do. Obviously it's not meant to be used properly, but it's got a few command-line parameters that customize how files are converted. Unfortunately this is very tedious and pretty much useless if you want to convert a bunch of files, since it can only do one at a time.
What my program does is it accesses files selected by the user, feeds them through to this program (along with some parameters) and then the program does the rest, producing a .wav file. All my program really does is makes it easier for people to use this program, wrapping it in a GUI and giving it the ability to convert multiple files (that is, converting files one after the other).
Most people should be able to use this without help, it's quite straightforward, but just in case here's some instructions with a screenshot.
Click on "Add Files" to, add files to the list. You can also drag files directly into the list, as well as folders. If you drag a folder, it will add all of the files in the folder and any subfolders as well.
All files will come up with a status of "Unconverted". You can choose one of the three options of where the converted files go, and click "Convert!" to convert them. If you choose a specific folder to convert the files to, any folders you dragged into the program will retain their directory structure.
The files will convert one after the other, and end up with a status of either "Converted", in which case it will have converted successfully. Otherwise it'll say "File isn't supported/doesn't exist", which can mean a number of things but generally means what it says.
The result of a successful conversion will be a .wav file with the same name as the original file, in the chosen location, and the original file will remain unchanged. If the file looped in-game then the converted audio will only contain one loop. Also, remember that if you chose the third option of a specific folder, the converted files of any folders you dragged into the program will retain their folder structure.
Here is a list of the currently supported files according to the vgmstream readme (you can find the readme itself in the vgmstream subfolder of the application). I can't guarantee that all or most of these will work, I've only tested a few of them. However I believe that as long as you got the file from the console associated with its extension below (e.g. a .ss2 file from a PSX game), you should have no trouble converting it.
vgmstream readme Wrote:--- File types supported by this version of vgmstream ---
As manakoAT likes to say, the extension doesn't really mean anything, but it's
the most obvious way to identify files.
- .mib, .mi4 (w/ or w/o .mih)
- .mihb (merged mih+mib)
- .smpl (w/ bad flags)
- .str (MGAV blocked)
- .tec (w/ bad flags)
- .tk5 (w/ bad flags)
- .vgs (w/ bad flags)
GC/Wii DSP ADPCM:
- standard, optional dual file stereo
- .mus (not quite right)
- .thp, .dsp
- .waa, .wac, .wad, .wam
- .aiff (8 bit, 16 bit)
- .asd (16 bit)
- .baka (16 bit)
- .bh2pcm (16 bit)
- .dmsg (16 bit)
- .gcsw (16 bit)
- .gcw (16 bit)
- .his (8 bit)
- .int (16 bit)
- .pcm (8 bit, 16 bit)
- .kraw (16 bit)
- .raw (16 bit)
- .rwx (16 bit)
- .sap (16 bit)
- .snd (16 bit)
- .sps (16 bit)
- .str (16 bit)
- .xss (16 bit)
- .voi (16 bit)
- .wb (16 bit)
- .zsd (8 bit)
Xbox IMA ADPCM:
- .bar (IMA ADPCM)
- .dvi (DVI IMA ADPCM)
- .hwas (IMA ADPCM)
- .idvi (DVI IMA ADPCM)
- .ivaud (IMA ADPCM)
- .myspd (IMA ADPCM)
- .stma (DVI IMA ADPCM)
- .strm (IMA ADPCM)
- .aifc (SDX2 DPCM, DVI IMA ADPCM)
- .asf, .as4 (8/16 bit PCM, EACS IMA ADPCM)
- .ast (GC AFC ADPCM, 16 bit PCM)
- .aud (IMA ADPCM, WS DPCM)
- .aus (PSX ADPCM, Xbox IMA ADPCM)
- .brstm (GC DSP ADPCM, 8/16 bit PCM)
- .emff (PSX APDCM, GC DSP ADPCM)
- .fsb, .wii (PSX ADPCM, GC DSP ADPCM, Xbox IMA ADPCM)
- .genh (lots)
- .musx (PSX ADPCM, Xbox IMA ADPCM, DAT4 IMA ADPCM)
- .nwa (16 bit PCM, NWA DPCM)
- .psw (PSX ADPCM, GC DSP ADPCM)
- .rwar, .rwav (GC DSP ADPCM, 8/16 bit PCM)
- .rwsd (GC DSP ADPCM, 8/16 bit PCM)
- .rsd (PSX ADPCM, 16 bit PCM, GC DSP ADPCM, Xbox IMA ADPCM, Radical ADPCM)
- .rrds (NDS IMA ADPCM)
- .sad (GC DSP ADPCM, NDS IMA ADPCM, Procyon Studios NDS ADPCM)
- .seg (Xbox IMA ADPCM, PS2 ADPCM)
- .sng, .asf, .str, .eam (EA/XA ADPCM or PSX ADPCM)
- .strm (NDS IMA ADPCM, 8/16 bit PCM)
- .ss7 (EACS IMA ADPCM, IMA ADPCM)
- .swav (NDS IMA ADPCM, 8/16 bit PCM)
- .xwb (16 bit PCM, Xbox IMA ADPCM)
- .wav, .lwav (unsigned 8 bit PCM, 16 bit PCM, GC DSP ADPCM, MS IMA ADPCM)
- .2dx9 (MS ADPCM)
- .aax (CRI ADX ADPCM)
- .acm (InterPlay ACM)
- .adp (GC DTK ADPCM)
- .adx (CRI ADX ADPCM)
- .afc (GC AFC ADPCM)
- .ahx (MPEG-2 Layer II)
- .aix (CRI ADX ADPCM)
- .baf (Blur ADPCM)
- .bgw (FFXI PS-like ADPCM)
- .bnsf (G.722.1)
- .caf (Apple IMA4 ADPCM)
- .de2 (MS ADPCM)
- .kcey (EACS IMA ADPCM)
- .lsf (LSF ADPCM)
- .mwv (Level-5 0x555 ADPCM)
- .ogg, .logg (Ogg Vorbis)
- .p3d (Radical ADPCM)
- .rsf (CCITT G.721 ADPCM)
- .sab (Worms 4 soundpacks)
- .s14/.sss (G.722.1)
- .sc (Activision EXAKT SASSC DPCM)
- .scd (MS ADPCM, MPEG Audio, 16 bit PCM)
- .sd9 (MS ADPCM)
- .smp (MS ADPCM)
- .spw (FFXI PS-like ADPCM)
- .stm renamed .ps2stm (DVI IMA ADPCM)
- .str (SDX2 DPCM)
- .stx (GC AFC ADPCM)
- .um3 (Ogg Vorbis)
- .xa (CD-ROM XA audio)
This compatibility list is from the readme, which hasn't been updated in a while. This is most likely because no major formats or features have been added, but there have been slight fixes and tweaks (hence newer vgmstream versions in each release), which you can view on the vgmstream SourceForge changelog
. The changes made are mostly relatively small and only matter for specific situations and thus I'm not going to update VGSC for each revision, only when I update VGSC itself or if significant changes have been made to. However, if you want me to update VGSC to a new revision of vgmstream for a specific purpose, feel free to say so.
You can download the latest version, v1.2
. The program requires Adobe AIR
to run, which is kind of like Java. It is currently available only for Windows.
-Implemented file adding/removing system
-Allowed dragging files into window
-Allowed adding of folders and their subfolders
-Made the window resizable
-The application now remembers the last folder you added files from
-Updated vgmstream to r1007
-Added save location options.
-Updated vgmstream to r979
Initial release. Uses vgmstream r975.
If you find any bugs, have any questions, or think the compatibility list is wrong, please post here. Comments on how awesome you think this is are also welcome, of course