Audio player for Windows and Linux supporting a wide array of multi-platform exotic file
formats, written in C++ and Qt with a sound engine based on FMOD.
The first BZR version was released in 2008, the last 1.x in 2019: this is the beginning of the new 2.x version which is
coded pretty much from scratch.
BZR2 is designed with a modular plugin system to support multiple third party audio playback libraries:
- plugin_adplug: AdPlug
- plugin_asap: ASAP
- plugin_audiodecoder.wsr: audiodecoder.wsr
- plugin_audiofile: Audio File Library
- plugin_flod: custom C++ port of Flod
- plugin_furnace: Furnace
- plugin_game-music-emu: Game_Music_Emu
- plugin_highly_experimental: Highly Experimental + psflib
- plugin_highly_quixotic: Highly Quixotic + psflib
- plugin_highly_theoretical: Highly Theoretical + psflib
- plugin_hivelytracker: HivelyTracker
- plugin_jaytrax: Jaytrax
- plugin_kdm: custom adaptation of KDM Decoder
- plugin_klystron: klystron
- plugin_lazyusf2: lazyusf2 + psflib
- plugin_libkss: libkss
- plugin_libopenmpt: libopenmpt
- plugin_libpac: libpac
- plugin_libsidplayfp: libsidplayfp + sidid
- plugin_libstsound: libstsound
- plugin_libvgm: libvgm
- plugin_libxmp: libxmp
- plugin_mdxmini: mdxmini
- plugin_organya-decoder: Organya decoder
- plugin_protrekkr: ProTrekkr
- plugin_sc68: sc68
- plugin_sndh-player: SNDH-Archive-Player
- plugin_sunvox_lib: SunVox Library
- plugin_uade: UADE (mvtiaine) + custom C++ port of Flod (for samples viewer)
- plugin_v2m-player: v2m-player
- plugin_vgmstream: vgmstream + extended ffmpeg support + libcue
- plugin_vio2sf: vio2sf + psflib
- plugin_zxtune: ZXTune
In addition to these FMOD itself is used to provide support for both MIDI and network streams playback
Here you can find an (incomplete) list of supported formats samples grouped by plugin
- Releases & changelogs
- AUR package:
bzr-player - Old versions archive
MSYS2 with following packages is required:
base-devel mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-qt6-base mingw-w64-ucrt-x86_64-qt6-svg
mingw-w64-ucrt-x86_64-qt-advanced-docking-system mingw-w64-ucrt-x86_64-SDL2 mingw-w64-ucrt-x86_64-toolchain
openssl-devel
From the MSYS2 ucrt64.exe command prompt go to the project sources dir (keep in mind Unix-style paths are
required), then start the configuration stage executing:
cmake -B cmake-build -S . -DCMAKE_PREFIX_PATH=/ucrt64 -DCMAKE_BUILD_TYPE=[Debug|Release] -G Ninja
To build the project execute:
ninja -C cmake-build
As result of the build stage, in the chosen CMake build directory the output directory will be populated with
binaries.
If the Release build type is selected, along with output also output_release directory will be created,
containing the final archive release file
cd BZRPlayer &&
cmake -B cmake-build -S . -DCMAKE_PREFIX_PATH=/ucrt64 -DCMAKE_BUILD_TYPE=Release -G Ninja &&
ninja -C cmake-build
These are the settings for any IDE that supports CMake:
-
set the toolchain to <MSYS2_dir>\ucrt64
(e.g.C:\msys64\ucrt64) -
set the CMake command with following flags:
-DCMAKE_PREFIX_PATH="<MSYS2_dir>/ucrt64" -G Ninja
(e.g.-DCMAKE_PREFIX_PATH="c:/msys64/ucrt64" -G Ninja) -
set additional environment variables MSYSTEM=UCRT64 and PATH=<MSYS2_dir>/usr/bin
(e.g.MSYSTEM=UCRT64;PATH=c:/msys64/usr/bin) -
set the CMake application runner to build All targets with
appas executable -
(optional) set CMake executable to <MSYS2_dir>\ucrt64\bin\cmake.exe
(e.g.C:\msys64\ucrt64\bin\cmake.exe)
The BZR2 installer for Windows, which is scripted in Nullsoft Scriptable Install System (NSIS), can be only compiled using WSL2 or cross-compiled on Linux, since contains Linux specific code (mostly the bash script for the XDG MIME types handling), also MSYS2 is currently not viable since the required NSIS plugins are still missing.
NSIS (3.10 or newer) with following plugins (check AUR entries) is required:
- AccessControl
nsis-accesscontrol-bin - NsArray
nsis-nsarray-bin - NsProcess
nsis-nsprocess-bin - Registry
nsis-registry-bin
In order to build the Windows installer put the target binaries in src/inst/nsis/bin then enter src/inst/nsis
directory and execute: makensis -DVERSION="<any_version>" bzr2_setup.nsi
As result of the build stage bzr-player-<any_version>-win64.exe will be generated in the same directory.
In order to build BZR2 following packages are required:
-
On Arch-based distros:
base-develcmakedos2unixlibglvndninjapatchutilsqt6-baseqt-advanced-docking-systemqt6-declarativeqt6-svgsdl2-compatvulkan-headers -
On Debian-based distros:
build-essentialcmakedos2unixlibglvnd0libsdl2-devlibvulkan-devninja-buildpatchutilsqt6-base-devqt6-base-private-devqt6-declarative-devqt6-svg-devlibqt-advanced-docking-system-dev](libqt-advanced-docking-system-dev4 for Ubuntu 24.04 and equivalent) -
On Fedora-based distros:
@c-development@development-toolscmakedos2unixninja-buildqt6-qtbase-develqt6-qtsvg-develQt-Advanced-Docking-System-develsdl2-compat-develvulkan-headerswhich
Go to the project sources dir then start the configuration stage executing:
cmake -B cmake-build -S . -DCMAKE_BUILD_TYPE=[Debug|Release] -G Ninja
To build the project execute:
ninja -C cmake-build
To install the project (optional) execute:
ninja -C cmake-build install
To specify the installation prefix (make sure to have write permissions) add this to the configuration stage
command (otherwise /usr/local will be used):
-DCMAKE_INSTALL_PREFIX=<your_prefix>
As result of the build stage, in the chosen CMake build directory the output directory will be populated
with binaries.
If the Debug build type is selected BZR2 will rely on isolated user settings (ideal for development purposes)
instead of system ones
cd BZRPlayer &&
cmake -B cmake-build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -G Ninja &&
ninja -C cmake-build &&
sudo ninja -C cmake-build install
For running BZR2 following packages are required:
-
On Arch-based distros:
noto-fonts-cjkqt6-baseqt6-svgqt-advanced-docking-system -
On Debian-based distros:
fonts-noto-cjklibqt6core6libqt6network6libqt6openglwidgets6libqt6svg6libqt6xml6libqt-advanced-docking-system4(libqt-advanced-docking-system4 for Ubuntu 24.04 and equivalent) -
On Fedora-based distros:
google-noto-cjk-fontsqt6-qtbaseqt6-qtsvgQt-Advanced-Docking-System
By default, the CMake configuration stage will download all needed libraries and files. Add -DOFFLINE_MODE=1 to CMake
command for switching to offline mode.
Offline mode doesn't guarantee that the build will include the latest versions of the files with unmanaged version
You can find us on Discord for feedback and discussion
