This is my audio player, that I implemented in 2009 (took about 2-3 weeks) and have been using ever since. Occasionally also developing it.
It has the features I need, which were never present in any other players. And implementing them wasn’t a trouble.
Its main purpose is to allow working with tens of thousands of files (on tens of tabs), while still being fun and a pleasure to use.
📂Sources
The code is here. With also downloads on Releases tab.
Unfortunately only for Windows and using old coding style (C++03). Updated, newer version here.
📊Features
The list is long (as usual) and also has many helpers:
🔨Basic
Playing all needed (by me) formats
WAV, FLAC, OGG, MP3, MP2, MPC, APE, WV, WMA
Playing Music files (modules, not MIDI)
MOD, XM, IT, S3M, MTM, UMX
Global Hot Keys With settings page to configure. Using Windows Hook.
Help page With all keyboard and mouse shortcuts listed.
Find Song name Searching, on all tabs. Keys for go to next, previous. Same as for bookmarks.
🛠️Utility
Tabs With any number of tab rows and columns. I currently use 12 x 3.
Bookmarks Many levels (6), changing colors. Also for tabs.
Song Rating (-3 to +5) Visible as symbol on left and background in one line. Optionally, saved in filenames (at end, also with bookmarks). Stays, no matter where files are. No need to worry about playlist or when moving, renaming, updating, copying folders.
Rating Filtering Directly in playlist. It shows only songs rated in current range.
Informative Slider That isn’t just a plain block, but actually shows a preview of whole playlist. With:
Cursor and playing positions
View area
Bookmarks and search results
All songs rating preview
Time text coloring And useless zeros not displayed. It is quite useful. You can quickly see (on screenshot): longer songs, and how long are songs in albums, just from the colors. I have now about 10 colors for interpolation, every 1 to 1.5 minutes. Test mode with Ctrl-I.
FFT. Default small FFT uses 1024 points and in full screen 4096. Always 1 pixel line per 1 FFT point, no garbage smoothing slowing it down or wide bars with peaks. It uses Direct3D9 directly, with HLSL 2.0 shaders. So it draws using GPU like games, not CPU like old programs.
Colored bitmap fonts. Custom, for drawing text, from Crystal Font.
Fast and smooth display. Always achieving 60 FPS (would more, but limited by VSync).
Drop and insert.Normally done at cursor, with Shift at top, with Ctrl at end of playlist. Faster playlist managing through shortcuts.
Always 1 row per song (or folder). Showing song rating and bookmark level in just 1 line as background so you can still see as many as possible on screen.
Grouping for directories, automatic. With 3 display modes:
Directory
Directory / Parent
Full path on disk
Directory hiding – or showing + Regardless of rating of songs inside.
Extended mouse areas. Song seek, previous/next buttons, playlist slider.
Options for keyboard song seek (seconds) and volume step (%) values.
Errors count on player, details in .log file.
Copy selected / all files to other path (as attribute copy in .xml) by F12.
5 Font sizes (for playlist and others).
Whole views loading and saving. Window position, size, visualization etc. Quickly changing view with Alt-1, Alt-2, .. keys.
Full custom look, no title bar or buttons for window. Moving and resizing window with Shift-RMB and Ctrl-Shift-RMB. Stays in chosen place, not moved by accident and restored with view keys (Alt-1 etc).
📜History
I started with audio players by using WinAmp 2, about the year 2000 after moving to Windows 98. I stuck to its look and still see this 1 short column view as the one (and only acceptable) way of showing a list of song titles with their times. It doesn’t waste too much space to see a playlist. I never stepped out of the WinAmp 2.5 (or so) skins either.
Later I moved to AIMP (2.5 I think, in 2008). It was somewhat better. After customizing the skin I got it to look cool (dark blue). The main advantage for me was that it could have tabs. After tweaking it (which shouldn’t be needed), I got it to show 7 tabs. More looked too tight and there was only 1 row possible.
⭐Rating
Back then I also started using song rating, but I didn’t want to waste an additional line for that (showing half of tracks in playlist) and went for manually adding symbols to song names. That was very tedious.
✍️Motivation
So firstly I wanted more tabs and rows with them. This should be just a matter of clicking buttons, to increase /decrease rows or columns.
Secondly, for me the idea for rating symbols in filenames was very good. Whenever I’d change directory, move, rename, copy or whatever, I’d still have my ratings saved. And wouldn’t need to care about playlist anymore too.
This motivated me to code my own player which deals with both problems by itself. Also for future, to have any feature I wanted when I can code it.
⌛Conclusions
Well 7 tabs quickly weren’t enough for me. My count gradually increased from about 21 in 2009, in 2016 reached 38 in 3 rows. I recently reduced them to 32.
I’d say it’s the small details (and so easy to implement) that make me like it so much (and not even bother looking at any other players since then (except for a sensible chuckle)).
Since a while I wanted to port it to GNU/Linux and did once convert most of it into SFML. At first it wasn’t stable and occasionally had weird bugs. But the project is working now with SFML, ImGui, and as cAmp2 here.