From c6fc02c51ece520b29bd1ec28f693c1e2095c473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kevin=20L=C3=B3pez=20Brante?= Date: Wed, 31 Aug 2022 15:09:08 -0400 Subject: [PATCH] Reinstated README.md and added pre-processing step to document builder --- .gitignore | 4 +++ README.md | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++-- doc/Makefile | 2 ++ 3 files changed, 100 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f965472c..6e29d6ec 100644 --- a/.gitignore +++ b/.gitignore @@ -78,3 +78,7 @@ CMakeFiles /audacious/vgmstream.so /audacious/Makefile cmake_install.cmake + +#doc build +doc/INFO.md +doc/_build \ No newline at end of file diff --git a/README.md b/README.md index 46f9b81f..a4e07655 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,97 @@ # vgmstream This is vgmstream, a library for playing streamed (prerecorded) video game audio. -More information can be found [here](https://vgmstream.org). -Download here: https://dl.vgmstream.org \ No newline at end of file +Some of vgmstream's features: +- [Hundreds of video game music formats and codecs](doc/FORMATS.md), 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](doc/USAGE.md#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 many other unusual cases found in game audio. +- [TXTH](doc/TXTH.md) function, to add external support for extra formats, including raw audio in + many forms. +- [TXTP](doc/TXTP.md) 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](doc/USAGE.md#tagging) via .m3u files. +- [Plugins](#getting-vgmstream) 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://dl.vgmstream.org + +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: +- [test.exe/vgmstream-cli](doc/USAGE.md#testexevgmstream-cli-command-line-decoder): A command-line decoder. +- [in_vgmstream](doc/USAGE.md#in_vgmstream-winamp-plugin): A Winamp plugin. +- [foo_input_vgmstream](doc/USAGE.md#foo_input_vgmstream-foobar2000-plugin): A foobar2000 component. +- [xmp-vgmstream](doc/USAGE.md#xmp-vgmstream-xmplay-plugin): An XMPlay plugin. +- [vgmstream.so](doc/USAGE.md#audacious-plugin): An Audacious plugin. +- [vgmstream123](doc/USAGE.md#vgmstream123-command-line-player): A command-line player. + +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 just want to convert game audio to `.wav`, easiest would be getting *test.exe/vgmstream-cli* (see +below) then drag-and-drop one or more files to the executable. This should create `(file.extension).wav`, +if the format is supported. More usable would be installing a music player like *foobar2000* (for +Windows) or *Audacious* (for Linux) then the appropriate component, so you can listen to VGM without +converting and set options like infinite looping. + +See [components](doc/USAGE.md#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 implementation on vgmstream's side or lack of support in target player or API. + +Note vgmstream cannot *encode* (convert from `.wav` to some video game format), it only *decodes* +(plays game audio). + + +### Windows +You should get `vgmstream-win.zip`, which also bundles various components, or +`foo_input_vgmstream.fb2k-component` for the installable foobar2000 plugin from the +latest prebuilt binaries on our website: +- https://dl.vgmstream.org + +You can also get them from the less frequently updated releases on GitHub: +- https://github.com/vgmstream/vgmstream/releases + +If the above links fail, you may also try the alternative, somewhat recent versions built by +[bnnm](https://github.com/bnnm): +- https://github.com/bnnm/vgmstream-builds/raw/master/bin/vgmstream-latest-test-u.zip + +If you prefer, you may compile the components from source as well, see the +[build guide](doc/BUILD.md) for more information. + +### Linux +For convenience, releases distribute a command-line decoder in `vgmstream-cli.zip`. It is +statically linked and should work on all systems running Linux kernel v3.2 and above. +- https://dl.vgmstream.org +- https://github.com/vgmstream/vgmstream/releases + +Building from source will also give you *vgmstream.so*, an Audacious plugin, and *vgmstream123*, +a command-line player. + +When building from source code, many components have to be installed or compiled separately. The +[build guide](doc/BUILD.md) describes this process in more detail. For a quick build on Debian and +Ubuntu-style distributions, run `./make-build-cmake.sh`. The script will be installing various +dependencies, so you may prefer to copy the commands from the file and run them one by one. + +### macOS +Please follow the [build guide](doc/BUILD.md). + + +## More info +- [Usage guide](doc/USAGE.md) +- [List of supported audio formats](doc/FORMATS.md) +- [Build guide](doc/BUILD.md) +- [TXTH file format](doc/TXTH.md) +- [TXTP file format](doc/TXTP.md) + + +Enjoy! *hcs* diff --git a/doc/Makefile b/doc/Makefile index d4bb2cbb..c2d75408 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -17,4 +17,6 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile + cp ../README.md INFO.md + sed -i 's/doc\///g' INFO.md @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)