bmp
stands for Best Music Parts. It's a simple CLI tool working along with the Music Player Daemon (MPD).
When listening to music, there is sometimes a favourite moment in a song: a chorus, a guitar solo, an amazing variation, whatever. Something you love. A part of a song that you wish you could remember the position of so you could listen to it again at any time.
That's what bmp
is all about: marking all the musical moments you like the most and playing them automatically. These time sliders are saved in an easy to edit, easy to share text file.
bmp
tries to keep things as simple as possible and provide an enjoyable audio experience. It works on most systems, binaries are provided for Linux, Mac and Windows.
- Interactive shell
- From this shell
- Mark one or many locations while listening to a song
- Edit those locations
- Send the song playlist to MPD and start playing your favorite parts
Binaries for most amd64 platforms are built for every release. Please just grab a binary version of the latest release.
However, if you have a working Go installation and want to build it, just run
$ go install github.com/matm/bmp/cmd/bmp@latest
$ bmp -h
Usage of bmp:
-f string
bookmarks list file to load
-host string
MPD host address
-port int
MPD host TCP port (default 6600)
To connect to a MPD server, bmp
reads the $MPD_HOST
env variable by default. You can also use the -host
flag to provide a MPD address, i.e. bmp -host 192.169.1.10
. The default port 6600
will be used.
Run bmp
to access the interactive shell:
$ bmp
>
or load an existing bookmark file you saved:
$ bmp -f myhits
Loaded 2 songs, 3 bookmarks
>
Let's take a simple example. I just loaded a playlist of Metallica's Black Album) that is ready to play.
From there, I want to
- Listen to track 5, Wherever I My Roam
- Mark the range 00:48 to 00:56 because I like this part
- List to track 8, Nothing Else Matters
- Mark the range 01:00 to 01:23 then 03:03 to 03:24
- List the current bookmarked locations for a quick preview before saving the list
- Save the list
- Exit and run
bmp
with-f
this time to load the saved bookmarks and start playing
Here we go:
Once in the interactive shell, you can run a couple of commands:
Command | Action | Version |
---|---|---|
h |
Show some help | v0.9.0 |
q |
Exit the program | v0.9.0 |
Q |
Force exit the program, even with unsaved changes | v0.9.0 |
i |
Show current song information | v0.9.0 |
[ |
Bookmark start: mark the beginning of the time frame | v0.9.0 |
] |
Bookmark end: mark the end of the time frame. The time interval is added to the list of bookmarks for the current song | v0.9.0 |
d pos |
Delete bookmark entry at position pos |
v0.9.0 |
D |
Delete all bookmark entries for current song | v0.10.0 |
c pos MM:SS-MM:SS |
Change bookmark entry at position pos and set new start and end time boundaries |
v0.9.0 |
r |
Start the autoplay of the best parts | v0.9.0 |
s |
Stop the autoplay of the best parts | v0.9.0 |
f |
Forward seek +10s in current song | v0.9.0 |
b |
Backward seek -10s in current song | v0.9.0 |
t |
Toggle play/pause of current song | v0.9.0 |
p |
List of current bookmarked locations in the current song | v0.9.0 |
n |
Numbered list of current bookmarked locations in the current song | v0.9.0 |
w [best.txt] |
List bookmarks on standard output. This is the content that would be saved to disk. Takes an optional argument of the filename to write to. For example, w best.txt would write the list to best.txt |
v0.9.0 |
If you use this tool and want to support me in its development, a donation would be greatly appreciated!
It's not about the amount at all: making a donation boosts the motivation to work on a project. Thank you very much if you can give anything.
Monero address: 88uoutKJS2w3FfkKyJFsNwKPHzaHfTAo6LyTmHSAoQHgCkCeR8FUG4hZ8oD4fnt8iP7i1Ty72V6CLMHi1yUzLCZKHU1pB7c