vgmstream - A library for playback of various streamed audio formats used in video games.
Go to file
modusc896d352 edde33489b Ongakukan ADPCM code improvements
significant improvements include:
- char flags in ongakukan_adp_lib.c have all, with one exception, been made to bools.
-- ATM, sample_mode will remain a char.
-- several other variables have been removed. they did not affect decoding in any significant way.
-- init_ongakukan_adpcm now accepts at least one bool as an argument for a total of four arguments.
-- many function from lib renamed to follow external lib function naming standard.

- simplified ongakukan_adp_decoder.c
-- decode_ongakukan_adp in particular benefited from this code simpification; loop is now re-done so all samples are copied to outbuf when they're made available.
-- as a consequence of this, at least one var was removed entirely, while others have been redefined into different purposes; samples_filled is now a bool var that flags whether or not all available samples were decoded.
-- init_ongakukan_adp has four arguments as well, and accepts at least one bool as an argument of its own.
-- streamfile is now close there as well instead of in the external decoder lib.

- adp_ongakukan.c saw much simpified code as well; meta checks have been relaxed significantly, which meant the removal of several var and at least three vars repurposed into bools.
-- supposed_size is introduced as an entirely new var; it now calculates the supposed file size of an ADP file with several 32-bit fields from the first byte as a base.
-- consequently, file_size checks are now made against supposed_size.

- as a consequence of all of the above, riff.c has now lost an additional RIFF size check; initially if RIFF chunk reported a big-enough size than RIFF file realistically has, it would be enough for vgmstream to stop working with said file.
2024-07-17 21:58:06 -03:00
.github doc 2023-10-08 12:33:35 +02:00
audacious cleanup: misc doc/fixes 2024-07-14 20:24:53 +02:00
cli api: add beta api 2024-07-14 20:31:50 +02:00
cmake CMake: Add stripping 2023-01-24 17:15:20 +01:00
doc doc 2024-07-06 01:26:08 +02:00
ext_includes update ffmpeg 2023-01-15 17:39:01 +01:00
ext_libs makefile: fix x64 2023-02-09 21:22:27 +01:00
fb2k Export loop_start/loop_end for foobar's playlist 2024-03-31 16:21:55 +02:00
src Ongakukan ADPCM code improvements 2024-07-17 21:58:06 -03:00
winamp cleanup/doc 2024-03-24 00:00:51 +01:00
xmplay cleanup/doc 2024-03-24 00:00:51 +01:00
.gitattributes gitattributes: cpp 2021-08-12 00:05:53 +02:00
.gitignore Add format info generator and update FORMATS.md 2023-06-25 21:20:28 +02:00
bootstrap builds: missing audacious files 2024-02-11 22:38:35 +01:00
CMakeLists.txt cmake: Fix celt cache variables 2023-06-22 13:13:51 +03:00
configure.ac build: autotools cleanup and log fixes 2021-08-26 22:16:31 +02:00
COPYING Update COPYING 2019-04-29 18:31:37 -07:00
Directory.Build.props update toolset for autobuilds 2023-02-12 00:30:23 +01:00
make-build-cmake.sh misc tweaks 2021-10-08 22:24:51 +02:00
make-build.sh build tweak 2023-06-10 16:40:05 +02:00
Makefile api: add beta api 2024-07-14 20:31:50 +02:00
Makefile.autotools.am builds: modify how version.h is used to fix issues 2021-08-10 23:51:48 +02:00
msvc-build-clean.bat msbuild: some config and tweaks 2021-08-07 17:04:48 +02:00
msvc-build-init.bat rename build.* to msvc-build.* for consistency 2021-08-07 13:19:57 +02:00
msvc-build-package.bat doc 2021-10-08 22:21:42 +02:00
msvc-build.bat Add S3V support for SVDX (AC). Fix looping for 2DX9 and SD9. 2022-04-20 23:05:37 -04:00
msvc-build.ps1 build: fix foobar component 2023-05-15 18:53:18 +02:00
README.md doc 2024-06-07 13:24:57 +02:00
unbootstrap Change ./test folder references to ./cli 2018-01-19 00:39:04 +01:00
version-get.sh builds: fix version .sh for standard sh 2021-08-15 21:22:43 +02:00
version-make.bat builds: batch tweaks 2021-08-15 19:57:56 +02:00
version-make.sh builds: fix version .sh for standard sh 2021-08-15 21:22:43 +02:00
version.h Update version.h 2024-04-09 20:30:43 +02:00
vgmstream_full.sln Add foo_input_vgmstream x64 SDK + automated build 2023-02-12 00:10:49 +01:00
vgmstream_msvc.props Add foo_input_vgmstream x64 SDK + automated build 2023-02-12 00:10:49 +01:00
vspf.py vspf: ignore "hidden" files 2023-06-24 14:55:43 +02:00

vgmstream

This is vgmstream, a library for playing streamed (prerecorded) video game audio.

Some of vgmstream's features:

  • Decodes hundreds of video game music formats and codecs, from typical game engine files to obscure single-game codecs, aiming for high accuracy and compatibility.
  • Support for looped BGM, using file's internal metadata for smooth transitions, with accurate sample counts.
  • Subsongs, playing a format's multiple internal songs separately.
  • Many types of companion files (data split into multiple files) and custom containers.
  • Encryption keys, internal stream names, and other unusual cases found in game audio.
  • TXTH function, to add external support for extra formats, including raw audio in many forms.
  • TXTP function, for real-time and per-file config, like forced looping, removing channels, playing certain subsong, or fusing multiple files into a single one.
  • Simple external tagging via .m3u files.
  • Plugins are available for various media player software and operating systems.

The main development repository: https://github.com/vgmstream/vgmstream/

Automated builds with the latest changes: https://vgmstream.org (https://github.com/vgmstream/vgmstream-releases/releases/tag/nightly)

Common releases: https://github.com/vgmstream/vgmstream/releases

Help can be found here: https://www.hcs64.com/

More documentation: https://github.com/vgmstream/vgmstream/tree/master/doc

Getting vgmstream

There are multiple end-user components:

The main library (plain vgmstream) is the code that handles the internal conversion, while the above components are what you use to get sound.

If you want to convert game audio to .wav, try getting vgmstream-cli (see below) then drag-and-drop one or more files to the executable (support may vary per O.S. or distro). This should create (file.extension).wav, if the format is supported. More user-friendly would be installing a player like foobar2000 (for Windows) or Audacious (for Linux) and the vgmstream plugin. Then you can directly listen your files and set options like infinite looping, or convert to .wav with the player's options (also easier if your file has multiple "subsongs").

See components in the usage guide for full install instructions and explanations. The aim is feature parity, but there are a few differences between them due to missing parts on vgmstream's side or lack of support in the player.

Note that vgmstream cannot encode (convert from .wav to a video game format), it only decodes (plays game audio).

Windows

Get the latest prebuilt binaries (CLI/plugins/etc) on our website:

Or the less frequent "official" releases on GitHub:

The foobar2000 component is also available on https://www.foobar2000.org based on current release.

If the above links fail, you may also try the alternative versions built by bnnm:

You may compile from source as well, see the build guide.

Linux

A prebuilt CLI binary is available. It's statically linked and should work on systems running Linux kernel v3.2 and above:

Building from source will also give you vgmstream.so (Audacious plugin), and vgmstream123 (command-line player).

When building, many extra components have to be installed or compiled separately, which the build guide describes in detail. For a quick build on Debian and Ubuntu-style distributions run ./make-build-cmake.sh. The script will need to install various dependencies, so you may prefer to copy commands and run them manually.

macOS

A prebuilt CLI binary is available as well:

Otherwise follow the build guide.

More info

Enjoy! hcs