scripted layered mapping system

Bug #1507093 reported by Be
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Undecided
Be

Bug 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 (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.

Be (be.ing)
Changed in mixxx:
assignee: nobody → Be (be.ing)
summary: - scriptable layered mapping system
+ scripted layered mapping system
Be (be.ing)
description: updated
Be (be.ing)
Changed in mixxx:
status: New → In Progress
Revision history for this message
Be (be.ing) wrote :
Revision history for this message
Be (be.ing) wrote :
Changed in mixxx:
status: In Progress → Fix Committed
Be (be.ing)
Changed in mixxx:
milestone: none → 2.1.0
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/8262

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Related blueprints

Remote bug watches

Bug watches keep track of this bug in other bug trackers.