pyrekordbox 0.3.2__py3-none-any.whl → 0.4.0__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.
Files changed (83) hide show
  1. pyrekordbox/__init__.py +8 -8
  2. pyrekordbox/__main__.py +3 -2
  3. pyrekordbox/_version.py +2 -2
  4. pyrekordbox/anlz/__init__.py +3 -2
  5. pyrekordbox/anlz/file.py +4 -2
  6. pyrekordbox/anlz/tags.py +3 -1
  7. pyrekordbox/config.py +79 -23
  8. pyrekordbox/db6/__init__.py +2 -2
  9. pyrekordbox/db6/aux_files.py +3 -2
  10. pyrekordbox/db6/database.py +101 -111
  11. pyrekordbox/db6/registry.py +1 -0
  12. pyrekordbox/db6/smartlist.py +7 -6
  13. pyrekordbox/db6/tables.py +44 -16
  14. pyrekordbox/logger.py +0 -1
  15. pyrekordbox/mysettings/__init__.py +5 -4
  16. pyrekordbox/mysettings/file.py +3 -1
  17. pyrekordbox/rbxml.py +5 -3
  18. pyrekordbox/utils.py +4 -3
  19. {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.0.dist-info}/METADATA +21 -41
  20. pyrekordbox-0.4.0.dist-info/RECORD +25 -0
  21. {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.0.dist-info}/WHEEL +1 -1
  22. {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.0.dist-info}/top_level.txt +0 -2
  23. docs/Makefile +0 -20
  24. docs/make.bat +0 -35
  25. docs/source/_static/images/anlz_beat.svg +0 -53
  26. docs/source/_static/images/anlz_file.svg +0 -204
  27. docs/source/_static/images/anlz_pco2.svg +0 -138
  28. docs/source/_static/images/anlz_pcob.svg +0 -148
  29. docs/source/_static/images/anlz_pcp2.svg +0 -398
  30. docs/source/_static/images/anlz_pcpt.svg +0 -263
  31. docs/source/_static/images/anlz_ppth.svg +0 -123
  32. docs/source/_static/images/anlz_pqt2.svg +0 -324
  33. docs/source/_static/images/anlz_pqt2_2.svg +0 -253
  34. docs/source/_static/images/anlz_pqtz.svg +0 -140
  35. docs/source/_static/images/anlz_pssi.svg +0 -192
  36. docs/source/_static/images/anlz_pssi_entry.svg +0 -191
  37. docs/source/_static/images/anlz_pvbr.svg +0 -125
  38. docs/source/_static/images/anlz_pwav.svg +0 -130
  39. docs/source/_static/images/anlz_pwv3.svg +0 -139
  40. docs/source/_static/images/anlz_pwv4.svg +0 -139
  41. docs/source/_static/images/anlz_pwv5.svg +0 -139
  42. docs/source/_static/images/anlz_pwv5_entry.svg +0 -100
  43. docs/source/_static/images/anlz_pwv6.svg +0 -130
  44. docs/source/_static/images/anlz_pwv7.svg +0 -139
  45. docs/source/_static/images/anlz_pwvc.svg +0 -125
  46. docs/source/_static/images/anlz_tag.svg +0 -110
  47. docs/source/_static/images/x64dbg_rb_key.png +0 -0
  48. docs/source/_static/logos/dark/logo_primary.svg +0 -75
  49. docs/source/_static/logos/light/logo_primary.svg +0 -75
  50. docs/source/_static/logos/mid/logo_primary.svg +0 -75
  51. docs/source/_templates/apidoc/module.rst_t +0 -8
  52. docs/source/_templates/apidoc/package.rst_t +0 -57
  53. docs/source/_templates/apidoc/toc.rst_t +0 -7
  54. docs/source/_templates/autosummary/class.rst +0 -32
  55. docs/source/_templates/autosummary/module.rst +0 -55
  56. docs/source/api.md +0 -18
  57. docs/source/conf.py +0 -178
  58. docs/source/development/changes.md +0 -3
  59. docs/source/development/contributing.md +0 -3
  60. docs/source/formats/anlz.md +0 -634
  61. docs/source/formats/db6.md +0 -1233
  62. docs/source/formats/mysetting.md +0 -392
  63. docs/source/formats/xml.md +0 -376
  64. docs/source/index.md +0 -103
  65. docs/source/installation.md +0 -271
  66. docs/source/key.md +0 -103
  67. docs/source/quickstart.md +0 -189
  68. docs/source/requirements.txt +0 -7
  69. docs/source/tutorial/anlz.md +0 -7
  70. docs/source/tutorial/configuration.md +0 -66
  71. docs/source/tutorial/db6.md +0 -178
  72. docs/source/tutorial/index.md +0 -20
  73. docs/source/tutorial/mysetting.md +0 -124
  74. docs/source/tutorial/xml.md +0 -140
  75. pyrekordbox/xml.py +0 -8
  76. pyrekordbox-0.3.2.dist-info/RECORD +0 -84
  77. tests/__init__.py +0 -3
  78. tests/test_anlz.py +0 -206
  79. tests/test_config.py +0 -175
  80. tests/test_db6.py +0 -1193
  81. tests/test_mysetting.py +0 -203
  82. tests/test_xml.py +0 -629
  83. {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.0.dist-info}/LICENSE +0 -0
@@ -1,392 +0,0 @@
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>