pyrekordbox 0.2.0__py3-none-any.whl → 0.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- docs/Makefile +20 -0
- docs/make.bat +35 -0
- docs/source/_static/images/anlz_beat.svg +53 -0
- docs/source/_static/images/anlz_file.svg +204 -0
- docs/source/_static/images/anlz_pco2.svg +138 -0
- docs/source/_static/images/anlz_pcob.svg +148 -0
- docs/source/_static/images/anlz_pcp2.svg +398 -0
- docs/source/_static/images/anlz_pcpt.svg +263 -0
- docs/source/_static/images/anlz_ppth.svg +123 -0
- docs/source/_static/images/anlz_pqt2.svg +324 -0
- docs/source/_static/images/anlz_pqt2_2.svg +253 -0
- docs/source/_static/images/anlz_pqtz.svg +140 -0
- docs/source/_static/images/anlz_pssi.svg +192 -0
- docs/source/_static/images/anlz_pssi_entry.svg +191 -0
- docs/source/_static/images/anlz_pvbr.svg +125 -0
- docs/source/_static/images/anlz_pwav.svg +130 -0
- docs/source/_static/images/anlz_pwv3.svg +139 -0
- docs/source/_static/images/anlz_pwv4.svg +139 -0
- docs/source/_static/images/anlz_pwv5.svg +139 -0
- docs/source/_static/images/anlz_pwv5_entry.svg +100 -0
- docs/source/_static/images/anlz_pwv6.svg +130 -0
- docs/source/_static/images/anlz_pwv7.svg +139 -0
- docs/source/_static/images/anlz_pwvc.svg +125 -0
- docs/source/_static/images/anlz_tag.svg +110 -0
- docs/source/_static/logos/dark/logo_primary.svg +75 -0
- docs/source/_static/logos/light/logo_primary.svg +75 -0
- docs/source/_static/logos/mid/logo_primary.svg +75 -0
- docs/source/_templates/apidoc/module.rst_t +8 -0
- docs/source/_templates/apidoc/package.rst_t +57 -0
- docs/source/_templates/apidoc/toc.rst_t +7 -0
- docs/source/_templates/autosummary/class.rst +32 -0
- docs/source/_templates/autosummary/module.rst +55 -0
- docs/source/api.md +18 -0
- docs/source/conf.py +178 -0
- docs/source/development/changes.md +3 -0
- docs/source/development/contributing.md +3 -0
- docs/source/formats/anlz.md +634 -0
- docs/source/formats/db6.md +1233 -0
- docs/source/formats/mysetting.md +392 -0
- docs/source/formats/xml.md +376 -0
- docs/source/index.md +105 -0
- docs/source/installation.md +3 -0
- docs/source/quickstart.md +185 -0
- docs/source/requirements.txt +7 -0
- docs/source/tutorial/anlz.md +7 -0
- docs/source/tutorial/configuration.md +66 -0
- docs/source/tutorial/db6.md +179 -0
- docs/source/tutorial/index.md +20 -0
- docs/source/tutorial/mysetting.md +124 -0
- docs/source/tutorial/xml.md +140 -0
- pyrekordbox/__init__.py +1 -1
- pyrekordbox/__main__.py +16 -37
- pyrekordbox/_version.py +2 -2
- pyrekordbox/anlz/file.py +39 -0
- pyrekordbox/anlz/structs.py +3 -5
- pyrekordbox/config.py +71 -27
- pyrekordbox/db6/database.py +290 -61
- pyrekordbox/db6/registry.py +24 -0
- pyrekordbox/db6/tables.py +501 -340
- pyrekordbox/mysettings/file.py +0 -25
- pyrekordbox/utils.py +1 -1
- {pyrekordbox-0.2.0.dist-info → pyrekordbox-0.2.2.dist-info}/METADATA +42 -20
- pyrekordbox-0.2.2.dist-info/RECORD +80 -0
- {pyrekordbox-0.2.0.dist-info → pyrekordbox-0.2.2.dist-info}/top_level.txt +1 -0
- tests/test_config.py +175 -0
- tests/test_db6.py +95 -0
- pyrekordbox-0.2.0.dist-info/RECORD +0 -29
- {pyrekordbox-0.2.0.dist-info → pyrekordbox-0.2.2.dist-info}/LICENSE +0 -0
- {pyrekordbox-0.2.0.dist-info → pyrekordbox-0.2.2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,392 @@
|
|
1
|
+
# My-Setting Files Format
|
2
|
+
|
3
|
+
This document explains the file format of the following Rekordbox My-Setting files:
|
4
|
+
|
5
|
+
- `DEVSETTING.DAT`
|
6
|
+
- `DJMMYSETTING.DAT`
|
7
|
+
- `MYSETTING.DAT`
|
8
|
+
- `MYSETTING2.DAT`
|
9
|
+
|
10
|
+
## My-Setting File Structure
|
11
|
+
|
12
|
+
The My-Setting files of Rekordbox are made up of a file header, a body structure
|
13
|
+
containing the main data and a file footer. In contrast to the analysis files the
|
14
|
+
My-Setting files use little endian data types.
|
15
|
+
|
16
|
+
The files start with a single byte `len_strings` specifying the combined size of the
|
17
|
+
string data fields (should be always 96). The next 3 bytes are always zero.
|
18
|
+
The first 4 bytes can also be interpreted as a little endian 32-bit integer.
|
19
|
+
After that the My-Setting files contain three 32 byte long ASCII strings.
|
20
|
+
The first 32 byte field `brand` contains the name of the brand. The value seems to
|
21
|
+
depend on the file:
|
22
|
+
|
23
|
+
| File | Value |
|
24
|
+
|--------------------|--------------|
|
25
|
+
| `DEVSETTING.DAT` | `PIONEER DJ` |
|
26
|
+
| `DJMMYSETTING.DAT` | `PioneerDJ` |
|
27
|
+
| `MYSETTING.DAT` | `PIONEER` |
|
28
|
+
| `MYSETTING2.DAT` | `PIONEER` |
|
29
|
+
|
30
|
+
The next 32 byte long field `software` describes the name of the software. The value
|
31
|
+
seems to always be "rekordbox". The last string in the file header is `version`,
|
32
|
+
which describes some kind of version number.
|
33
|
+
The last value of the header is `len_data`, which describes
|
34
|
+
the size of the `data` data in bytes. The total length of the header is 104 bytes.
|
35
|
+
|
36
|
+
The My-Setting files end with an 4 byte long file footer, which contain a 2 byte checksum
|
37
|
+
and an 2 byte unknown value, which seems to always be `0x00`. The checksum is calculated
|
38
|
+
over the contents of the `data` field, except for `DJMSETTING.DAT` files where
|
39
|
+
the checksum is calculated over all preceding bytes including the length fields and
|
40
|
+
uses the CRC16 XMODEM algorithm [^footnote-1].
|
41
|
+
|
42
|
+
## My-Settings File Body
|
43
|
+
|
44
|
+
After the file header of the My-Settings files the main data begins. The format depends
|
45
|
+
on the kind of file. All settings are stored as enums, starting at the value
|
46
|
+
`0x80 = 129`. Note that even integers are not stored directly but mapped to the enum
|
47
|
+
values, for example `0x80` -> 1, `0x81` -> 2, etc. Sometimes the enum values are
|
48
|
+
shifted by one: `0x81` -> 1, `0x82` -> 2, etc.
|
49
|
+
|
50
|
+
### MySetting Body
|
51
|
+
|
52
|
+
The payload of the `MYSETTING.DAT` file is 40 bytes long and contains the main
|
53
|
+
settings for Pioneer audio players (CDJ's).
|
54
|
+
|
55
|
+
```{eval-rst}
|
56
|
+
.. list-table:: `MYSETTING.DAT` data body
|
57
|
+
:widths: 13 25 120
|
58
|
+
:header-rows: 1
|
59
|
+
|
60
|
+
* - Byte
|
61
|
+
- Name
|
62
|
+
- Description
|
63
|
+
* - 1-8
|
64
|
+
-
|
65
|
+
- Usually ``b"xV4\x12\x02\x00\x00\x00"``
|
66
|
+
* - 9
|
67
|
+
- `on_air_display`
|
68
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
69
|
+
* - 10
|
70
|
+
- `lcd_brightness`
|
71
|
+
- ``0x81`` = `one`, ``0x82`` = `two`, ..., ``0x85`` = `five`
|
72
|
+
* - 11
|
73
|
+
- `quantize`
|
74
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
75
|
+
* - 12
|
76
|
+
- `auto_cue_level`
|
77
|
+
- See encodings section
|
78
|
+
* - 13
|
79
|
+
- `language`
|
80
|
+
- See encodings section
|
81
|
+
* - 14
|
82
|
+
-
|
83
|
+
- Usually ``b"\x01"``
|
84
|
+
* - 15
|
85
|
+
- `jog_ring_brightness`
|
86
|
+
- ``0x80`` = `off`, ``0x81`` = `dark`, ``0x82`` = `bright`
|
87
|
+
* - 16
|
88
|
+
- `jog_ring_indicator`
|
89
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
90
|
+
* - 17
|
91
|
+
- `slip_flashing`
|
92
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
93
|
+
* - 18-20
|
94
|
+
-
|
95
|
+
- Usually ``b"\x01\x01\x01"``
|
96
|
+
* - 21
|
97
|
+
- `disc_slot_illumination`
|
98
|
+
- ``0x80`` = `off`, ``0x81`` = `dark`, ``0x82`` = `bright`
|
99
|
+
* - 22
|
100
|
+
- `eject_lock`
|
101
|
+
- ``0x80`` = `unlock`, ``0x81`` = `lock`
|
102
|
+
* - 23
|
103
|
+
- `sync`
|
104
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
105
|
+
* - 24
|
106
|
+
- `play_mode`
|
107
|
+
- ``0x80`` = `continue`, ``0x81`` = `single`
|
108
|
+
* - 25
|
109
|
+
- `quantize_beat_value`
|
110
|
+
- ``0x80`` = `one`, ``0x81`` = `half`, ..., ``0x83`` = `eighth`
|
111
|
+
* - 26
|
112
|
+
- `hotcue_autoload`
|
113
|
+
- ``0x80`` = `off`, ``0x81`` = `on`, ``0x83`` = `rekordbox`
|
114
|
+
* - 27
|
115
|
+
- `hotcue_color`
|
116
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
117
|
+
* - 28-29
|
118
|
+
-
|
119
|
+
- Always ``0``
|
120
|
+
* - 30
|
121
|
+
- `needle_lock`
|
122
|
+
- ``0x80`` = `unlock`, ``0x81`` = `lock`
|
123
|
+
* - 31-32
|
124
|
+
-
|
125
|
+
- Always ``0``
|
126
|
+
* - 33
|
127
|
+
- `time_mode`
|
128
|
+
- ``0x80`` = `elapsed`, ``0x81`` = `remain`
|
129
|
+
* - 34
|
130
|
+
- `jog_mode`
|
131
|
+
- ``0x80`` = `cdj`, ``0x81`` = `vinyl`
|
132
|
+
* - 35
|
133
|
+
- `auto_cue`
|
134
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
135
|
+
* - 36
|
136
|
+
- `master_tempo`
|
137
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
138
|
+
* - 37
|
139
|
+
- `tempo_range`
|
140
|
+
- ``0x80`` = `six`, ``0x81`` = `ten`, ``0x82`` = `sixteen`, ``0x83`` = `wide`
|
141
|
+
* - 38
|
142
|
+
- `phase_meter`
|
143
|
+
- ``0x80`` = `type1`, ``0x81`` = `type2`
|
144
|
+
* - 39-40
|
145
|
+
-
|
146
|
+
- Always ``0``
|
147
|
+
|
148
|
+
```
|
149
|
+
|
150
|
+
### MySetting2 Body
|
151
|
+
|
152
|
+
The payload of the `MYSETTING2.DAT` file is 40 bytes long and contains additional
|
153
|
+
settings for Pioneer audio players (CDJ).
|
154
|
+
|
155
|
+
```{eval-rst}
|
156
|
+
.. list-table:: `MYSETTING2.DAT` data body
|
157
|
+
:widths: 13 25 120
|
158
|
+
:header-rows: 1
|
159
|
+
|
160
|
+
* - Byte
|
161
|
+
- Name
|
162
|
+
- Description
|
163
|
+
* - 1
|
164
|
+
- `vinyl_speed_adjust`
|
165
|
+
- ``0x80`` = `touch_release`, ``0x81`` = `touch`, ``0x82`` = `release`
|
166
|
+
* - 2
|
167
|
+
- `jog_display_mode`
|
168
|
+
- ``0x80`` = `auto`, ``0x81`` = `info`, ``0x82`` = `simple`, ``0x83`` = `artwork`
|
169
|
+
* - 3
|
170
|
+
- `pad_button_brightness`
|
171
|
+
- ``0x81`` = `one`, ``0x82`` = `two`, ..., ``0x84`` = `four`
|
172
|
+
* - 4
|
173
|
+
- `jog_lcd_brightness`
|
174
|
+
- ``0x81`` = `one`, ``0x82`` = `two`, ..., ``0x85`` = `five`
|
175
|
+
* - 5
|
176
|
+
- `waveform_divisions`
|
177
|
+
- ``0x80`` = `time_scale`, ``0x81`` = `phrase`
|
178
|
+
* - 6-10
|
179
|
+
-
|
180
|
+
- Always ``0``
|
181
|
+
* - 11
|
182
|
+
- `waveform`
|
183
|
+
- ``0x80`` = `waveform`, ``0x81`` = `phase_meter`
|
184
|
+
* - 12
|
185
|
+
-
|
186
|
+
- Usually ``b"\x81"``
|
187
|
+
* - 13
|
188
|
+
- `beat_jump_beat_value`
|
189
|
+
- See encodings section
|
190
|
+
* - 14-30
|
191
|
+
-
|
192
|
+
- Always ``0``
|
193
|
+
|
194
|
+
```
|
195
|
+
|
196
|
+
### DjmMySetting Body
|
197
|
+
|
198
|
+
The payload of the `DJMMYSETTING.DAT` file is 52 bytes long and contains the main
|
199
|
+
settings for Pioneer mixers (DJM).
|
200
|
+
|
201
|
+
```{eval-rst}
|
202
|
+
.. list-table:: `DJMMYSETTING.DAT` data body
|
203
|
+
:widths: 13 25 100
|
204
|
+
:header-rows: 1
|
205
|
+
|
206
|
+
* - Byte
|
207
|
+
- Name
|
208
|
+
- Description
|
209
|
+
* - 1-12
|
210
|
+
-
|
211
|
+
- Usually ``b"xV4\x12\x01\x00\x00\x00 \x00\x00\x00"``
|
212
|
+
* - 13
|
213
|
+
- `channel_fader_curve`
|
214
|
+
- ``0x80`` = `steep_top`, ``0x81`` = `linear`, ``0x82`` = `steep_bottom`
|
215
|
+
* - 14
|
216
|
+
- `cross_fader_curve`
|
217
|
+
- ``0x80`` = `constant`, ``0x81`` = `slow_cut`, ``0x82`` = `fast_cut`
|
218
|
+
* - 15
|
219
|
+
- `headphones_pre_eq`
|
220
|
+
- ``0x80`` = `post_eq`, ``0x81`` = `pre_eq`
|
221
|
+
* - 16
|
222
|
+
- `headphones_mono_split`
|
223
|
+
- ``0x80`` = `stereo`, ``0x81`` = `mono_split`
|
224
|
+
* - 17
|
225
|
+
- `beat_fx_quantize`
|
226
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
227
|
+
* - 18
|
228
|
+
- `mic_low_cut`
|
229
|
+
- ``0x80`` = `off`, ``0x81`` = `on`
|
230
|
+
* - 19
|
231
|
+
- `talk_over_mode`
|
232
|
+
- ``0x80`` = `advanced`, ``0x81`` = `normal`
|
233
|
+
* - 20
|
234
|
+
- `talk_over_level`
|
235
|
+
- See encodings section
|
236
|
+
* - 21
|
237
|
+
- `midi_channel`
|
238
|
+
- ``0x80`` = `one`, ``0x81`` = `two`, ..., ``0x8F`` = `sixteen`
|
239
|
+
* - 22
|
240
|
+
- `midi_button_type`
|
241
|
+
- ``0x80`` = `toggle`, ``0x81`` = `trigger`
|
242
|
+
* - 23
|
243
|
+
- `display_brightness`
|
244
|
+
- ``0x80`` = `white`, ``0x81`` = `one`, ..., ``0x85`` = `five`
|
245
|
+
* - 24
|
246
|
+
- `indicator_brightness`
|
247
|
+
- ``0x80`` = `one`, ``0x81`` = `two`, ``0x82`` = `three`
|
248
|
+
* - 25
|
249
|
+
- `channel_fader_curve_long`
|
250
|
+
- ``0x80`` = `exponential`, ``0x81`` = `smooth`, ``0x82`` = `linear`
|
251
|
+
* - 26-52
|
252
|
+
-
|
253
|
+
- Always ``0``
|
254
|
+
|
255
|
+
```
|
256
|
+
|
257
|
+
### DevSetting Body
|
258
|
+
|
259
|
+
The `DEVSETTING.DAT` file is not yet understood well. Its payload is 32 bytes long.
|
260
|
+
|
261
|
+
## Encodings
|
262
|
+
|
263
|
+
The auto-cue levels in the `MYSETTING.DAT` files are encoded as follows:
|
264
|
+
|
265
|
+
```{eval-rst}
|
266
|
+
.. list-table:: Auto-cue level encodings
|
267
|
+
:widths: 25 75
|
268
|
+
:header-rows: 1
|
269
|
+
|
270
|
+
* - Value
|
271
|
+
- Name
|
272
|
+
* - ``0x80``
|
273
|
+
- `minus_36db`
|
274
|
+
* - ``0x81``
|
275
|
+
- `minus_42db`
|
276
|
+
* - ``0x82``
|
277
|
+
- `minus_48db`
|
278
|
+
* - ``0x83``
|
279
|
+
- `minus_54db`
|
280
|
+
* - ``0x84``
|
281
|
+
- `minus_60db`
|
282
|
+
* - ``0x85``
|
283
|
+
- `minus_66db`
|
284
|
+
* - ``0x86``
|
285
|
+
- `minus_72db`
|
286
|
+
* - ``0x87``
|
287
|
+
- `minus_78db`
|
288
|
+
* - ``0x88``
|
289
|
+
- `memory`
|
290
|
+
|
291
|
+
```
|
292
|
+
|
293
|
+
The languages in the `MYSETTING.DAT` files are encoded as follows:
|
294
|
+
|
295
|
+
```{eval-rst}
|
296
|
+
.. list-table:: Language encodings
|
297
|
+
:widths: 25 75
|
298
|
+
:header-rows: 1
|
299
|
+
|
300
|
+
* - Value
|
301
|
+
- Name
|
302
|
+
* - ``0x80``
|
303
|
+
- `english`
|
304
|
+
* - ``0x81``
|
305
|
+
- `french`
|
306
|
+
* - ``0x82``
|
307
|
+
- `english`
|
308
|
+
* - ``0x83``
|
309
|
+
- `german`
|
310
|
+
* - ``0x84``
|
311
|
+
- `italian`
|
312
|
+
* - ``0x85``
|
313
|
+
- `dutch`
|
314
|
+
* - ``0x86``
|
315
|
+
- `spanish`
|
316
|
+
* - ``0x87``
|
317
|
+
- `russian`
|
318
|
+
* - ``0x88``
|
319
|
+
- `korean`
|
320
|
+
* - ``0x89``
|
321
|
+
- `chinese_simplified`
|
322
|
+
* - ``0x8A``
|
323
|
+
- `chinese_traditional`
|
324
|
+
* - ``0x8B``
|
325
|
+
- `japanese`
|
326
|
+
* - ``0x8C``
|
327
|
+
- `portuguese`
|
328
|
+
* - ``0x8D``
|
329
|
+
- `swedish`
|
330
|
+
* - ``0x8E``
|
331
|
+
- `czech`
|
332
|
+
* - ``0x8F``
|
333
|
+
- `hungarian`
|
334
|
+
* - ``0x90``
|
335
|
+
- `danish`
|
336
|
+
* - ``0x91``
|
337
|
+
- `greek`
|
338
|
+
* - ``0x92``
|
339
|
+
- `turkish`
|
340
|
+
```
|
341
|
+
|
342
|
+
The beat jump beat value in the `MYSETTING2.DAT` files are encoded as follows:
|
343
|
+
|
344
|
+
```{eval-rst}
|
345
|
+
.. list-table:: Beat jump beat value encodings
|
346
|
+
:widths: 25 75
|
347
|
+
:header-rows: 1
|
348
|
+
|
349
|
+
* - Value
|
350
|
+
- Name
|
351
|
+
* - ``0x80``
|
352
|
+
- `half`
|
353
|
+
* - ``0x81``
|
354
|
+
- `one`
|
355
|
+
* - ``0x82``
|
356
|
+
- `two`
|
357
|
+
* - ``0x83``
|
358
|
+
- `four`
|
359
|
+
* - ``0x84``
|
360
|
+
- `eight`
|
361
|
+
* - ``0x85``
|
362
|
+
- `sixteen`
|
363
|
+
* - ``0x86``
|
364
|
+
- `thirtytwo`
|
365
|
+
* - ``0x87``
|
366
|
+
- `sixtyfour`
|
367
|
+
```
|
368
|
+
|
369
|
+
The talk-over level in the `DJMMYSETTING.DAT` files are encoded as follows:
|
370
|
+
|
371
|
+
```{eval-rst}
|
372
|
+
.. list-table:: Talk-over level encodings
|
373
|
+
:widths: 25 75
|
374
|
+
:header-rows: 1
|
375
|
+
|
376
|
+
* - Value
|
377
|
+
- Name
|
378
|
+
* - ``0x80``
|
379
|
+
- `minus_24db`
|
380
|
+
* - ``0x81``
|
381
|
+
- `minus_18db`
|
382
|
+
* - ``0x82``
|
383
|
+
- `minus_12db`
|
384
|
+
* - ``0x83``
|
385
|
+
- `minus_6db`
|
386
|
+
|
387
|
+
```
|
388
|
+
|
389
|
+
## References
|
390
|
+
|
391
|
+
[^footnote-1]: Jan Holthuis. rekordcrate. Module setting
|
392
|
+
<https://holzhaus.github.io/rekordcrate/rekordcrate/setting/struct.Setting.html>
|