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. ffprobe
is used to get metadata from audio files.
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 pull request. 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 loadind of playlist from config
- Automatic saving of playlist to config
- Shuffle playlist
- Add to playlist
- Remove from playlist
- Clear playlist
- Show metadata
- Title
- Artist
- Album
- Genre
- Supported operating systems
- Windows - It should compile, but I can't verify that it works as OpenGL is not supported on Windows in my VM's
- Linux - Daily tested on Fedora 40
- 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
- ffprobe to get metadata from audio files, usually installed with ffmpeg
- 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.sh
You 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