The Music Database Structure (PMD & Editor Libraries)

This is where to post any information learned from hacking around with the Pacemaker
Post Reply
Sox
Admin Sox
Admin Sox
Posts: 347
Joined: Fri Sep 14, 2012 9:25 pm
Location: Bath, England
Contact:

The Music Database Structure (PMD & Editor Libraries)

Post by Sox » Sat Sep 29, 2012 7:14 pm

None of the explanations of field usage below are known facts, they are simply my findings. Anything ending in a question mark is pure guesswork on my behalf. If anyone can supply more accurate descriptions of use, then I'll update this post if we think yours is the more likley.

You can use a program like SQLite Expert for browsing your databases

Note: All timestamp fileds, such as date_added as stored in a field type of Number(20). I believe this is the no. of millisecs since 1st Jan 1970

Sox

Tracks Table
This table stores every single track in your library

Code: Select all

Field Name	    Type           Use
=====================================================================================================
track_id	      INTEGER        Unique Id for the track (used in MixTracks and CaseTracks records)
artist	        VARCHAR(255)   MP3 tag - Artist
album_artist	  VARCHAR(255)   MP3 tag - Album artist
title	         VARCHAR(255)   MP3 tag - Track title
composer	      VARCHAR(255)   MP3 tag - Composer
album	         VARCHAR(255)   MP3 tag - Album
track_number	  NUMBER(4)      MP3 tag - Track No. on album
year	          NUMBER(4)      MP3 tag - Year
genre	         VARCHAR(255)   MP3 tag - Genre
is_part_of_c	  NUMBER(1)     
location	      VARCHAR(255)   Filepath & filename of track on disk
format	        VARCHAR(32)    A string representing audio format , eg. "MP3" or "WAV"
bit_rate	      NUMBER(10)     Bit rate
sample_rate 	  NUMBER(10)     Sample rate
file_size	     NUMBER(10)     Track filesize
play_time_secs	NUMBER(10)     Track duration in seconds
rating	        NUMBER(1)      MP3 tag - Rating
comments	      VARCHAR(255)   MP3 tag - Comments
date_added	    NUMBER(20)     Date track was added to library (format not known)
last_played	   NUMBER(20)     Date track was last played (format not known)
times_played	  NUMBER(10)     No. of time track has been played
cue_point	     NUMBER(20)     Info for cueing?
rc_mixes	      NUMBER(10)
bpm	           REAL           Beats per minute
label	         VARCHAR(255)   MP3 tag - Publishing label
track_flags      NUMBER(10)
global_id	     VARCHAR(255)   a GUID
loop_in	       NUMBER(20)     Looping info
loop_out	      NUMBER(20)     Looping info
structured_ct    VARCHAR(511)
ind_title	     VARCHAR(32)    How is this different to Title?
ind_artist	    VARCHAR(32)    How is this different to Artist?
ind_album	     VARCHAR(32)    How is this different to Album?
ind_genre	     VARCHAR(32)    How is this different to Genre?
ind_bpm	       INTEGER        How is this different to BPM?
discid	        VARCHAR(255)   Seems to be "C:" for me
producer         VARCHAR(255)   MP3 tag - Who produced it
remixer	       VARCHAR(255)   MP3 tag - Who remixed it
key	           VARCHAR(4)     Mixed in key info
number_of_tracks NUMBER(4)      MP3 tag - No of tracks on the CD
disc_number	   NUMBER(4)      MP3 tag - Which CD from the set?
number_of_discs  NUMBER(4)      MP3 tag - No of CDs that came in the set?
date_modified	 NUMBER(20)     Timestamp of last mp3 date change?
modified_by_ed	VARCHAR(32)    Version of editor that added track to library?
analyzed_by_ed	VARCHAR(32)    Version of editor that analysed?
analysis_ver	  INTEGER        Analysis version (all 1 for me)
Cases Table
This table stores all the cases in your library

Code: Select all

Field Name	    Declared Type  Use
=========================================================================================================================
case_id	    	INTEGER        Unique case identfied
name	          VARCHAR(255)   Name of case
date_created	  INTEGER        Date case was create
times_played	  NUMBER(10)     No. of times case played/loaded up
structured_ct    BLOB
image_id	      INTEGER        Unique Id of image (in MixImages) representing case
genre  	       VARCHAR(255)   Genre of case?
year	          NUMBER(4)      Year case was created?
rating	        NUMBER(1)      User rating for case?
producer   	   VARCHAR(255)   Producer for case?  
remixer	       VARCHAR(255)   Remixer for case?
play_time_secs	NUMBER(10)     Total duration of all tracks in case?
last_played	   NUMBER(20)     Timestamp of last case play/load?
date_modified	 INTEGER        Timestamp of when case last modified?
comments	      VARCHAR(255)   User comments about case?
creator_id	    VARCHAR(255)   Indicates if case created on device (& which model/version) or editor
CaseTracks Table
This table identifies which track (by track_id) is included in every case (by case_id)

Code: Select all

Field Name	    Declared Type   Use
=========================================================================================================================
case_id	       INTEGER         Unique case Id
track_id	      INTEGER         Unique track Id for track in case
Mixes Table
This table stores all the mixes in your library

Code: Select all

Field Name	    Declared Type   Use
=========================================================================================================================
mix_id	        INTEGER         Unique mix id
name	          VARCHAR(255)    Name for mix
date_created	  INTEGER         When mix was created
times_played	  NUMBER(10)      No. of time mix has been played
structured_ct 	BLOB
mix_image	     INTEGER         Unique id of image (in MixImages) representing mix
genre	         VARCHAR(255)    Mix genre
year	          NUMBER(4)       Mix year
rating	        NUMBER(1)       User rating for mix
producer	      VARCHAR(255)    Mix producer
remixer	       VARCHAR(255)    Mix remixer
play_time_secs	NUMBER(10)      Total duration of all tracks in mix?
last_played	   NUMBER(20)      Timestamp of when mix was last played
date_modified	 INTEGER         Timestamp of last mix edit
comments	      VARCHAR(255)    User comments for mix
creator_id	    VARCHAR(255)    Indicates if mix created on device (& which model/version) or editor
preview_markers  VARCHAR(255)    Dunno but it looks like xml
MixTracks Table
This table identifies which track (by track_id) is included in every mix (by mix_id)

Code: Select all

Field Name	      Declared Type  Use
=========================================================================================================================
mix_id	          INTEGER        Unique mix Id
track_id	        INTEGER        Unique track id for track in mix
dup_title  	     VARCHAR(255)   How is this different to Tracks.Title?
dup_artist	      VARCHAR(255)   How is this different to Tracks.Artist?
dup_album	       VARCHAR(255)   How is this different to Tracks.Album?
dup_play_time_secs NUMBER(10)     How is this different to Tracks.Play_Time_Secs?
track_index	     INTEGER        Position of track within mix (relative to other tracks)?
cue_point	       NUMBER(20)     Where in the track it is cued to before playing?
MixImages Table
I imagine unused table was to store the mix and case album art, but was never implemented

Code: Select all

Field Name	    Declared Type    Use
=========================================================================================================================
id	            INTEGER          Unique image Id
data	          BLOB             Bitmap data for image
TrackMap Table
I've no idea what this was intended for (mine is empty)

Code: Select all

Field Name	    Declared Type    Use
=========================================================================================================================
ext_db	        VARCHAR(255)
ext_id	        INTEGER
int_id	        INTEGER
tag_hash	      INTEGER          Unique hash signature for all MP3 tag info?
location_hash	 INTEGER          Unique hash signature for location?
Never experiment with drugs.... you might waste them

Post Reply