Qmmp - Qt-based multimedia player

This program is an audio-player, written with the help of the Qt library.
Official home page: https://qmmp.ylsoftware.com/
Development: https://sourceforge.net/projects/qmmp-dev/
Translation: https://explore.transifex.com/qmmp-development-team/

Supported operating systems:
- GNU/Linux
- FreeBSD
- Microsoft Windows

Supported formats:
- MPEG1 layer 2/3
- Ogg Vorbis
- Ogg Opus
- Native FLAC, Ogg FLAC
- Musepack
- WavePack
- tracker modules (mod, s3m, it, xm, etc)
- ADTS AAC
- CD Audio
- WMA, Monkey's Audio (and other formats provided by FFmpeg library)
- PCM WAVE (and other formats provided by libsndfile library)
- midi
- SID
- chiptune formats (AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ, VTX)

DSP effects:
- BS2B effect
- sample rate converter
- LADSPA effects
- extra stereo
- crossfade

Visual effects:
- projectM visualization
- spectrum analyzer

Output system support:
- OSS4 (FreeBSD)
- ALSA (Linux)
- PulseAudio
- PipeWire
- JACK
- QtMultimedia
- Icecast
- WaveOut (Win32)
- DirectSound (Win32)
- WASAPI (Win32)

Other features:
- XMMS and Winamp 2.x skins support
- alternative user interface based on standard widgets set
- 10-band equalizer
- MP3, Vorbis, AAC, AAC+ streams support
- MPRIS
- removable device detection (via UDisks)
- lyrics
- cover art support
- CUE sheet support
- embedded CUE support (for FLAC, WavPack and Monkey's Audio)
- multiple playlists
- automatic charset detection for cue files and ShoutCast metadata
- playlist formats: m3u, pls, xspf
- ReplayGain support
- sending listening history to Last.fm, Libre.fm and ListenBrainz
- CDDB support
- stream browser
- audio formats converter
- external programs execution on track change
- ReplayGain scanner
- archive reader (RAR and 7z)
- audio recording
- listening history
- media library

Requirements:
- Qt >= 6.2 (qtbase and qttools for build)
- tar, unzip, bzip2, gzip
- libmad
- libvorbis
- libogg
- libalsa >= 1.0.22
- taglib >= 1.12
- curl >= 7.32
- libmpg123 >= 1.13.0 (optional)
- qtmultimedia >= 6.2 (optional)
- flac >= 1.1.3 (optional)
- libmpcdec >= 1.3.0 (optional)
- jackit1 >= 0.121.0 or jackit2 >= 1.9.8 (optional)
- libsoxr >= 0.1.0 (optional)
- libxmp >= 4.2.0 (optional)
- libsndfile >= 1.0.22 (optional)
- wavpack >= 4.41 (optional)
- pulseaudio >= 0.9.19 (optional)
- pipewire >= 0.3.26 (optional)
- ffmpeg >= 3.4 (optional)
- libcdio >= 1.0 (optional)
- libcdio-paranoia >= 10.2+0.90 (optional)
- libcddb >= 1.3.1 (optional)
- faad2 >= 2.9.2 (optional)
- game-music-emu >= 0.6.3 (optional)
- opus >= 1.0.2 (optional)
- opusfile >= 0.2 (optional)
- libWildMidi >= 0.4.1 (optional)
- libsidplayfp >= 1.0.3 (optional)
- libbs2b >= 3.0.0 (optional)
- libprojectM >= 2.0.0 (optional)
- libenca >= 1.9 (optional)
- libarchive >= 3.2.0 (optional)
- libshout >= 2.4.3 (optional)
- libx11, libxcb, xorgproto (optional)
- librcd >= 0.1.13 (optional)
- cmake >= 3.18.0 (for build only)

Attention! Qmmp build needs lrelease installed.

Configure:
cmake ./

Build:
make

Installation:
make install

If someone plugin (for example, Jack plugin) doesn't build or doesn't needed you can disable it
by running the following command:
cmake ./ -DUSE_JACK:BOOL=FALSE

Available options:
- USE_CURL (transports);
- USE_MAD, USE_MPG123, USE_FLAC, USE_VORBIS, USE_MPC, USE_XMP, USE_SNDFILE, USE_WAVPACK, USE_FFMPEG, USE_AAC, USE_CUE,
  USE_CDA, USE_MIDI, USE_GME, USE_OPUS, USE_SID, USE_ARCHIVE (decoders);
- USE_ALSA, USE_OSS, USE_JACK, USE_PULSE, USE_PIPEWIRE, USE_NULL, USE_OSS4, USE_WAVEOUT, UDE_DSOUND, USE_QTMULTIMEDIA,
  USE_WASAPI, USE_SHOUT (output plugins);
- USE_SOXR, USE_BS2B, USE_LADSPA, USE_CROSSFADE, USE_STEREO, USE_FILEWRITER, USE_MONOTOSTEREO (effects);
- USE_ANALYZER, USE_PROJECTM (visualization);
- USE_MPRIS, USE_SCROBBLER, USE_LISTENBRAINZ, USE_STATICON, USE_NOTIFIER, USE_LYRICS, USE_HOTKEY, USE_FILEOPS,
  USE_COVER, USE_KDENOTIFY, USE_UDISKS, USE_CONVERTER, USE_SB, USE_RGSCAN, USE_TRACKCHANGE, USE_COPYPASTE,
  USE_GNOMEHOTKEY, USE_LIBRARY (general plugins);
- USE_QMMP_DIALOG, USE_TWO_PANEL_DIALOG (file dialogs);
- USE_ENCA (automatic charset detection);
- USE_SKINNED (standard skinned UI);
- USE_QSUI (simple UI);
- USE_DIR_ASSOC (inode/directory mime type association);
- USE_LIBRCD (using LibRCD library for charset detection of ID3v1/v2 tags, disabled by default);
- USE_LIBCDDB (using libcddb library for looking for information about audio CDs, enabled by default);
- QMMP_DEFAULT_OUTPUT (default output plugin, example: -DQMMP_DEFAULT_OUTPUT=pulse);
- QMMP_DEFAULT_UI (default user interface, example: -DQMMP_DEFAULT_UI=qsui).

Also you can use ccmake for changing plugins configuration.
By default program will be installed in /usr/local. You can change default path by running:
cmake ./ -DCMAKE_INSTALL_PREFIX=custom_path

For more information see GNUInstallDirs module documentation:
https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html

OSS3 support.
OSS3 plugin is deprecated and disabled by default.
To enable it, run 'cmake ./ -DUSE_OSS:BOOL=TRUE' before compilation.

UDisks support and FreeBSD.
Under FreeBSD you are able to use UDisks plugin. Also, you should install port sysutils/bsdisks.
Bsdisks is an implementation of UDisks service for FreeBSD.

In some cases, you can use qmake for building and installation.

Configure:
qmake PREFIX=custom_path (default: /usr)

Build:
make

Installation:
make install

If someone module doesn't build or doesn't needed you can disable it in qmmp.pri file - just comment corresponding
line( symbol '#') or execute qmake with special parameters:
qmake DISABLED_PLUGINS+=JACK_PLUGIN DISABLED_PLUGINS+=OSS_PLUGIN

Attention! By default all plugins are enabled by default.

Changing shared library install path (for some 64-bit distributions).
By default, all libraries and plugins will be installed to $(INSTALL PREFIX)/lib. You can change "lib"
to "lib64" by running qmake or cmake with the special parameter:
qmake LIB_DIR=/usr/lib64
or
cmake ./ -DCMAKE_INSTALL_LIBDIR=lib64

Basic file and directories (may differ depending on distribution and architecture):

/usr/bin/qmmp - executable file
/usr/share/qmmp - shared files and directories
/usr/lib/qmmp-2.3/CommandLineOptions - command-line extensions
/usr/lib/qmmp-2.3/Effect - effect plugin
/usr/lib/qmmp-2.3/FileDialogs - file dialogs
/usr/lib/qmmp-2.3/General - general plugins
/usr/lib/qmmp-2.3/Input - input plugins (decoders)
/usr/lib/qmmp-2.3/Output - output plugins
/usr/lib/qmmp-2.3/PlayListFormats - playlist formats
/usr/lib/qmmp-2.3/Transports - transports
/usr/lib/qmmp-2.3/Ui - user interfaces
/usr/lib/qmmp-2.3/Visual - visualization plugins
/usr/lib/libqmmp.so* - player core library
/usr/lib/libqmmpui.so* - user interface library
/usr/include/qmmp - headers for core library
/usr/include/qmmpui - headers for user interface library
~/.config/qmmp - user configuration

Skin search paths:
~/.local/share/qmmp/skins
~/.config/qmmp/skins
/usr/share/qmmp/skins
/usr/share/qmmp-1/skins

All patches, bug reports, ideas etc. send to bug tracker https://sourceforge.net/p/qmmp-dev/tickets/
