grish.dev

BBMP: The Based Black Music Player

BBMP is my personal music player. BBMP is currently only supported on Linux, not especially user-friendly, and under development.

Background

I wrote BBMP after trying every other music player available on Linux, and being ultimately dissatisfied with my options. For awhile I settled on ncmpcpp - but I love album art and, given that it's an Ncurses client, I had to do a bunch of wacky hijinks to display the currently playing album's cover. Eventually I decided to try building my own solution. As I was inspired by ncmpcpp, BBMP started as an MPD client. BBMP now uses Miniaudio so it can be a fully standalone music player.

Below are my two favorite views in BBMP. The first is the Library Album Art view (click to enlarge):

BBMP Library Album Art View

And the second is the Album Art view:

BBMP Album Art View

Downloading

Contact dmgrisham(at)gmail(dot)com for the binary.

Requirements

BBMP is currently built to run on Linux systems with modern 64-bit (x86-64) processors.

Audio Codecs

Only MP3 files with ID3v2.4 tags are supported at the moment.

M4A/AAC is also supported by a separate build - but, since BBMP distributed as a single binary, you must have the following libraries (including the listed version) installed on your system:

Since Miniaudio supports FLAC and WAV, support for those formats will be possible once BBMP can parse their respective tags.

Configuration

At the moment the config file must be created manually, and requires one line: the path to your music library. If you have XDG_CONFIG_HOME defined in your environment, then you should save your config to $XDG_CONFIG_HOME/bbmp/bbmprc. Otherwise, save it to ~/.config/bbmp/bbmprc.

For example, all of my music is stored in ~/media/music/library, so my config file at ~/.config/bbmp/bbmprc is defined as:

library_directory = ~/media/music/library

The other configuration values you can define are:

Launching BBMP

When you first start BBMP, it'll scan the library_directory you defined above for all supported music files. The metadata of each file will be parsed, which can take awhile, and you'll see the progress at the bottom left.

NOTE: At the moment you have wait for BBMP to scan ALL of the music files - if you exit before it does, it'll restart the entire scan from the start. This, along with the handling of additions/changes to the library, will be improved in the future.

For every album that's found, BBMP will look for an album cover named cover.jpg or cover.png alongside that album's songs - here's an example folder structure for the album Singularity by Jon Hopkins:

jon_hopkins
└── 2018_05-singularity
    ├── 1_01-singularity.mp3
    ├── 1_02-emerald_rush.mp3
    ├── 1_03-neon_pattern_drum.mp3
    ├── 1_04-everything_connected.mp3
    ├── 1_05-feel_first_life.mp3
    ├── 1_06-c_o_s_m.mp3
    ├── 1_07-echo_dissolve.mp3
    ├── 1_08-luminous_beings.mp3
    ├── 1_09-recovery.mp3
    └── cover.jpg

That cover.jpg will be used to create the covers BBMP uses to quickly load and display the thumbnail + large album covers as you navigate your music library. The higher-resolution these images are, the better they'll look.

Navigation and Playing Music

Multi-Queue Functionality

You can have multiple queues loaded at once, all at your discretion. When you start a new queue while one is already playing, your spot in the previous queue will be bookmarked for later. Right-click on an item in your library to see your options for adding to existing/new queues, as well as the keybindings below.

Also pay attention to the bottom-right of BBMP, where you'll see the 'Playing queue', and if you're currently editing a different queue than the one that's currently playing you'll see the 'Modifying queue' above that. Additionally, if you navigate to the Queue view, the queue you select with your cursor will be the one modified if you start adding songs (hit i to show the column of Queues).

The details/use-cases of multi-queue functionality are still being worked out, but the basics should all be in place for you to play with.

Mouse Actions

The mouse can perform most of the basic navigation, and right-clicking on items pulls up additional actions for adding songs to queues/etc. Double clicking an individual song will act the same as pressing Enter on it - i.e. the song will be added to the end of the currently selected queue, and will start playing.

Keyboard Actions

There are a few global keybindings, then each view has its own keybindings.

Also note that the Caps Lock key is globally mapped to Ctrl, at least right now.

Global

The following keybindings apply to all views where you have a cursor to interact with songs.

Queue View

And if the Queues column is selected:

Library Album Art View

Additional Notes

BBMP caches files to ~/.cache/bbmp (or $XDG_CACHE_HOME/bbmp if XDG_CACHE_HOME is defined). This includes a backup of the parsed tags from the library's music files, as well as all of the album cover files it generates.

As noted above, new music files/tag changes to existing songs are not currently processed. So, at the moment, rescanning the library requires that you exit BBMP, remove the cached library (with e.g. rm ~/.cache/bbmp/library_backup), and start BBMP again so it can scan your files.