# vgmstream This is vgmstream, a library for playing streamed (pre-recorded) audio from video games. Some of vgmstream's features: - 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 in multiple files) and custom containers - encryption keys, internal stream names, and many 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 together multiple files as a single one) - simple external tagging via .m3u files - plugins available for various common players and O.S. Latest development is here: https://github.com/vgmstream/vgmstream/ Automated builds with the latest changes: https://vgmstream.org/downloads Common releases: https://github.com/vgmstream/vgmstream/releases Help can be found here: https://www.hcs64.com/ More docs: https://github.com/vgmstream/vgmstream/tree/master/doc ## Getting vgmstream There are multiple end-user bits: - a command line decoder called *test.exe/vgmstream-cli* - a Winamp plugin called *in_vgmstream* - a foobar2000 component called *foo_input_vgmstream* - an XMPlay plugin called *xmp-vgmstream* - an Audacious plugin called *libvgmstream* - a command line player called *vgmstream123* Main lib (plain *vgmstream*) is the code that handles internal conversion, while the above components are what you use to actually get sound. See *components* in *usage guide* for install instructions and explanations. The aim is feature parity, but there are a few differences between them (due to missing implementation in vgmstream's side, or lack of support in target player/API/etc). ### Windows You should get `vgmstream-win.zip` (bundle of various components) or `foo_input_vgmstream.fb2k-component` (installable foobar2000 plugin) from the latest pre-built binaries: https://vgmstream.org/downloads You can also try getting them from the (infrequently updated) releases: https://github.com/vgmstream/vgmstream/releases If the above links fail you may try alt, recent-ish versions here: https://github.com/bnnm/vgmstream-builds/raw/master/bin/vgmstream-latest-test-u.zip You may compile them from source as well (see *build guide*). ### Linux Generally you need to build vgmstream's components manually (see *build guide*). For a quick build call `./make-build-cmake.sh` (for Debian/Ubuntu-style distros, installs various deps first so you may prefer to call commands manually). Releases also distribute a static version of the CLI tool (kernel v3.2+). https://vgmstream.org/downloads https://github.com/vgmstream/vgmstream/releases ### Mac Follow the *build guide* instructions. You can probably use Linux's script above with some tweaks. ## More info - [Usage guide](doc/USAGE.md) - [Build guide](doc/BUILD.md) - [TXTH info](doc/TXTH.md) - [TXTP info](doc/TXTP.md) Enjoy! *hcs*