Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

catch-all midi mapping #8055

Open
mixxxbot opened this issue Aug 22, 2022 · 5 comments
Open

catch-all midi mapping #8055

mixxxbot opened this issue Aug 22, 2022 · 5 comments

Comments

@mixxxbot
Copy link
Collaborator

Reported by: sb-c
Date: 2015-05-22T06:49:08Z
Status: Confirmed
Importance: Wishlist
Launchpad Issue: lp1457758
Tags: controllers, midi


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2015-05-22T17:03:07Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: sb-c
Date: 2015-05-23T14:40:08Z


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

@mixxxbot
Copy link
Collaborator Author

Commented by: Pegasus-RPG
Date: 2015-12-31T19:28:47Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2016-01-01T02:18:38Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2020-05-10T14:23:26Z


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.

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant