February 01, 2025
beetbridge
A view of the user
Information architecture is hard. Making sense of a mess of files and metadata is critical for DJs and audiophiles, who have tens of thousands of songs with differing structures and information. Beets is an open source library manager allowing users to organize their music collections in ways that work for them, including getting the right information like the release year or the genre.
For DJs, this metadata structure is read by software to organize music into similar genres, vibes, and speeds - automatically. Getting the right metadata structure is incredibly hard, with several different databases like Discogs and Musicbrainz, all of which have different approaches to metadata governance.
The Solution
beetbridge is an open-source plugin that connects two powerful music management tools:
- Beets: A robust media organizer focused on library structure and metadata consistency
- OneTagger: Made for DJs, it can grab important data from a number of sources
The plugin automates the process of passing music through both systems, eliminating manual steps and ensuring consistent results.
Key Features
Automated Workflow
- Seamlessly integrates into the existing beets import process
- Handles the communication between beets and OneTagger automatically
- Preserves the best aspects of both tools while eliminating duplicate work
Rich Metadata Integration
- Leverages Discogs’ comprehensive genre and style information
- Combines multiple metadata fields into unified, searchable tags
- DJ software is able to read these fields and create “smart crates”
Command Line Interface Design
- Provides clear visual feedback during long-running operations
- Communicates state information throughout the process
- Maintains the familiar command-line workflow that beets users expect
Technical Implementation
Configuration
Each user will have different needs and opinions on their metadata structure, so the plugin is built with flexibility in mind. Users have control over how files are processed by providing their configuration information, and beetbridge does the rest.
onetagger:
executable: path/to/onetagger-cli
config: path/to/onetagger/config.json
Designing for CLI interfaces is a unique challenge. The interface is designed to show feedback and state dynamically as import calls are being made, which can be a lengthy process as the round-trip call to metadata APIs can take a few seconds.
Impact
The plugin enables powerful music organization capabilities for DJs and audiophiles:
- Find tracks by specific criteria (e.g., modern disco over 120BPM from 2015+)
- Create dynamic smart crates based on metadata
- Maintain consistent genre and style information across the library