vxn-py
A python script for extracting Gameloft .vxn files.
About vxn files
vxn files are a proprietary multistrean audio container that can be found in many Gameloft games. They can contain 1 of 4 different audio encodings, PCM, Microsoft ADPCM, Microsoft IMA ADPCM, or Musepack.
For a long time the only way to extract this audio data was by using vgmstream. This posed a problem due to how vgmstream works. The audio files you get back are PCM encoded (wav files), no matter what format the audio data was originally in. Not to mention, it uses ffmpeg to transcode the Musepack format into wav files. This is an issue because of audio integrity. If you wanted to get the raw audio data from vxn files with vgmstream, you won't be able to, which also means, you can't use whatever Musepack decoder you want.
That all changes with vxn-py. This program extracts the raw data from the vxn files without any modifications. The only additions are the wav file headers so that any program knows what wav file format it's dealing with. Any vxn files that has Musepack data in them, just contains the full mpc file, including its header, so thankfully I don't have to worry about that (figuring out the wav file header was already a pain). This means that no audio data could possibly be lost, because there is no audio transcoding being done. You can then do whatever you want with the data, including using other Musepack decoders (because some mpc files don't decode very well in ffmpeg).
Unfortunately, this program does not create vxn files, mainly because there's still other chunks that I don't know how to read yet.
Installation
Install with python
pip install vxn-py
Usage
python -m vxn extract "file.vxn"
python -m vxn extract -h
vxndec "file.vxn"
vxndec -h
Or within code.
from vxn import VXN
v = VXN('path/to/file.vxn')
v.streams[0].save(f'out.{v.streams[0].EXTENSION}')
Metadata
Release files for vxn-py 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vxn_py-1.0.3.tar.gz | 45.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vxn_py-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.6 kB
Release files / vxn_py-1.0.3.tar.gz
| Download URL | vxn_py-1.0.3.tar.gz |
|---|---|
| Size | 45.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f238ec395b4a84c781f57c1fc576cda125f433ec3a0f23e11b43de29fbf1d5e
|
|
BLAKE2b-256 checksum How to use checksums |
947d5ec7d91e4fc77a4c3bc8391ffaf026e6690516a5c8b5dbbe3cdeeb296b99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2025.
Transparency logRelease files / vxn_py-1.0.3-py3-none-any.whl
| Download URL | vxn_py-1.0.3-py3-none-any.whl |
|---|---|
| Size | 35.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07d85ae25430ecd8aead1dd667068b7d31ed0d31611aada381a797c45852a92b
|
|
BLAKE2b-256 checksum How to use checksums |
35f129afb314aef0c076799270c9ae37badf2829dbd9faad850401e29585b7bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2025.
Transparency log