Utility to create an mpd database using customized rules and the ability to filter out multi-channel or stereo media. Basically mpd but only the ability to make databases.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Jay Moore 043d5b166d Hot Diggity Daffodil! 1 week ago
LICENSES Might work. Probably does. Thicc. 1 week ago
android Might work. Probably does. Thicc. 1 week ago
doc Might work. Probably does. Thicc. 1 week ago
python/build Might work. Probably does. Thicc. 1 week ago
src Hot Diggity Daffodil! 1 week ago
subprojects Might work. Probably does. Thicc. 1 week ago
systemd Might work. Probably does. Thicc. 1 week ago
test Might work. Probably does. Thicc. 1 week ago
win32 Might work. Probably does. Thicc. 1 week ago
AUTHORS Might work. Probably does. Thicc. 1 week ago
COPYING Might work. Probably does. Thicc. 1 week ago
LICENSE Might work. Probably does. Thicc. 1 week ago
NEWS Might work. Probably does. Thicc. 1 week ago
README.md Kinda works. Kinda doesn't. Bloated AF. 1 week ago
meson.build Hot Diggity Daffodil! 1 week ago
meson_options.txt Hot Diggity Daffodil! 1 week ago
mpd.svg Might work. Probably does. Thicc. 1 week ago
valgrind.suppressions Might work. Probably does. Thicc. 1 week ago

README.md

mpd-dbcreate - "Well we're boned!" Alpha

It's mpd without the daemon and playback functionality. Creates an mpd database based on "better" rules regarding CUE sheets, multi-channel files, and SACD content.

Overview

mpd-dbcreate is a command-line tool that creates MPD-compatible database files without running the full MPD daemon. This is particularly useful for:

  • Creating databases for large music collections without running MPD You got hit by the systemd timeout first launch, didn't you?
  • Building databases on systems where MPD isn't installed Run it directly on the RAID!
  • Scanning network-mounted collections (NFS, SMB, etc.) Without mounting...if that's your thing!
  • Filtering collections by channel configuration (stereo/multichannel) Both SACD and other media!
  • Currently doesn't support directly updating the database. and you sure as hell can't use mpd to update anymore.
  • The same size as the mpd binary! I mean...this is just mpd with the server portion disabled and just writing a database.

mpd-dbcreate is currently considered alpha software. May not be suitable for production work. Use at your own risk. I'm not responsible for what happens. Safety not guaranteed.

Features

  • Scans music directories and creates MPD-compatible database files At least the way I want them made.
  • Supports all audio formats that MPD supports SACD playback support depends on your version/build of mpd. Milage may vary.
  • Handles large collections (tested with multi-TB libraries) and I did it over the network!
  • Looks for every reason to not use a .CUE sheet. There are valid reasons and that's why I wrote this!
  • Network filesystem support (NFS, SMB, WebDAV) Support is built in but untested and broken as of now
  • Channel filtering options (stereo-only, multichannel-only, or all) Because it's not like I listen to the Britney Spears in 5.1 on a regular basis.
  • Progress indication for long scans. (Soon) I just look at system monitor for disk/network access.

"Better" Media Handling

I created this for the basic reason that mpd was not generating databases that worked for me and made the following behavior changes:

CUE Sheet Handling

You don't always need a CUE sheet for playback. If your media files are alraedy split up, as the usually already are, then a CUE sheet doesn't give you any advantage on plaback. In fact, this is a disadvantage. If mpd sees a cue sheet; it will only index that cue sheet. This is fine except when it doesn't properly parse the sheet and you wind up with most of an album unplayable.

The solution is to just not use CUE sheets unless necessary. It compares the number of tracks in the CUE sheet to the number of media files in the folder. As long as the number of tracks in the CUE doesn't exceed one more than the file count; it will completely ignore the CUE and just index the media files directly! No more broken albums and albums that do require a CUE sheet still get them.

Why one more than file count? Multi-session/EnhancedCD/CDExtra discs. That data session counts as a track in the CUE sheet. We will never match tracks vs files from a multi-session disc; so that allowance of 1 catches those.

Multi-Channel Filtering

If you don't have multi-channel playback; you don't need the multi-channel files in the database! So let's not even put them in! This was primarily developed for the SACD side as many of those contain both stereo and 5.1; however you may still have 5.1/multichannel releases floating around. I'm stereo-only playback and I have a ton of 5.1; and not all of them on SACD!

You can specify if you want to keep just stereo, just multichannel, or everything! Be warned, this is literal! A multichannel database will not contain stereo files. If you support both types of playback, then the -all feature will work for you.

SACD Cleanup

SACD's are presented to mpd in a non-standard way; so we had to go down in to that code and implement some changes. The primary one is that it follows stereo/multichannel rules like for the rest of the media. So a stereo only database will not have 5.1 SACD stuff mixed in.

We also cleaned up the tags! The plugin added technical information to the album and track title tags. It's ugly. Primarily putting the channel configuration and track number in the track title is a bit much. So...we clean everything up! Track titles are sanitized/cleaned to be just the title, same with the album titles. Afterall...if you're only running stereo content, then it's all stereo; you're not at a risk of picking the multichannel version. Likewise, if you've got a multi-channel database; you won't be getting any stereo content.

And if you kept everything, you're still covered! We append (Stereo) or (Multichannel) to the album title. Clean, more human-readable.

Building

I've built this on CachyOS. If you have OSX or Windows good luck. It probably won't work. You guys aren't using mpd anyway; what am I worried about?

Prerequisites

  • Meson build system (>= 1.2)
  • Ninja
  • C++23 compatible compiler
  • Required libraries (same as MPD):
    • libfmt
    • libicu
    • SQLite3 (optional, for sticker database support)
    • Various audio format libraries (FLAC, Vorbis, etc.)

If you can build mpd, you can build this.

Build Instructions

meson setup builddir
ninja -C builddir

The executable will be created at builddir/mpd-dbcreate.

Installation

There is no installation. mpd-dbcreate is a static binary. You may put it in your $PATH if you wish.

Usage

mpd-dbcreate --music-dir <path> --database <path> [options]

Options:
  --music-dir <path>   Music directory to scan (required)
  --database <path>    Output database file path (required)
  --stereo             Include only stereo files
  --multichannel       Include only multichannel files  
  --all                Include all files (default)
  --help               Show help message

Examples

Create a database of only stereo content:

mpd-dbcreate --music-dir /path/to/media --database /path/to/file.db -stereo

Scan a database of only multichannel content:

mpd-dbcreate --music-dir /path/to/media --database /path/to/file.db -multichannel

Create a database of all content:

mpd-dbcreate --music-dir /path/to/media --database /path/to/file.db -all

Compatibility

The generated database files are fully compatible with MPD and can be used as drop-in replacements for MPD's own database files. Simply copy the generated database to your MPD state directory (typically /var/lib/mpd/database or ~/.mpd/database).

License

GPL-2.0-or-later (inherited from MPD). Please see the COPYING or LICENSE files.

Credits

Based on Max's fork of mpd with SACD and DVD-A plguins: https://sourceforge.net/projects/mpd.sacddecoder.p/ Original MPD project: https://www.musicpd.org/