Skip to content

quonic/SpyPlayer

Repository files navigation

SpyPlayer

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.

Screenshot

Features

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
  • 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

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.

How to build

Build Dependencies

  • Odin to compile the code

Runtime Dependencies

  • 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.

Install Odin Linux

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

Install Odin Windows

See Build Odin from Source

Build and Run

Linux

./build.sh
./SpyPlayer

Windows

./build.ps1
SpyPlayer.exe

About

Yet another music player, written in Odin.

Resources

License

Stars

Watchers

Forks