2017-10-09 04:08:04 +02:00
|
|
|
# vgmstream
|
|
|
|
|
2019-01-17 02:34:40 +01:00
|
|
|
[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/losnoco/vgmstream?branch=master&svg=true "Build Status")](https://ci.appveyor.com/project/kode54/vgmstream/branch/master/artifacts)
|
2018-01-20 04:47:34 +01:00
|
|
|
|
|
|
|
|
2017-12-24 01:30:57 +01:00
|
|
|
This is vgmstream, a library for playing streamed (pre-recorded) audio
|
|
|
|
from video games.
|
2017-10-09 04:08:04 +02:00
|
|
|
|
|
|
|
There are multiple end-user bits:
|
2017-12-28 22:30:45 +01:00
|
|
|
- a command line decoder called "test.exe/vgmstream-cli"
|
2017-10-09 04:08:04 +02:00
|
|
|
- a Winamp plugin called "in_vgmstream"
|
|
|
|
- a foobar2000 component called "foo_input_vgmstream"
|
|
|
|
- an XMPlay plugin called "xmp-vgmstream"
|
|
|
|
- an Audacious plugin called "libvgmstream"
|
2017-12-28 22:30:45 +01:00
|
|
|
- a command line player called "vgmstream123"
|
2017-10-09 04:08:04 +02:00
|
|
|
|
2017-12-24 01:30:57 +01:00
|
|
|
Help and newest builds can be found here: https://www.hcs64.com/
|
|
|
|
|
2019-01-17 02:34:40 +01:00
|
|
|
Latest development is usually here: https://github.com/losnoco/vgmstream/
|
2017-12-24 01:30:57 +01:00
|
|
|
|
|
|
|
## Needed extra files (for Windows)
|
|
|
|
Support for some codecs (Ogg Vorbis, MPEG audio, etc) is done with external
|
|
|
|
libraries, so you will need to have certain DLL files.
|
2017-11-24 21:01:28 +01:00
|
|
|
|
2017-10-09 04:08:04 +02:00
|
|
|
In the case of the foobar2000 component they are all bundled for convenience,
|
2019-01-17 02:34:40 +01:00
|
|
|
or you can get them here: https://github.com/losnoco/vgmstream/tree/master/ext_libs
|
2017-12-24 01:30:57 +01:00
|
|
|
(bundled here: https://f.losno.co/vgmstream-win32-deps.zip, may not be latest).
|
2017-10-09 04:08:04 +02:00
|
|
|
|
2018-08-12 22:59:38 +02:00
|
|
|
Put the following files somewhere Windows can find them:
|
|
|
|
- `libvorbis.dll`
|
|
|
|
- `libmpg123-0.dll`
|
|
|
|
- `libg7221_decode.dll`
|
|
|
|
- `libg719_decode.dll`
|
|
|
|
- `avcodec-vgmstream-58.dll`
|
|
|
|
- `avformat-vgmstream-58.dll`
|
|
|
|
- `avutil-vgmstream-56.dll`
|
|
|
|
- `swresample-vgmstream-3.dll`
|
|
|
|
- `libatrac9.dll`
|
|
|
|
- `libcelt-0061.dll`
|
|
|
|
- `libcelt-0110.dll`
|
2017-11-24 21:01:28 +01:00
|
|
|
|
2017-12-28 22:30:45 +01:00
|
|
|
For Winamp/XMPlay/command line this means in the directory with the main .exe,
|
|
|
|
or in a system directory, or any other directory in the PATH variable.
|
2017-10-09 04:08:04 +02:00
|
|
|
|
2017-12-28 22:30:45 +01:00
|
|
|
### test.exe/vgmstream-cli
|
2017-10-09 04:08:04 +02:00
|
|
|
```
|
2017-11-24 21:01:28 +01:00
|
|
|
Usage: test.exe [-o outfile.wav] [options] infile
|
2017-10-09 04:08:04 +02:00
|
|
|
Options:
|
2018-11-04 00:11:02 +01:00
|
|
|
-o outfile.wav: name of output .wav file, default infile.wav
|
2017-10-09 04:08:04 +02:00
|
|
|
-l loop count: loop count, default 2.0
|
2018-11-04 00:11:02 +01:00
|
|
|
-f fade time: fade time in seconds after N loops, default 10.0
|
|
|
|
-d fade delay: fade delay in seconds, default 0.0
|
|
|
|
-F: don't fade after N loops and play the rest of the stream
|
2017-10-09 04:08:04 +02:00
|
|
|
-i: ignore looping information and play the whole stream once
|
2018-11-04 00:11:02 +01:00
|
|
|
-e: force end-to-end looping
|
|
|
|
-E: force end-to-end looping even if file has real loop points
|
|
|
|
-s N: select subsong N, if the format supports multiple subsongs
|
|
|
|
-m: print metadata only, don't decode
|
|
|
|
-L: append a smpl chunk and create a looping wav
|
|
|
|
-2 N: only output the Nth (first is 0) set of stereo channels
|
2017-10-09 04:08:04 +02:00
|
|
|
-p: output to stdout (for piping into another program)
|
|
|
|
-P: output to stdout even if stdout is a terminal
|
2018-11-04 00:11:02 +01:00
|
|
|
-c: loop forever (continuously) to stdout
|
2017-10-09 04:08:04 +02:00
|
|
|
-x: decode and print adxencd command line to encode as ADX
|
2018-08-24 19:37:31 +02:00
|
|
|
-g: decode and print oggenc command line to encode as OGG
|
2017-10-09 04:08:04 +02:00
|
|
|
-b: decode and print batch variable commands
|
2018-11-04 00:11:02 +01:00
|
|
|
-r: output a second file after resetting (for testing)
|
|
|
|
-t file: print if tags are found in file
|
2017-10-09 04:08:04 +02:00
|
|
|
```
|
|
|
|
Typical usage would be: ```test -o happy.wav happy.adx``` to decode ```happy.adx``` to ```happy.wav```.
|
|
|
|
|
2018-01-05 00:57:00 +01:00
|
|
|
Please follow the above instructions for installing the other files needed.
|
|
|
|
|
2017-10-09 04:08:04 +02:00
|
|
|
### in_vgmstream
|
|
|
|
Drop the ```in_vgmstream.dll``` in your Winamp plugins directory. Please follow
|
|
|
|
the above instructions for installing the other files needed.
|
|
|
|
|
|
|
|
### xmp-vgmstream
|
|
|
|
Drop the ```xmp-vgmstream.dll``` in your XMPlay plugins directory. Please follow
|
|
|
|
the above instructions for installing the other files needed.
|
|
|
|
|
|
|
|
Note that there are minor differences compared to in_vgmstream. Since XMPlay
|
|
|
|
supports Winamp plugins you may also use ```in_vgmstream.dll``` instead.
|
|
|
|
|
|
|
|
Because the XMPlay MP3 decoder incorrectly tries to play some vgmstream exts,
|
|
|
|
you need to manually fix it by going to **options > plugins > input > vgmstream**
|
2017-12-03 17:27:27 +01:00
|
|
|
and in the "priority filetypes" put: ```ahx,asf,awc,ckd,fsb,genh,msf,p3d,rak,scd,txth,xvag```
|
2017-10-09 04:08:04 +02:00
|
|
|
|
2017-12-03 17:27:27 +01:00
|
|
|
### foo_input_vgmstream
|
2017-10-09 04:08:04 +02:00
|
|
|
Every file should be installed automatically by the .fb2k-component bundle.
|
|
|
|
|
2017-12-03 17:27:27 +01:00
|
|
|
### Audacious plugin
|
2018-01-05 00:57:00 +01:00
|
|
|
Needs to be manually built. Instructions can be found in the BUILD document.
|
2017-10-09 04:08:04 +02:00
|
|
|
|
2017-12-28 22:30:45 +01:00
|
|
|
### vgmstream123
|
2018-01-05 00:57:00 +01:00
|
|
|
Needs to be manually built. Instructions can be found in the BUILD document.
|
|
|
|
|
|
|
|
```
|
|
|
|
Usage: vgmstream123 [options] INFILE ...
|
|
|
|
```
|
|
|
|
|
|
|
|
The program is meant to be a simple stand-alone player, supporting playback
|
|
|
|
of vgmstream files through libao. Files compressed with gzip/bzip2/xz also
|
|
|
|
work, as identified by a .gz/.bz2/.xz extension. The file will be decompressed
|
|
|
|
to a temp dir using the respective utility program (which must be installed
|
|
|
|
and accessible) and then loaded.
|
|
|
|
|
|
|
|
It also supports playlists, and will recognize a special extended-M3U tag
|
|
|
|
specific to vgmstream of the following form:
|
|
|
|
```
|
|
|
|
#EXT-X-VGMSTREAM:LOOPCOUNT=2,FADETIME=10.0,FADEDELAY=0.0,STREAMINDEX=0
|
|
|
|
```
|
|
|
|
(Any subset of these four parameters may appear in the line, in any order)
|
|
|
|
|
|
|
|
When this "magic comment" appears in the playlist before a vgmstream-compatible
|
|
|
|
file, the given parameters will be applied to the playback of said file. This makes
|
|
|
|
it feasible to play vgmstream files directly instead of needing to make "arranged"
|
|
|
|
WAV/MP3 conversions ahead of time.
|
|
|
|
|
|
|
|
The tag syntax follows the conventions established in Apple's HTTP Live Streaming
|
|
|
|
standard, whose docs discuss extending M3U with arbitrary tags.
|
2017-12-28 22:30:45 +01:00
|
|
|
|
2018-01-07 20:13:42 +01:00
|
|
|
|
|
|
|
## Special cases
|
2018-10-20 14:54:49 +02:00
|
|
|
vgmstream aims to support most audio formats as-is, but some files require extra
|
2018-01-07 20:13:42 +01:00
|
|
|
handling.
|
|
|
|
|
|
|
|
### Renamed files
|
|
|
|
A few extensions that vgmstream supports clash with common ones. Since players
|
2018-10-20 14:54:49 +02:00
|
|
|
like foobar or Winamp don't react well to that, they may be renamed to make
|
|
|
|
them playable through vgmstream.
|
|
|
|
- .aac to .laac (tri-Ace games)
|
|
|
|
- .ac3 to .lac3 (standard AC3)
|
|
|
|
- .aif to .aiffl or .aifcl (standard Mac AIF)
|
2019-01-20 00:50:39 +01:00
|
|
|
- .asf to .lasf (EA games, Argonaut ASF)
|
2018-10-20 14:54:49 +02:00
|
|
|
- .flac to .lflac (standard FLAC)
|
|
|
|
- .mp2 to .lmp2 (standard MP2)
|
|
|
|
- .mp3 to .lmp3 (standard MP3)
|
|
|
|
- .mp4 to .lmp4 (standard M4A)
|
|
|
|
- .mpc to .lmpc (standard MPC)
|
|
|
|
- .ogg to .logg (standard OGG)
|
|
|
|
- .opus to .lopus (standard OPUS or Switch OPUS)
|
|
|
|
- .stm to .lstm (Rockstar STM)
|
|
|
|
- .wav to .lwav (standard WAV)
|
|
|
|
- .wma to .lwma (standard WMA)
|
|
|
|
- .(any) to .vgmstream (FFmpeg formats or TXTH)
|
2018-01-07 20:13:42 +01:00
|
|
|
Command line tools don't have this restriction and will accept the original
|
|
|
|
filename.
|
|
|
|
|
2018-10-20 14:54:49 +02:00
|
|
|
The main advantage to rename them is that vgmstream may use the file's
|
|
|
|
internal loop info, or apply subtle fixes, but is also limited in some ways
|
|
|
|
(like standard/player's tagging).
|
|
|
|
|
|
|
|
.vgmstream is a catch-all extension that may work as a last resort to make
|
|
|
|
a file playable.
|
|
|
|
|
|
|
|
When extracting from a bigfile, sometimes internal files don't have an actual
|
2018-01-07 20:13:42 +01:00
|
|
|
name+extension. Those should be renamed to its proper/common extension, as the
|
|
|
|
extractor program may guess wrong (like .wav instead of .at3 or .wem). If
|
2018-10-20 14:54:49 +02:00
|
|
|
there is no known extension, usually the header id string may be used instead.
|
|
|
|
|
|
|
|
Note that vgmstream also accepts certain extension-less files too.
|
|
|
|
|
|
|
|
### Demuxed videos
|
|
|
|
vgmstream also supports audio from videos, but usually must be demuxed (extracted
|
|
|
|
without modification) first, since vgmstream doesn't attempt to support them.
|
|
|
|
|
|
|
|
The easiest way to do this is using VGMToolBox's "Video Demultiplexer" option
|
|
|
|
for common game video formats (.bik, .vp6, .pss, .pam, .pmf, .usm, .xmv, etc).
|
|
|
|
|
|
|
|
For standard videos formats (.avi, .mp4, .webm, .m2v, .ogv, etc) not supported
|
|
|
|
by VGMToolBox FFmpeg binary may work:
|
|
|
|
- `ffmpeg.exe -i (input file) -vn -acodec copy (output file)`
|
|
|
|
Output extension may need to be adjusted to some appropriate audio file depending
|
|
|
|
on the audio codec used. ffprobe.exe can list this codec, though the correct audio
|
|
|
|
extension depends on the video itself (like .avi to .wav/mp2/mp3 or .ogv to .ogg).
|
2018-01-07 20:13:42 +01:00
|
|
|
|
2018-10-20 14:54:49 +02:00
|
|
|
Some games use custom video formats, demuxer scripts in .bms format may be found
|
|
|
|
on the internet.
|
|
|
|
|
|
|
|
### Companion files
|
2018-01-07 20:13:42 +01:00
|
|
|
Some formats have companion files with external looping info, and should be
|
|
|
|
left together.
|
|
|
|
- .mus (playlist for .acm)
|
2018-10-20 14:54:49 +02:00
|
|
|
- .pos (loop info for .wav, and sometimes .ogg)
|
|
|
|
- .ogg.sli or .sli (loop info for .ogg)
|
|
|
|
- .ogg.sfl (loop info for .ogg)
|
|
|
|
- .vgmstream.pos (loop info for FFmpeg formats)
|
|
|
|
- also possible for certain extensions like .lflac.pos
|
|
|
|
|
|
|
|
Similarly some formats split header and/or data in separate files (.sgh+sgd,
|
|
|
|
.wav.str+.wav, (file)_L.dsp+(file)_R.dsp, etc). vgmstream will also detect
|
|
|
|
and use those as needed and must be tegether, even if only one of the two
|
|
|
|
will be used to play.
|
|
|
|
|
|
|
|
.pos is a small file with 32 bit little endian values: loop start sample
|
|
|
|
and loop end sample. For FFmpeg formats (.vgmstream.pos) it may optionally
|
|
|
|
have total samples after those.
|
2018-01-07 20:13:42 +01:00
|
|
|
|
|
|
|
### Decryption keys
|
|
|
|
Certain formats have encrypted data, and need a key to decrypt. vgmstream
|
|
|
|
will try to find the correct key from a list, but it can be provided by
|
|
|
|
a companion file:
|
|
|
|
- .adx: .adxkey (derived 6 byte key, in start/mult/add format)
|
|
|
|
- .ahx: .ahxkey (derived 6 byte key, in start/mult/add format)
|
|
|
|
- .hca: .hcakey (8 byte decryption key, a 64-bit number)
|
2018-10-20 14:54:49 +02:00
|
|
|
- May be followed by 2 byte AWB scramble key for newer HCA
|
2018-01-21 01:47:17 +01:00
|
|
|
- .fsb: .fsbkey (decryption key, in hex)
|
2018-01-07 20:13:42 +01:00
|
|
|
|
|
|
|
The key file can be ".(ext)key" (for the whole folder), or "(name).(ext)key"
|
|
|
|
(for a single file). The format is made up to suit vgmstream.
|
|
|
|
|
|
|
|
### Artificial/generic headers
|
|
|
|
In some cases a file only has raw data, while important header info (codec type,
|
|
|
|
sample rate, channels, etc) is stored in the .exe or other hard to locate places.
|
|
|
|
|
|
|
|
Those can be played using an artificial header with info vgmstream needs.
|
|
|
|
|
|
|
|
**GENH**: a byte header placed right before the original data, modyfing it.
|
|
|
|
The resulting file must be (name).genh. Contains static header data.
|
|
|
|
Programs like VGMToolbox can help to create GENH.
|
|
|
|
|
|
|
|
**TXTH**: a text header placed in an external file. The TXTH must be named
|
|
|
|
".txth" or ".(ext).txth" (for the whole folder), or "(name.ext).txth" (for a
|
|
|
|
single file). Contains dynamic text commands to read data from the original
|
|
|
|
file, or static values.
|
2018-10-20 14:54:49 +02:00
|
|
|
|
2018-04-15 01:47:46 +02:00
|
|
|
**TXTP**: a text playlist that works as a single song. Can contain a list of
|
2019-01-02 23:48:31 +01:00
|
|
|
filenames to play as one (ex. "intro.vag" "loop.vag"), separate channel files
|
|
|
|
to join as a single multichannel file, subsong index (ex. bgm.sxd#10), or
|
|
|
|
channel mask to allow only certain channels (ex. "song.adx#c1,2").
|
2018-01-07 20:13:42 +01:00
|
|
|
|
2018-10-20 14:54:49 +02:00
|
|
|
Creation of those files is meant for advanced users, docs can be found in
|
|
|
|
vgmstream source.
|
|
|
|
|
2019-01-27 23:40:50 +01:00
|
|
|
### Plugin conflicts
|
|
|
|
Since vgmstream supports a huge amount of formats it's possibly that some of
|
|
|
|
them are also supported in other plugins, and this sometimes causes conflicts.
|
|
|
|
If a file that should isn't playing or looping, first make sure vgmstream is
|
|
|
|
really opening it (should show "vgmstream" somewhere in the file info), and
|
|
|
|
try to remove a few other plugins. foobar's ffmpeg plugin and foo_adpcm are
|
|
|
|
known to cause issues.
|
|
|
|
|
2019-02-10 18:43:24 +01:00
|
|
|
### Channel issues
|
|
|
|
Some games layer a huge number of channels, that are disabled or downmixed
|
|
|
|
during gameplay. The player may be unable to play those files (for example
|
|
|
|
foobar can only play up to 8 channels, and Winamp depends the your sound
|
|
|
|
card). For those files you can set the "downmix" option in vgmstream, that
|
|
|
|
can reduce the number of channels to a playable amount. Note that downmixing
|
|
|
|
is very simple and not meant to be used when converting to other formats.
|
2018-01-07 20:13:42 +01:00
|
|
|
|
2018-11-04 00:11:02 +01:00
|
|
|
## Tagging
|
|
|
|
Some of vgmstream's plugins support simple read-only tagging via external files.
|
|
|
|
|
|
|
|
Tags are loaded from a text/M3U-like file named _!tags.m3u_ in the song folder.
|
|
|
|
You don't have to load your songs with that M3U though (but you can, for pre-made
|
|
|
|
ordering), the file itself just 'looks' like an M3U.
|
|
|
|
|
|
|
|
Format is:
|
|
|
|
```
|
|
|
|
# ignored comment
|
2018-11-17 17:54:42 +01:00
|
|
|
# $GLOBAL_COMMAND value (extra features)
|
2018-11-04 00:11:02 +01:00
|
|
|
# @GLOBAL_TAG value (applies all following tracks)
|
|
|
|
|
|
|
|
# %LOCAL_TAG value (applies to next track only)
|
|
|
|
filename1
|
|
|
|
# %LOCAL_TAG value (applies to next track only)
|
|
|
|
filename2
|
|
|
|
```
|
|
|
|
Accepted tags depend on the player (foobar: any; winamp: see ATF config),
|
|
|
|
typically ALBUM/ARTIST/TITLE/DISC/TRACK/COMPOSER/etc, lower or uppercase,
|
|
|
|
separated by one or multiple spaces. Repeated tags overwrite previous
|
|
|
|
(ex.- may define @COMPOSER for multiple tracks). It only reads up to current
|
|
|
|
_filename_ though, so any @TAG below would be ignored.
|
|
|
|
|
|
|
|
Playlist formatting should follow player's config. ASCII or UTF-8 tags work.
|
|
|
|
|
2018-11-17 17:54:42 +01:00
|
|
|
GLOBAL_COMMANDs currently can be:
|
|
|
|
- AUTOTRACK: sets %TRACK% tag automatically (1..N as files are encountered
|
|
|
|
in the tag file).
|
|
|
|
|
2018-11-04 00:11:02 +01:00
|
|
|
|
2017-11-24 21:01:28 +01:00
|
|
|
## Supported codec types
|
|
|
|
Quick list of codecs vgmstream supports, including many obscure ones that
|
|
|
|
are used in few games.
|
|
|
|
|
|
|
|
- PCM 16-bit
|
|
|
|
- PCM 8-bit (signed/unsigned)
|
|
|
|
- PCM 32-bit float
|
|
|
|
- u-Law/a-LAW
|
|
|
|
- CRI ADX (standard, fixed, exponential, encrypted)
|
|
|
|
- Nintendo DSP ADPCM a.k.a GC ADPCM
|
|
|
|
- Nintendo DTK ADPCM
|
|
|
|
- Nintendo AFC ADPCM
|
|
|
|
- ITU-T G.721
|
|
|
|
- CD-ROM XA ADPCM
|
2018-08-12 22:59:38 +02:00
|
|
|
- Sony PSX ADPCM a.k.a VAG (standard, badflags, configurable)
|
2017-11-24 21:01:28 +01:00
|
|
|
- Sony HEVAG
|
|
|
|
- Electronic Arts EA-XA (stereo, mono, Maxis)
|
2019-01-27 23:40:50 +01:00
|
|
|
- Electronic Arts EA-XAS (v0, v1)
|
2017-11-24 21:01:28 +01:00
|
|
|
- DVI/IMA ADPCM (stereo/mono + high/low nibble, 3DS, Omikron, SNDS, etc)
|
2018-08-12 22:59:38 +02:00
|
|
|
- Microsoft MS IMA ADPCM (standard, Xbox, NDS, Radical, Wwise, FSB, WV6, etc)
|
|
|
|
- Microsoft MS ADPCM (standard, Cricket Audio)
|
|
|
|
- Westwood VBR ADPCM
|
|
|
|
- Yamaha AICA ADPCM
|
|
|
|
- Procyon Studio ADPCM
|
2017-11-24 21:01:28 +01:00
|
|
|
- Level-5 0x555 ADPCM
|
|
|
|
- lsf ADPCM
|
|
|
|
- Konami MTAF ADPCM
|
|
|
|
- Konami MTA2 ADPCM
|
|
|
|
- Paradigm MC3 ADPCM
|
2018-09-06 17:45:34 +02:00
|
|
|
- FMOD FADPCM 4-bit ADPCM
|
|
|
|
- Konami XMD 4-bit ADPCM
|
|
|
|
- Argonaut ASF 4-bit ADPCM
|
2019-02-10 18:43:24 +01:00
|
|
|
- Ocean DSA 4-bit ADPCM
|
2018-11-17 17:54:42 +01:00
|
|
|
- Circus XPCM ADPCM
|
2019-01-27 23:40:50 +01:00
|
|
|
- OKI 4-bit ADPCM (16-bit output, PC-FX)
|
2017-11-24 21:01:28 +01:00
|
|
|
- SDX2 2:1 Squareroot-Delta-Exact compression DPCM
|
|
|
|
- CBD2 2:1 Cuberoot-Delta-Exact compression DPCM
|
2018-09-06 17:45:34 +02:00
|
|
|
- Activision EXAKT SASSC DPCM
|
|
|
|
- Xilam DERF DPCM
|
2017-11-24 21:01:28 +01:00
|
|
|
- InterPlay ACM
|
2018-03-17 19:57:54 +01:00
|
|
|
- VisualArt's NWA
|
2017-12-03 17:27:27 +01:00
|
|
|
- Electronic Arts MicroTalk a.k.a. UTK or UMT
|
2018-09-06 17:45:34 +02:00
|
|
|
- CRI HCA
|
2017-11-24 21:01:28 +01:00
|
|
|
- Xiph Vorbis (Ogg, FSB5, Wwise, OGL, Silicon Knights)
|
|
|
|
- MPEG MP1/2/3 (standard, AHX, XVAG, FSB, AWC, P3D, etc)
|
|
|
|
- ITU-T G.722.1 annex C (Polycom Siren 14)
|
|
|
|
- ITU G.719 annex B (Polycom Siren 22)
|
2017-12-24 01:30:57 +01:00
|
|
|
- Electronic Arts EALayer3
|
|
|
|
- Electronic Arts EA-XMA
|
|
|
|
- Sony ATRAC3, ATRAC3plus
|
2018-01-05 00:57:00 +01:00
|
|
|
- Sony ATRAC9
|
2017-12-24 01:30:57 +01:00
|
|
|
- Microsoft XMA1/2
|
|
|
|
- Microsoft WMA v1, WMA v2, WMAPro
|
|
|
|
- AAC
|
|
|
|
- Bink
|
|
|
|
- AC3/SPDIF
|
2018-10-20 14:54:49 +02:00
|
|
|
- Xiph Opus (Ogg, Switch, EA, UE4, Exient)
|
2018-08-12 22:59:38 +02:00
|
|
|
- Xiph CELT (FSB)
|
2017-12-28 22:30:45 +01:00
|
|
|
- Musepack
|
2017-12-24 01:30:57 +01:00
|
|
|
- FLAC
|
|
|
|
- Others
|
|
|
|
|
|
|
|
Note that vgmstream doesn't (can't) reproduce in-game music 1:1, as internal
|
|
|
|
resampling, filters, volume, etc, are not replicated. Some codecs are not
|
|
|
|
fully accurate compared to the games due to minor bugs, but in most cases
|
2018-10-20 14:54:49 +02:00
|
|
|
it isn't audible.
|
2017-11-24 22:43:33 +01:00
|
|
|
|
2017-10-09 04:08:04 +02:00
|
|
|
|
2017-11-24 21:01:28 +01:00
|
|
|
## Supported file types
|
2017-10-09 04:08:04 +02:00
|
|
|
As manakoAT likes to say, the extension doesn't really mean anything, but it's
|
|
|
|
the most obvious way to identify files.
|
|
|
|
|
|
|
|
This list is not complete and many other files are supported.
|
|
|
|
|
|
|
|
- PS2/PSX ADPCM:
|
|
|
|
- .ads/.ss2
|
|
|
|
- .ass
|
|
|
|
- .ast
|
|
|
|
- .bg00
|
|
|
|
- .bmdx
|
|
|
|
- .ccc
|
|
|
|
- .cnk
|
|
|
|
- .dxh
|
|
|
|
- .enth
|
|
|
|
- .fag
|
|
|
|
- .filp
|
|
|
|
- .gcm
|
|
|
|
- .gms
|
|
|
|
- .hgc1
|
|
|
|
- .ikm
|
|
|
|
- .ild
|
|
|
|
- .ivb
|
|
|
|
- .joe
|
|
|
|
- .kces
|
|
|
|
- .khv
|
|
|
|
- .leg
|
|
|
|
- .mcg
|
|
|
|
- .mib, .mi4 (w/ or w/o .mih)
|
|
|
|
- .mic
|
|
|
|
- .mihb (merged mih+mib)
|
|
|
|
- .msa
|
|
|
|
- .msvp
|
|
|
|
- .musc
|
|
|
|
- .npsf
|
|
|
|
- .pnb
|
|
|
|
- .psh
|
|
|
|
- .rkv
|
|
|
|
- .rnd
|
|
|
|
- .rstm
|
|
|
|
- .rws
|
|
|
|
- .rxw
|
|
|
|
- .snd
|
|
|
|
- .sfs
|
|
|
|
- .sl3
|
|
|
|
- .smpl (w/ bad flags)
|
|
|
|
- .ster
|
|
|
|
- .str+.sth
|
|
|
|
- .str (MGAV blocked)
|
|
|
|
- .sts
|
|
|
|
- .svag
|
|
|
|
- .svs
|
|
|
|
- .tec (w/ bad flags)
|
|
|
|
- .tk5 (w/ bad flags)
|
|
|
|
- .vas
|
|
|
|
- .vag
|
|
|
|
- .vgs (w/ bad flags)
|
|
|
|
- .vig
|
|
|
|
- .vpk
|
|
|
|
- .vs
|
|
|
|
- .vsf
|
|
|
|
- .wp2
|
|
|
|
- .xa2
|
|
|
|
- .xa30
|
|
|
|
- .xwb+xwh
|
|
|
|
- GC/Wii/3DS DSP ADPCM:
|
|
|
|
- .aaap
|
|
|
|
- .agsc
|
|
|
|
- .asr
|
|
|
|
- .bns
|
|
|
|
- .bo2
|
|
|
|
- .capdsp
|
|
|
|
- .cfn
|
|
|
|
- .ddsp
|
|
|
|
- .dsp
|
|
|
|
- standard, optional dual file stereo
|
|
|
|
- RS03
|
|
|
|
- Cstr
|
|
|
|
- _lr.dsp
|
|
|
|
- MPDS
|
|
|
|
- .gca
|
|
|
|
- .gcm
|
|
|
|
- .gsp+.gsp
|
|
|
|
- .hps
|
|
|
|
- .idsp
|
|
|
|
- .ish+.isd
|
|
|
|
- .lps
|
|
|
|
- .mca
|
|
|
|
- .mpdsp
|
|
|
|
- .mss
|
|
|
|
- .mus (not quite right)
|
|
|
|
- .ndp
|
|
|
|
- .pdt
|
|
|
|
- .sdt
|
|
|
|
- .smp
|
|
|
|
- .sns
|
|
|
|
- .spt+.spd
|
|
|
|
- .ssm
|
|
|
|
- .stm/.dsp
|
|
|
|
- .str
|
|
|
|
- .str+.sth
|
|
|
|
- .sts
|
|
|
|
- .swd
|
|
|
|
- .thp, .dsp
|
|
|
|
- .tydsp
|
|
|
|
- .vjdsp
|
|
|
|
- .waa, .wac, .wad, .wam
|
|
|
|
- .was
|
|
|
|
- .wsd
|
|
|
|
- .wsi
|
|
|
|
- .ydsp
|
|
|
|
- .ymf
|
|
|
|
- .zwdsp
|
|
|
|
- PCM:
|
|
|
|
- .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:
|
|
|
|
- .matx
|
|
|
|
- .wavm
|
|
|
|
- .wvs
|
|
|
|
- .xmu
|
|
|
|
- .xvas
|
|
|
|
- .xwav
|
|
|
|
- Yamaha ADPCM:
|
|
|
|
- .adpcm
|
|
|
|
- .dcs+.dcsw
|
|
|
|
- .str
|
|
|
|
- .spsd
|
|
|
|
- IMA ADPCM:
|
|
|
|
- .bar (IMA ADPCM)
|
2017-11-18 02:20:52 +01:00
|
|
|
- .pcm/dvi (DVI IMA ADPCM)
|
2017-10-09 04:08:04 +02:00
|
|
|
- .hwas (IMA ADPCM)
|
2017-11-18 02:20:52 +01:00
|
|
|
- .dvi/idvi (DVI IMA ADPCM)
|
2017-10-09 04:08:04 +02:00
|
|
|
- .ivaud (IMA ADPCM)
|
|
|
|
- .myspd (IMA ADPCM)
|
|
|
|
- .strm (IMA ADPCM)
|
|
|
|
- multi:
|
|
|
|
- .aifc (SDX2 DPCM, DVI IMA ADPCM)
|
2017-11-18 02:20:52 +01:00
|
|
|
- .asf/as4 (8/16 bit PCM, DVI IMA ADPCM)
|
2017-10-09 04:08:04 +02:00
|
|
|
- .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, MPEG audio, FSB Vorbis, MS XMA)
|
|
|
|
- .msf (PCM, PSX ADPCM, ATRAC3, MP3)
|
|
|
|
- .musx (PSX ADPCM, Xbox IMA ADPCM, DAT4 IMA ADPCM)
|
|
|
|
- .nwa (16 bit PCM, NWA DPCM)
|
|
|
|
- .p3d (Radical ADPCM, Radical MP3, XMA2)
|
|
|
|
- .psw (PSX ADPCM, GC DSP ADPCM)
|
|
|
|
- .rwar, .rwav (GC DSP ADPCM, 8/16 bit PCM)
|
|
|
|
- .rws (PSX ADPCM, XBOX IMA ADPCM, GC DSP ADPCM, 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)
|
|
|
|
- .sgd/sgb+sgh/sgx (PSX ADPCM, ATRAC3plus, AC3)
|
|
|
|
- .seg (Xbox IMA ADPCM, PS2 ADPCM)
|
|
|
|
- .sng/asf/str/eam/aud (8/16 bit PCM, EA-XA ADPCM, PSX ADPCM, GC DSP ADPCM, XBOX IMA ADPCM, MPEG audio, EALayer3)
|
|
|
|
- .strm (NDS IMA ADPCM, 8/16 bit PCM)
|
2017-11-18 02:20:52 +01:00
|
|
|
- .sb0..7 (Ubi IMA ADPCM, GC DSP ADPCM, PSX ADPCM, Xbox IMA ADPCM, ATRAC3)
|
2017-10-09 04:08:04 +02:00
|
|
|
- .swav (NDS IMA ADPCM, 8/16 bit PCM)
|
|
|
|
- .xwb (PCM, Xbox IMA ADPCM, MS ADPCM, XMA, XWMA, ATRAC3)
|
|
|
|
- .xwb+xwh (PCM, PSX ADPCM, ATRAC3)
|
|
|
|
- .wav/lwav (unsigned 8 bit PCM, 16 bit PCM, GC DSP ADPCM, MS IMA ADPCM, XBOX IMA ADPCM)
|
|
|
|
- .wem [lwav/logg/xma] (PCM, Wwise Vorbis, Wwise IMA ADPCM, XMA, XWMA, GC DSP ADPCM, Wwise Opus)
|
|
|
|
- etc:
|
|
|
|
- .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)
|
|
|
|
- .at3 (Sony ATRAC3 / ATRAC3plus)
|
|
|
|
- .aud (Silicon Knights Vorbis)
|
|
|
|
- .baf (PSX configurable ADPCM)
|
|
|
|
- .bgw (PSX configurable ADPCM)
|
|
|
|
- .bnsf (G.722.1)
|
|
|
|
- .caf (Apple IMA4 ADPCM, others)
|
2017-11-23 22:48:11 +01:00
|
|
|
- .dec/de2 (MS ADPCM)
|
2017-10-09 04:08:04 +02:00
|
|
|
- .hca (CRI High Compression Audio)
|
2017-11-18 02:20:52 +01:00
|
|
|
- .pcm/kcey (DVI IMA ADPCM)
|
2017-10-09 04:08:04 +02:00
|
|
|
- .lsf (LSF ADPCM)
|
|
|
|
- .mc3 (Paradigm MC3 ADPCM)
|
|
|
|
- .mp4/lmp4 (AAC)
|
|
|
|
- .msf (PCM, PSX ADPCM, ATRAC3, MP3)
|
|
|
|
- .mtaf (Konami ADPCM)
|
|
|
|
- .mta2 (Konami XAS-like ADPCM)
|
|
|
|
- .mwv (Level-5 0x555 ADPCM)
|
|
|
|
- .ogg/logg (Ogg Vorbis)
|
|
|
|
- .ogl (Shin'en Vorbis)
|
|
|
|
- .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 (PSX configurable ADPCM)
|
|
|
|
- .stm/lstm [amts/ps2stm/stma] (16 bit PCM, DVI IMA ADPCM, GC DSP ADPCM)
|
|
|
|
- .str (SDX2 DPCM)
|
|
|
|
- .stx (GC AFC ADPCM)
|
|
|
|
- .ulw (u-Law PCM)
|
|
|
|
- .um3 (Ogg Vorbis)
|
|
|
|
- .xa (CD-ROM XA audio)
|
|
|
|
- .xma (MS XMA/XMA2)
|
2019-01-27 23:40:50 +01:00
|
|
|
- .sb0/sb1/sb2/sb3/sb4/sb5/sb6/sb7 (many)
|
|
|
|
- .sm0/sm1/sm2/sm3/sm4/sm5/sm6/sm7 (many)
|
2017-12-24 01:30:57 +01:00
|
|
|
- artificial/generic headers:
|
|
|
|
- .genh (lots)
|
|
|
|
- .txth (lots)
|
2017-10-09 04:08:04 +02:00
|
|
|
- loop assists:
|
|
|
|
- .mus (playlist for .acm)
|
|
|
|
- .pos (loop info for .wav: 32 bit LE loop start sample + loop end sample)
|
|
|
|
- .sli (loop info for .ogg)
|
|
|
|
- .sfl (loop info for .ogg)
|
|
|
|
- other:
|
|
|
|
- .adxkey (decryption key for .adx, in start/mult/add format)
|
|
|
|
- .ahxkey (decryption key for .ahx, in start/mult/add format)
|
2018-01-21 01:47:17 +01:00
|
|
|
- .hcakey (decryption key for .hca, in HCA Decoder format)
|
|
|
|
- .fsbkey (decryption key for .fsb, in hex)
|
2018-10-20 14:54:49 +02:00
|
|
|
- .vgmstream + .vgmstream.pos (FFmpeg formats + loop assist)
|
2017-10-09 04:08:04 +02:00
|
|
|
|
|
|
|
Enjoy! *hcs*
|