idk
This commit is contained in:
1 parent
1e49010aa9
commit
6a6553077b
11 files changed
+1315
-32
No files matched your search
+97
-2
@@ -355,6 +355,8 @@ types:
|
||||
'page_type::history_playlists': history_playlist_row
|
||||
'page_type::history_entries': history_entry_row
|
||||
'page_type::tracks': track_row
|
||||
'page_type::browse_filter_index': browse_filter_index_row
|
||||
'page_type::browse_menu': browse_menu_row
|
||||
doc: |
|
||||
The actual content of the row, as long as it is present.
|
||||
-webide-parse-mode: eager
|
||||
@@ -605,6 +607,78 @@ types:
|
||||
doc: |
|
||||
The variable-length string naming the playlist.
|
||||
|
||||
browse_filter_index_row:
|
||||
doc: |
|
||||
A row in the `browse_filter_index` (was `unknown_17`) table. Lists the columns
|
||||
that appear in the player's "Filter by ->" sidebar, in display order. The
|
||||
reverse-engineered semantics: each row enumerates one filterable column. The
|
||||
first group (`d == 0`) has 12 rows that look like type/icon descriptors; the
|
||||
second group (`d == 1..10`) defines the navigation entries with `d` as the
|
||||
sort position. The 22 column ids that appear here are exactly the
|
||||
"filterable" subset of the 27 columns -- CUE, COMMENTS, DJ PLAY COUNT,
|
||||
DEFAULT, ALPHABET do not appear. Verified byte-for-byte identical across
|
||||
multiple working rekordbox exports.
|
||||
seq:
|
||||
- id: column_id
|
||||
type: u2
|
||||
doc: |
|
||||
The column this row references; corresponds to `id` in the `columns` table.
|
||||
- id: secondary_column
|
||||
type: u2
|
||||
doc: |
|
||||
A second column id whose role is not fully nailed down. For rows in the
|
||||
`d == 0` group it usually equals `column_id + 1`; for the navigation
|
||||
group it varies. Likely a secondary sort key or an internal ID-lookup
|
||||
target rather than something rendered to the user (the KEY filter does
|
||||
not show CUEs even though `secondary_column == CUE` here).
|
||||
- id: filter_type
|
||||
type: u2
|
||||
doc: |
|
||||
Filter kind code. Observed values: 0x163 (=355) for textual filters,
|
||||
0x104-0x106 (=260-262) for numeric/enum filters, 0x63 (=99) for
|
||||
non-leaf navigation entries, 0x263 (=611) for the MATCHING entry,
|
||||
0x01-0x03 for the ARTIST/ALBUM/TRACK leaf entries.
|
||||
- id: sort_index
|
||||
type: u2
|
||||
doc: |
|
||||
Zero for the first group, otherwise 1..10 giving the display order of
|
||||
this row in the top-level filter list (1 = first, 10 = last).
|
||||
|
||||
browse_menu_row:
|
||||
doc: |
|
||||
A row in the `browse_menu` (was `unknown_18`) table. Together with
|
||||
`browse_filter_index`, this drives the player's top-level browse navigation.
|
||||
Semantic model: `display_column` is the column shown in the menu;
|
||||
`sort_column` is the column used to sort/key it. When the two are equal the
|
||||
entry opens a drilldown of that column's distinct values (e.g.
|
||||
`(ARTIST, ARTIST)` -> list of artists). When they differ the entry opens a
|
||||
flat list of `display_column` rows sorted by `sort_column` (e.g.
|
||||
`(BPM, TRACK)` -> tracks sorted by BPM). Verified content is identical
|
||||
across all observed working exports.
|
||||
seq:
|
||||
- id: sort_column
|
||||
type: u2
|
||||
doc: |
|
||||
The column used to order the list shown by this menu entry.
|
||||
- id: display_column
|
||||
type: u2
|
||||
doc: |
|
||||
The column whose rows the entry lists. If `display_column == sort_column`,
|
||||
you get a drilldown of that column's distinct values; otherwise a flat
|
||||
list ordered by `sort_column`.
|
||||
- id: flags
|
||||
type: u2
|
||||
doc: |
|
||||
Two packed bytes. Low byte is non-zero only for the "tracks sorted by
|
||||
BPM" row (=2, possibly a rendering hint). High byte (0x01..0x07) gives
|
||||
the display order of the top-level entries (1=DEFAULT, 2=ALPHABET,
|
||||
3=ARTIST, 4=ALBUM, 5=tracks-by-BPM, 6=BPM-by-rating, 7=cues-by-key).
|
||||
A value of 1 marks the row as a secondary sort pair rather than a
|
||||
top-level menu item.
|
||||
- id: reserved
|
||||
type: u2
|
||||
doc: Always zero in observed exports.
|
||||
|
||||
history_entry_row:
|
||||
doc: |
|
||||
A row that associates a track with a position in a history playlist.
|
||||
@@ -1138,9 +1212,30 @@ enums:
|
||||
doc: |
|
||||
TODO figure out and explain
|
||||
17:
|
||||
id: unknown_17
|
||||
id: browse_filter_index
|
||||
doc: |
|
||||
Drives the player's "Filter by ->" sidebar. Each row is four little-endian u2s
|
||||
`(a, b, c, d)` -- see `browse_filter_index_row` -- where `a` is the column the
|
||||
menu item shows, `d` is its sort order in the filter list, and `c` is a type
|
||||
code (0x163/0x104/0x105/0x106 for the various filter kinds). Exactly the
|
||||
columns not in this table are the "non-filterable" ones (CUE, COMMENTS,
|
||||
DJ PLAY COUNT, DEFAULT, ALPHABET); 22 of the 27 column ids appear here.
|
||||
Verified content is identical across multiple working exports, so this is
|
||||
effectively a fixed table rather than per-library content. Was `unknown_17`.
|
||||
18:
|
||||
id: unknown_18
|
||||
id: browse_menu
|
||||
doc: |
|
||||
Drives the player's top-level browse menu. Each row is four little-endian u2s
|
||||
`(a, b, c, d)` -- see `browse_menu_row` -- where `b` is the column the menu
|
||||
entry *displays* and `a` is the column it *sorts by*. When `a == b` the entry
|
||||
opens a drilldown of that column's distinct values (e.g. ARTIST -> list of
|
||||
artists). When `a != b` the entry opens a flat list of `b` rows sorted by
|
||||
`a` (e.g. (BPM, TRACK) -> tracks sorted by BPM). Rows split into two groups:
|
||||
rows where `c == 1` are secondary sort pairs (10 of them); rows where `c`
|
||||
is `(0x100 * n)` define the top-level menu items with `n` as the display
|
||||
position (DEFAULT, ALPHABET, ARTIST, ALBUM, "tracks sorted by BPM",
|
||||
"BPM by rating", "cues by key"). Verified content is identical across all
|
||||
observed working exports. Was `unknown_18`.
|
||||
19:
|
||||
id: history
|
||||
doc: |
|
||||
|
||||
Reference in new issue
Block a user