catch-all midi mapping

Bug #1457758 reported by sb
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Confirmed
Wishlist
Unassigned

Bug Description

For script-heavy mappings, it would be nice if all messages can be diverted to the script. This way, listing all controls in the XML config would not be necessary anymore.

It could be a defined method on the script object, say controllerMessage(), like there is with statusResponse() for SYSEX. Another option would be to allow wildcards in the config:

 <control>
  <key>somecontroller.receive</key>
  <status>*</status>
  <midino>*</midino>
  <options>
    <script-binding/>
  </options>
</control>

Personally, I'd prefer just having the script be called directly, without having to add a catch-all control. But in the end the difference would be small. It's not an important feature. Listing all the controls in the XML is inconvenient but no big issue.

Revision history for this message
Be (be.ing) wrote :

It could also be useful to specify a range for midino. For example, many controllers have a series of 4 or 8 buttons in a row that could be mapped to one script function with one <control> XML element.

Revision history for this message
sb (sb-c) wrote : Re: [Bug 1457758] Re: catch-all midi mapping

> It could also be useful to specify a range for midino. For example, many
> controllers have a series of 4 or 8 buttons in a row that could be
> mapped to one script function with one <control> XML element.

Maybe that would be useful in some scenarios. In my case it would not
be necessary because I'm using a dispatcher function anyway. I can
already do this with SYSEX messages, no?

SomeController.statusResponse = function(message) { /* handle SYSEX */ }

now I would like to generalize this to

SomeController.controllerMessage = function(message) { /* handle message */ }

If Mixxx could call this method (when it's defined) it would be the
easiest option. It could be made explicit by having a stanza that
diverts all messages like the example in my bug description, but that
would actually complicate matters as far as I'm concerned.

Be (be.ing)
tags: added: mapping
RJ Skerry-Ryan (rryan)
Changed in mixxx:
importance: Undecided → Wishlist
status: New → Confirmed
Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

Implementing this would basically be the same as what HID does now. We could make the MIDIController class default to this behavior if there are no <control> elements in the XML.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

We do this already with sysex messages and we found out that this is a mayor CPU burner.
Mixxx is not able to consume all Midi messages from a 3x speed midi device by a script callback using a recent laptop.
I think (We need to verify it) Mixxx is able to consume normal XML mapped messages with 3x speed.
We need a concept which allows it and how to fix the current overflow issue with sysex messages.
If this still involves the XML file, it is an acceptable annoyance for me, since we should take reliability over continence.
Of cause it would be best to solve both issues at once.

tags: removed: mapping
tags: added: controllers
removed: wishlist
Revision history for this message
Be (be.ing) wrote :

We will be introducing a new system where all incoming MIDI messages go to JS. This will be a lot of work because we'll be rewriting the entire controller system, so it may be a while before this is implemented.

Changed in mixxx:
status: Confirmed → Won't Fix
status: Won't Fix → Confirmed
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/8055

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

Remote bug watches

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