Orpheus
Tracks per key
Tracks per BPM
Most-played artists
Genres from Soundeo
Top genres
Tracks per rating
Track length
Tracks added per month
BPM × key
Key paths
Played sets
Gaps
Searches for your gaps
Orpheus reads your Rekordbox library and shows keys, BPM, gaps, played sets and set plans. It only reads. It never writes to Rekordbox.
What Orpheus needs
- Rekordbox 6 or 7 on this computer, opened at least once.
- Tracks analyzed in Rekordbox with key detection on. A track without a key is not in the key charts.
- Rekordbox closed while Orpheus reads, if Rekordbox holds the database. The banner says so when it happens.
Setup
- Open Vibe Deus. The desktop app starts the server by itself. From a terminal:
hermesthrice serve, then openhttp://127.0.0.1:3000/orpheus. - Look at the sidebar. Rekordbox · 1,823 tracks means the library loaded.
- If it says Rekordbox · not loaded, read the red banner on the Library tab. It names the cause and the steps. The table below has every case.
Where the database is
Orpheus looks for master.db in this order and uses the first file it finds.
| Order | Location |
|---|---|
| 1 | The database file set on the Settings page, if any. |
| 2 | HERMES_REKORDBOX_DB, if the variable is set. It must point at the file. |
| 3 | macOS: ~/Library/Pioneer/rekordbox/master.db |
| 3 | Windows: %APPDATA%\Pioneer\rekordbox\master.db |
| 4 | The path in rekordboxAgent's options.json (set when you moved the library in Rekordbox). |
| 5 | The folder in rekordbox6/rekordbox3.settings. |
When the library is not found, the banner lists every path it checked.
Reload library
Rekordbox writes to master.db as you work: new tracks, analysis, play counts, history. Orpheus reads the file once when the server starts. Click Reload library to read it again. If the new read fails, Orpheus keeps the last good library and shows the reason.
Troubleshooting
| What you see | Cause | Fix |
|---|---|---|
| Banner: Rekordbox database not found, with a list of paths | Rekordbox is not installed, was never opened, or its library is on another disk. | Install Rekordbox 6 or 7 and open it once. For a library elsewhere, paste the path of master.db into Settings, Database file, and click Save and reload. |
| Banner: Rekordbox is using … | Rekordbox or rekordboxAgent holds a lock on the file. | Quit Rekordbox. Quit rekordboxAgent too: the small Rekordbox icon in the menu bar (Mac) or system tray (Windows). Click Reload library. |
| Banner: Could not decrypt … | The file is not a Rekordbox 6 or 7 master.db: an XML export, a Rekordbox 5 library, or a damaged file. Or Rekordbox changed its key in an update. |
In Settings, point Database file at the real master.db, or clear it with Use default. If the file is right, report your Rekordbox version. |
| Banner: No file at … or HERMES_REKORDBOX_DB points to …, which does not exist | The path in Settings, or the variable, has a typo or an old path. | Fix the path in Settings, or click Use default. For the variable: fix or unset it, then restart. |
| Banner: Server not running | The Vibe Deus app is closed, or the terminal server stopped. | Open the app, or run hermesthrice serve. Reload this page. |
| Terminal: Address already in use | Another Vibe Deus is already on that port. | Use the one that runs, or start with hermesthrice serve --port 3001. |
| Loaded, but 0 tracks or far fewer than Rekordbox shows | Rekordbox keeps one library per computer account. Or the tracks sit in playlists on a USB, not in the collection. | In Rekordbox, open Collection and read the count at the bottom. Import the tracks into the collection. Reload library. |
| Numbers are stale after you added or analyzed tracks | Orpheus read the file before the change. | Click Reload library. Rekordbox saves some changes only when you quit it. |
| Key chart almost empty, many keys at 0 | Tracks are not analyzed, or key detection is off in Rekordbox. | Rekordbox, Preferences, Analysis: turn Key on. Select the collection, right-click, Analyze Track. Reload library. |
| Rekordbox shows Gm on one track and 6A on another | Rekordbox's key display setting changed over time. Both spellings mean the same key. | Nothing. Orpheus merges them by Camelot code. |
| A BPM is half or double what you hear (62 instead of 124) | Rekordbox analyzed the track in the wrong range. | In Rekordbox, set the BPM range in Preferences, Analysis, and re-analyze the track. Reload library. |
| Played sets is empty | Rekordbox writes history only in Performance mode, when a track is loaded and played. Export mode makes no history. | Play sets in Performance mode. Orpheus shows the last 90 days. |
| Reload says Reload already in progress | The previous reload is still reading the file. | Wait a few seconds, then click again. |
| Fill from Soundeo finds few genres | Titles are file names, artists are empty, or the tracks are not on Soundeo. | Fix artist and title in Rekordbox for the tracks that matter, Reload library, Fill again. Already found genres stay. |
| A genre looks like a web address | A track carries that text in its Genre tag. | Fix the tag in Rekordbox. Reload library. |
The server prints every library event in the terminal as lines that start with Rekordbox:. The desktop app prints the same lines to its log.
Genres from Soundeo
Most Rekordbox libraries have genres on a few tracks only. The Library tab counts the tracks without one and can fill them: one Soundeo search per track, and the genre of the first result whose title and artist match. Found genres live in Vibe Deus's own store (~/.hermesthrice/orpheus.db), never in Rekordbox. They count in the stats, the gaps, the thin genres and Sirene's picks. Clear filled genres forgets them again.
- About a second per track. A run can be stopped and resumed; found genres stay.
- Tracks shorter than one minute are skipped. They are samples, not tracks.
- A track Soundeo does not carry stays without a genre. Search it by hand in Sirene, or tag it in Rekordbox.
- Soundeo's names differ from your own tags: Tech House, Indie Dance, Melodic House & Techno, not "Electro". A Rekordbox tag always wins over a filled genre.
How the numbers are made
- Keys come from Rekordbox's analysis. Orpheus shows each as Camelot code plus musical name, for example 9A · Em.
- BPM comes from Rekordbox's analysis, read at 1/100 precision. The histogram uses 5 BPM buckets.
- Gaps: a key is empty when it has no track. A genre is thin when it is under 3% of the library. The BPM gap range is your average BPM ±10.
- Play counts and the Played sets tab come from Rekordbox's history tables.
Camelot rules
The Camelot wheel numbers the 24 keys 1 to 12 in two rings: A (minor) and B (major). From any key, for example 9A · Em, these mixes sound smooth:
- Same number, other ring: 9A ↔ 9B
- One step up: 9A → 10A
- One step down: 9A → 8A
Plan a set uses these rules. Each next track is in a compatible key, near your BPM, never the same artist twice in a row.
Claude Code
Orpheus also runs as an MCP server, so Claude Code can query your library in plain words. Setup, the tool list and the REST endpoints are in orpheus/README.md.