Deep-Symmetry / crate-digger

Java library for fetching and parsing rekordbox exports and track analysis files.
Other
139 stars 18 forks source link

Add beat loop length #18

Closed mganss closed 3 years ago

mganss commented 3 years ago

The beat loop length shows in the Auto Beat Loop area in Rekordbox.

brunchboy commented 3 years ago

Oh, interesting! What kind of values have you seen for numerator and denominator?

brunchboy commented 3 years ago

We need to update the analysis file documentation and diagram to show these new discoveries as well. And while I was working on that, I realized that these values are likely present in the non-extended version of the tag as well (PCOB rather than PCO2, with entries tagged PCPT rather than PCP2). The size of the PCPT entry is exactly right for these two values to fit at the end of it. Would it be easy for you to verify that with the media where you discovered these in the PCP2 entries, @mganss ?

mganss commented 3 years ago

Values are powers of 2, for numerator in the range 1 to 512, for denominator 1 to 64. If one value is > 1, the other is always 1, i.e. there are no values like 4/16.

mganss commented 3 years ago

PCOB does not contain the beat loop length. The bytes at the end (after loopTime) are all zero in my example.

brunchboy commented 3 years ago

Thanks very much for confirming these details. I was guessing that might be what numerator and denominator looked like, after reviewing the rekordbox documentation and playing a bit. They could have fit all that information in a single byte, but this format has never been much about efficiency. 😄

mganss commented 3 years ago

Yes, same with the DB: Random numbers in VARCHAR columns as primary keys, no foreign key constraints, almost all columns nullable etc.

OTOH the database gave me the idea to look for missing parts in file format such as the beat loop length which has a dedicated integer column in the djmdCue table. There's probably still more that can be gleaned from the database.

I had hoped in particular to find information for active loops but it doesn't seem to be there.

brunchboy commented 3 years ago

Do you mean whether the loop is going to engage automatically once the player reaches it? Yes, that must be in there somewhere, I agree!

mganss commented 3 years ago

@brunchboy Yes, exactly. I've compared files again and found it (partially), see #19.