MusicBee Library

From Just Solve the File Format Problem
Jump to: navigation, search
File Format
Name MusicBee Library
Extension(s) .mbl

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.


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 - Proof of Concept .MBL parser in Python

Personal tools