UmaFX is a simple JavaFX desktop jukebox with a cute, draggable sprite companion. It lets you queue and play local music files.
- Draggable transparent window with an animated character sprite
- Song queue dialog to add files or entire folders (MP3, WAV)
- Playback controls:
- Play / Pause, Stop, Skip
- Context menu on the jukebox image
- System tray menu with quick controls
Grab the latest installer from the releases tab.
- OS: Windows 10 or Windows 11
- Architecture: x64
- Drag the character by left-clicking and holding to move the window.
- Left-click the jukebox to open the Song Queue:
- Add Folder: imports all .mp3 and .wav files in the selected folder
- Add Song: import multiple music files
- Select items and press Delete or use the context menu to remove
- Right-click the character to switch characters
- Right-click the jukebox for the context menu:
- Open Song Queue
- Play/Pause, Stop, Skip
- Exit
- System tray icon:
- Reset Window
- Open Song Queue
- Play/Pause, Stop, Skip
- Exit
Configuration files and spritesheet templates are located in your Documents/UmaFX folder.
You can change starting character by changing Character value
Character=<character folder name>
Version=1
Character- Name of the character's folderVersion- Internal version number (DO NOT CHANGE THIS)
Inside the spritesheets folder, you will find a teio folder.
This serves as the base template if you want to create your own spritesheets.
When making a new character folder, make sure it includes a config.json file
Each character's animations are defined in config.json.
There are three supported animation states:
idlereadydance
You can also define multiple variants of an animation state by appending an underscore and a number:
(e.g., dance_01, dance_02, dance_03, …).
The program will recognize all animations with the same base name.
Example:
"name": "dance_01",
"file": "teio_outfit_01_dance_01.png",
"columns": 8,
"rows": 12,
"totalFrames": 90,
"frameWidth": 375,
"frameHeight": 375,
"loop": true
name- Animation state (idle,ready,danceor numbered variant (dance_01,dance_02, …)file- Filename of the spritesheet image (must be inside the same folder)columns- Number of columns in the spritesheetrows- Number of rows in the spritesheettotalFrames- Total number of animation frames.frameWidth- Width of each frame (pixels).frameHeight- Height of each frame (pixels).loop- Whether the animation should repeat (true/false)
- Fork the repo
- Create a feature branch
- Commit with clear messages
- Open a PR with a concise description and screenshots/gifs if UI is affected
- FXTrayIcon by Dustin Redmond under MIT License