MusicBee Library
MusicBee is a freeware music player and library manager for Windows written in Visual Basic. The MusicBee Library file keeps track of all the media that MusicBee considers part of a person's collection. This includes all the metadata about each file, so MusicBee does not have to read the actual files every time to get that information.
Format
The format of MusicBee's library starts with the amount of files in the library, encoded as a signed 32-bit integer that has been left-shifted by 8. This is then followed by the blocks that represent each of the files.
Data | Format | Size (in bytes) |
---|---|---|
File Designation? (if 1, the end of the file has been reached) | byte | 1 |
Status? | byte | 1 |
? (always seems to be 0xFF) | byte | 1 |
Play Count | uint16 | 2 |
Date Last Played | int64 (.NET DateTime) | 8 |
Skip Count | uint16 | 2 |
File Path | pascal string (length is 7-bit) | variable |
File Size (in bytes) | int32 | 4 |
Sample Rate | int32 | 4 |
Channel Indicator | byte | 1 |
Bitrate Type (CBR, VBR, etc.) | byte | 1 |
Bitrate | int16 | 2 |
Track Length (in ms) | int32 | 4 |
Date Added | int64 (.NET DateTime) | 8 |
Date Modified | int64 (.NET DateTime) | 8 |
Following this are blocks representing the artwork associated with the file.
Data | Format | Size (in bytes) |
---|---|---|
Artwork Type (if 0xFE or 0xFF, move on) | byte | 1 |
? | pascal string (length is 7-bit) | variable |
Storage Mode | byte | 1 |
? | pascal string (length is 7-bit) | variable |
After the artwork we have tags listed with the code for the tag as a byte, followed by a pascal string containing the value of the tag. If the tag code is 0, then you move on to the next file block. If the tag code is 255 however, there are some unknown values pertaining to .cue files that are repeated per the value of an int16.
Data | Format | Size (in bytes) |
---|---|---|
? | byte | 1 |
? | uint16 | 2 |
? | int64 | 8 |
? | uint16 | 2 |
Links
https://gist.github.com/lempamo/6e8977065da593e372e45d4c628e7fc7 - Proof of Concept .MBL parser in Python