I present a wimamp-like music player -
Qmmp , developed by our compatriots in Qt under the GPLv2 license. Although at first glance there is nothing special, as a programmer, I see great potential in it. In this topic, I will quickly run through its capabilities, as well as sign for what its peculiarity is.
Interface
As already mentioned, the player is winamp-like, with full skins support for winamp 2.x. Looks like XMMS and Audacious. The interface is standard for players of this type: control window, equalizer and playlist.

')
There are other interface projects for qmmp:
amarok-like and
foobar-like .
More details .

Opportunities
- support for a variety of music formats
- video support via mplayer
- lyrics and covers
- audio and visual effects
- output via OSS, ALSA, PulseAudio, JACK and WaveOut
- Last.fm scrober
- CDDB support
- Hotkeys
Written in C ++ using Qt, without reference to a specific DE. There are compatibility modes with Openbox, Metacity. KDE4 notification system support.
A complete list of all the features can be found on the project website:
link .
Installation
For ubuntu
The old version (
0.3.1 ) of the player is available from the repository. The new version (at the time of writing the topic,
0.4.0 is available on
Launchpad.netFor other distros
The
Qmmp music player
is already included in most distributions.
If not, check
the download page from the official website.
And what, in fact, zest?
A highlight in the structure of the code, which was developed by the authors. Everything is done according to the best OOP traditions, in which the player is divided into the core, GUI and modules. The connection between the components is through an API. The specific implementation of the component does not affect the rest of the player. This makes it possible, for example, to rewrite the GUI without having to rewrite the rest of the player.
Format support is implemented as modules. In the future, to support a different format, you only need to implement the kernel API to play the file.
All additional functions, such as tray, lyrics and covers of songs, scrober, etc., are also implemented as modules. A well-thought-out kernel API provides ample opportunity to implement your project as a module.
I'm not a programmer. So what?
From the point of view of a simple user, it doesn’t matter how the code is implemented. The main thing that he worked. But I can say that with such a structure of the code, the player is simple in support and refinement. Many programmers, with relatively little effort, will be able to contribute to the development of the player. They will not need to study the structure of the program, its source code, etc. ... It is enough just to use the API provided by the kernel. This gives a huge potential for the development of the program.
And why is it all written?
This topic has several goals. First, I want to introduce the community with such a player. Secondly, this player is a vivid example of a really high-quality program structure. And thirdly, I think the authors of the program will not interfere with the extra help on the project, and not only programming.
Afterword
I have nothing to do with this project. I am not familiar with the authors, and I don’t have any benefit from this topic. All of the above is my opinion, which does not claim to be objective. As they say, tastes do not argue.
UPD. Updated the "
Interface " section. Thanks to the dexon
hardware for the tip.