Make the Controller subsystem protocol-agnostic (support non-MIDI controllers)
Now that the MIDI controller subsystem is backend-agnostic (it uses multiple MIDI back ends where applicable,) we need to make it protocol-agnostic so we can add direct support for non-MIDI controllers such as ones that speak USB-HID, OSC, LiveWire, etc.
Blueprint information
- Status:
- Complete
- Approver:
- Mixxx Development Team
- Priority:
- Low
- Drafter:
- Sean M. Pappalardo
- Direction:
- Approved
- Assignee:
- Sean M. Pappalardo
- Definition:
- Approved
- Series goal:
- Accepted for 1.11
- Implementation:
- Implemented
- Milestone target:
- 1.11.0
- Started by
- Sean M. Pappalardo
- Completed by
- RJ Skerry-Ryan
Whiteboard
The new Controller subsystem is now in place and tests good with HID and MIDI controllers.
The following is now mostly historical, but keeping it for my reference:
I plan to add one more level of abstraction and rename Device to Controller. So we can have MidiControllers (of which Hss1394Controllers and Numark7Controllers would be sub-classes as they are now,) HidControllers, OscControllers, etc. with appropriate Enumerators managing each group. Non-MIDI controllers will communicate directly with scripts since each controller will have unique communication requirements. Mixxx's job will just be to deliver data unchanged between a controller its associated script.
Work Items
Dependency tree
* Blueprints in grey have been implemented.