A modern Android player for tracker music files — MOD, XM, IT, S3M, and dozens more. Built with Jetpack Compose, Media3, and Oboe for low-latency native audio playback.
A spiritual successor to cmatsuoka/xmp-android, rebuilt with a modern Android look.
UI and Features are still in a Work in Progress, but the app is in a usable state.
- Supports 90+ tracker formats via libxmp and libopenmpt (MOD, XM, IT, S3M, MTM, STM, OKT, FAR, and more)
- Low-latency audio via Google's Oboe library
- Gapless track transitions
- Background playback with Media3 foreground service
- Configurable audio settings: sample rate, buffer size, amplification, stereo mixing, pan separation, interpolation, lowpass filter, and per-format player flags
- Repeat modes and Shuffle
- Seek, queue navigation, and sub-song playback for modules with multiple sequences
- Queue persistence (WIP) — your playback state survives app restarts, with optional auto-resume
- Material 3 Expressive UI with dynamic theming
- Custom seed color picker — recolor the entire app on the fly. AMOLED (dark mode) available too
- Playback view - (WIP) Module pattern view and channel visualization
- Module info, instrument list, and song messages viewable per track
- Android Auto support (WIP, usable) — browse and play from your car
- Media session integration — lock screen, watch, and notification controls
- System playback resumption (WIP, not working)
- Voice search (WIP, not started)
- Made in Kotlin with Jetpack Compose
- Koin for dependency injection
- DataStore for preferences
- Room for playlists
- Navigation 3 for screen routing
- Native C++ JNI bridge to libxmp and libopenmpt
- Android 8.0 (API 26) or higher
- Architectures: arm64-v8a, armeabi-v7a, x86, x86_64
- libxmp & and libopenmpt — the hearts of this player
- cmatsuoka/xmp-android — the original inspiration
- Oboe — Google's low-latency Android audio library
- Material 3 and MaterialKolor for theming
- zeo for libopenmpt support integration
This project is licensed under the MIT License.
Third-party library notices are listed in NOTICE.