Yet another music player, written in Odin.
Raylib is used for playback and UI rendering. A custom Aseprite sprite sheet parser is used to load sprites and to help position the sprites for custom controls. Currently only Button, Slider and Text controls are implemented.
This is a work in progress.
I'm adding features as I go, so if you want something that isn't there, please create a issue. I use this daily and I add feautres when I encounter a need for them.
If you want a feature that isn't there, please create a pull request or open an issue and I'll see what I can do.
- Plays audio files - only tested on mp3 files
- Play, pause, stop, next, previous
- Load from folder to current playlist
- Volume control
- Use threading to load audio files
- Current time and total time
- Play next song when finished playing current song
- Seeking
- Visualizer
- Spectrum
- FFT
- Spectrum
- Tooltips for controls
- Delay before showing tooltips
- Keyboard shortcuts
- Save and load key bindings
- Default key bindings
- Playlist management
- Load from folder
- Playlist showing loaded songs
- Selecting a song plays that song
- Save playlist
- Load playlist
- Automatic loading of playlist from config
- Automatic saving of playlist to config
- Shuffle playlist
- Add to playlist
- Remove from playlist
- Show metadata
- Title
- Artist
- Album
- Genre
- Supported operating systems
- Windows
- Linux
- Other things I haven't figured out yet
Contributions are welcome!
If you want to contribute, create a pull request and I will review it.
I'm currently focusing on supporting Linux first. If you want other platforms to be supported, please create a pull request.
- Odin to compile the code
- zenity or kdialog to show popups, depends on the desktop environment
- opengl or vulkan to render the GUI, should be installed along with your graphics driver
All, except Odin, should already be installed on most Linux distributions.
cd ~/
git clone https://github.com/odin-lang/Odin
cd Odin
./build_odin.shYou can add odin to your path by creating a symlink to the odin binary in your local bin directory.
ln -s ~/Odin/odin ~/.local/bin./build.sh
./SpyPlayer./build.ps1
SpyPlayer.exe