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