Simple music player written in C++11 with SDL3 and ImGui
Backends are loaded dynamically in runtime. Only dynamic (shared) lib files are required to make them working.
- SDL2_mixer/SDL-Mixer-X via sdl2-compat (because there is no stable SDL3_mixer release yet)
- FMOD
- BASS
- SoLoud (setting music position is broken somewhy)
All of them (except SDL3 for non-msvc and non-mingw builds) are fetched automatically using LBS script
python lbs.py msvc init --msvc
python lbs.py msvc fetch
python lbs.py msvc conf
python lbs.py msvc gen_res
Then open VS project and build in Debug/Release mode
Note: when using in debug mode, assets folder must be in executable cwd
python lbs.py build init
python lbs.py build fetch
# Optionally add --release
python lbs.py build conf
python lbs.py build gen_res
cd build
cmake ..
make
# --mingw is not required for MSYS2
python lbs.py release init --mingw
python lbs.py release fetch
python lbs.py release conf --release
python lbs.py release gen_res
python lbs.py release join_code
cd release
# MinGW64
g++ tinyfoo.cpp -o tinyfoo.exe -std=gnu++2a -Ofast -fno-rtti -Iimgui -Ilbs -ISDL/x86_64-w64-mingw32/include -LSDL/x86_64-w64-mingw32/lib -lSDL3 -lgdiplus
# MSYS2
g++ tinyfoo.cpp -o tinyfoo.exe -std=gnu++23 -Ofast -fno-rtti -fno-exceptions -Iimgui -Ilbs -lSDL3 -lgdiplus
- Improve UI
- Support configuring tab columns
- Other playmodes (like smart_rng to choose track author and then title)
- Add support for libpng (useful on linux?)
- Other audio libs (miniaudio, ...)
- Fix TODOs in code and code cleanup