Activity log for bug #1507093

Date Who What changed Old value New value Message
2015-10-17 06:37:42 Be bug added bug
2015-10-17 06:37:49 Be mixxx: assignee Be (be.ing)
2015-10-17 06:40:42 Be summary scriptable layered mapping system scripted layered mapping system
2015-10-17 07:06:19 Be description Most controllers are designed such that one physical control should be mapped to multiple aspects of software depending on the state of the controller. What aspect of software a physical control is presently manipulating is typically changed by pressing buttons or button combinations on the controller. Pressing these buttons typically changes the mapping of groups of physical controls together. To facilitate a declarative, easy to learn, and elegant way of creating complex mappings for such controllers, implement a layered mapping system. This could be done with a JavaScript library. This system should be designed with the eventual goal of designing an easy-to-use GUI to autogenerate code that could easily be edited manually. Examples use cases include the 4x2 pad grids found on most all-in-one controllers with a thin row of buttons selecting the active mode of the pads, various controls with deck toggle buttons, encoders surrounded by LED rings (like on the MIDI Fighter Twister, Electrix Tweaker, or APC 40 Mk2), and a wide variety of controls that change while a shift button is held. This layered mapping system would have signals (MIDI, HID, and in the future OSC) from groups of physical controls handled by a layer container object. Within the layer container object, various potentially active layers would be defined. Each layer would specify how to handle inputs and outputs for the set of signals handled by the layer container object. Scripts would specify when to activate a different layer. Layers could have optional initialization and shutdown functions that could, for example, send signals to encoders to toggle between absolute and relative modes. The container object would keep track of the previously active layer, so scripts could simply deactivate layers without having to determine the appropriate layer to reactivate. Most controllers are designed such that one physical control should be mapped to multiple aspects of software depending on the state of the controller. What aspect of software a physical control is presently manipulating is typically changed by pressing buttons or button combinations on the controller. Pressing these buttons typically changes the mapping of groups of physical controls together. To facilitate a declarative, easy to learn, and elegant way of creating complex mappings for such controllers, implement a layered mapping system. This could be done with a JavaScript library. This system should be designed with the eventual goal of designing an easy-to-use GUI to autogenerate code that could easily be edited manually. Examples use cases include the 4x2 pad grids found on most all-in-one controllers with a thin row of buttons selecting the active mode of the pads, various controls with deck toggle buttons, encoders surrounded by LED rings (MIDI Fighter Twister, Electrix Tweaker, or Akai APC 40 Mk2), and a wide variety of controls that change while a shift button is held. This layered mapping system would have signals (MIDI, HID, and in the future OSC) from groups of physical controls handled by a layer container object. Within the layer container object, various potentially active layers would be defined. Each layer would specify how to handle inputs and outputs for the set of signals handled by the layer container object. Scripts would specify when to activate a different layer. Layers could have optional initialization and shutdown functions that could, for example, send signals to encoders to toggle between absolute and relative modes. The container object would keep track of the previously active layer, so scripts could simply deactivate layers without having to determine the appropriate layer to reactivate.
2016-09-06 20:54:18 Be mixxx: status New In Progress
2017-02-01 22:20:33 Be mixxx: status In Progress Fix Committed
2017-11-12 15:37:53 Be mixxx: milestone 2.1.0
2018-04-15 21:00:13 Daniel Schürmann mixxx: status Fix Committed Fix Released
2022-10-08 20:22:52 Swiftb0y bug watch added https://github.com/mixxxdj/mixxx/issues/8262
2022-10-08 20:22:53 Swiftb0y lock status Unlocked Comment-only