|
10 | 10 | * [Ability for controller to share data at |
11 | 11 | runtime](https://github.com/mixxxdj/mixxx/pull/12199) |
12 | 12 |
|
13 | | -> TL;DR: Allow controllers mappings to set and retrieve variables of different data types in order to exchange them between the controller code and the engine. Think: ControlObjects of |
14 | | -> arbitrary type that controllers can declare. |
| 13 | +> TL;DR: Allow controllers mappings to set and retrieve variables of different |
| 14 | +> data types in order to exchange them between the controller code and the |
| 15 | +> engine. Think: ControlObjects of arbitrary type that controllers can declare. |
15 | 16 |
|
16 | 17 | ## Why |
17 | 18 |
|
18 | | -There are multiple scenarios where controller mapping scripts need to share and access data outside the container of their own controller script engine. This includes situations |
19 | | -where some controllers expose more than one USB interface that need to communicate |
20 | | -with each other, or when a DJ connects multiple instances of the same hardware |
21 | | -to Mixxx. |
| 19 | +There are multiple scenarios where controller mapping scripts need to share and |
| 20 | +access data outside the container of their own controller script engine. This |
| 21 | +includes situations where some controllers expose more than one USB interface |
| 22 | +that need to communicate with each other, or when a DJ connects multiple |
| 23 | +instances of the same hardware to Mixxx. |
22 | 24 |
|
23 | 25 | ### Pitfalls of the current solution |
24 | 26 |
|
@@ -86,15 +88,20 @@ a precommit check. |
86 | 88 |
|
87 | 89 | #### Entity |
88 | 90 |
|
89 | | -`Entity` is a logical value defined by the controller mapping definition or during the initialization of the mapping script (e.g. for readout of a serial number using MIDI commands). It |
90 | | -can be like a Mixxx-style group ("`[Channel1]`") but it can be any arbitrary |
91 | | -string. Many controllers will want to define something like `deck1` to refer to |
92 | | -a device that can itself be assigned to multiple mixxx channels. |
93 | | -For the case of multiple devices of the same type, it is intended to implement functionality to gather a unique device identifier in a later step. These will than be used as Entity to distinguish the identical devices. |
94 | | -These identifiers include, but are not limited to: |
95 | | - |
96 | | -- USB device serial number (only works for USB and not each manufacturer use unique serial numbers) |
97 | | -- Operating system provided device identifiers like Container-ID on Windows or Location-ID on macOS |
| 91 | +`Entity` is a logical value defined by the controller mapping definition or |
| 92 | +during the initialization of the mapping script (e.g. for readout of a serial |
| 93 | +number using MIDI commands). It can be like a Mixxx-style group ("`[Channel1]`") |
| 94 | +but it can be any arbitrary string. Many controllers will want to define |
| 95 | +something like `deck1` to refer to a device that can itself be assigned to |
| 96 | +multiple mixxx channels. For the case of multiple devices of the same type, it |
| 97 | +is intended to implement functionality to gather a unique device identifier in a |
| 98 | +later step. These will than be used as Entity to distinguish the identical |
| 99 | +devices. These identifiers include, but are not limited to: |
| 100 | + |
| 101 | +* USB device serial number (only works for USB and not each manufacturer use |
| 102 | + unique serial numbers) |
| 103 | +* Operating system provided device identifiers like Container-ID on Windows or |
| 104 | + Location-ID on macOS |
98 | 105 |
|
99 | 106 | The controller mapping decides how these entities behave and Mixxx does no |
100 | 107 | enforcement of them. To reiterate: even if an "entity" "looks like" a Mixxx |
|
0 commit comments