VGMP is a fast, offline‑first Android player for video game music formats. It scans local packs and you can search the whole VGMRips archive and browse SNESMusic.org to download music into the player. It plays a wide range of chip‑tune, console, and tracker formats with smooth playback and a visual spectrum analyzer.
- Wide format support (VGM/VGZ, NSF/GBS/SPC, KSS, trackers, MIDI, Doom MUS/LMP, RSN)
- Offline library with favorites, search, and shuffle/loop modes, slow down to play along
- VGM Rips downloader with search and chip filters
- Advanced audio visualization: Full-screen kaleidoscope/bars and per-channel spectrum analyzers
- Deep audio control: Volume adjustment per sound chip and Mute/Solo per channel
- Bluetooth media controls (AVRCP‑style playback/seek/metadata)
- Android Auto/MediaSession integration
VGMP supports the following file types (case‑insensitive):
- VGM/VGZ:
.vgm,.vgz - GME formats:
.nsf,.nsfe,.gbs,.gym,.hes,.ay,.sap,.spc - KSS/MSX:
.kss,.mgs,.bgm,.opx,.mpk,.mbm - Tracker:
.mod,.xm,.s3m,.it,.mptm,.stm,.far,.ult,.med,.mtm,.psm,.amf,.okt,.dsm,.dtm,.umx - MIDI:
.mid,.midi,.rmi,.smf - Doom MUS/LMP:
.mus,.lmp - RSN (SPC archives):
.rsn
- Kotlin + AndroidX
- Native engines via CMake + NDK
- Room database for library
- WorkManager for downloads
- Android Studio (or command line tools) with JDK 17
- Android SDK (compile/target SDK 35)
- NDK + CMake (configured by the project)
- Git submodules initialized
git submodule update --init --recursive
# Some libraries require patching for advanced features (automatic during build)
./app/src/main/cpp/prepare_libvgm_source.sh
./app/src/main/cpp/prepare_libkss_source.shDebug APK:
./gradlew assembleDebugRelease APK:
./gradlew assembleReleaseThe APKs will be in app/build/outputs/apk/.
- Launch VGMP.
- Some packs are bundled with the apk, or tap the download button to fetch packs from VGM Rips.
- Search and play from the library.
- Use Settings to choose spectrum analyzer style and which VGM types are shown/playable.
- Analyzer: enable/disable and select style
- VGM types: choose which formats appear in the library and are playable
- Playback: favorites‑only mode, loop/shuffle, etc.
VGMP exposes a MediaSession, so Bluetooth head units and controllers can use play/pause/next/previous/seek and see track metadata.
app/src/main/java/org/vlessert/vgmp— app codeapp/src/main/cpp— native audio engines + JNIapp/src/main/res— UI resources
VGMP integrates several excellent open‑source audio engines:
- libvgm
- Game Music Emu (libgme)
- libopenmpt
- libkss
- libADLMIDI
- libMusDoom
MIT
Issues and PRs are welcome once the repository is public.