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

MIDI learn should support a single knob for opposing functions (e.g. track select) #7557

Open
mixxxbot opened this issue Aug 22, 2022 · 10 comments
Labels

Comments

@mixxxbot
Copy link
Collaborator

Reported by: daschuer
Date: 2014-08-19T16:56:18Z
Status: New
Importance: Wishlist
Launchpad Issue: lp1358844


Dear devs,
I'm wondering if this feature can be added: when learning MIDI from a controller, I would like to scroll up/down the tracks with one potentiometer/encoder. Unfortunately the MIDI learn feature only tracks the CC and not the value increment/decrement, thus I cannot use one pot/encoder for scrolling up/down, but I have to assign two pots or two push buttons (which are too slow to scroll through the list).

If this cannot be done by editing some script/mapping file, I would try add the fix from the source, but I need a hint where to look for.

Best regards

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2014-08-19T16:57:27Z


Created from: https://answers.launchpad.net/mixxx/+question/253303

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2014-08-19T17:07:10Z


Is it an endless knob, you trying to map?
What is the console output if you start Mixxx with
mixxx --controllerDebug
and turning the knob in both directions?

The mapping would look like that using a RMX2 effect knob:

<control>
	<group>[Playlist]</group>
        <key>SelectPrevTrack</key>
        <status>0xB0</status>
        <midino>0x54</midino>
</control>
<control>
	<group>[Playlist]</group>
        <key>SelectNextTrack</key>
        <status>0xB0</status>
        <midino>0x55</midino>
</control>

@mixxxbot
Copy link
Collaborator Author

Commented by: leodardo
Date: 2014-08-20T13:54:19Z


Thanks for getting back quickly.
My controller is a M-Audio AxiomPro49, and I'm prototyping a custom microcontroller based MIDI controller where I will add an endless encoder.

By opening mix in debug mode I realized my (physically) endless knob was (virtually) actually not endless, as the controller mapped it to a virtual CC knob with vals ranging 0x00-0x7F, so the scrolling would in any case come to an end. Silly me!

The solution is to assign the knob a different type from the MIDI controller itself: Edit -> Control -> Type: SingleStep-/+

Now the knob outputs two different commands whether it is incrementing or decrementing:
Debug [Controller]: "MIDI status 0xB0 (ch 1, opcode 0xB), ctrl 0x61, val 0x00" 
Debug [Controller]: "MIDI status 0xB0 (ch 1, opcode 0xB), ctrl 0x60, val 0x00"

With the two different CC for up and down. In Mixxx I just done again a MIDI learn and it works like a charm!
So everything's ok in Mixxx. You just have to make your knob work the right way.
Regards

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2014-08-20T15:22:59Z


Nice to read this bug is fixed. Can you edit the title of this bug, that it helps others and set it to invalid?
Thank you.

@mixxxbot
Copy link
Collaborator Author

Commented by: Pegasus-RPG
Date: 2014-08-20T15:49:44Z


Leodardo: Can you also test where the knob uses the same control # for both directions but changes only the value? e.g. 0x3F for backwards and 0x41 for forwards. This is how most endless knobs work and I want to make sure it works for you with learning as well.

@mixxxbot
Copy link
Collaborator Author

Commented by: Pegasus-RPG
Date: 2014-08-20T15:57:22Z


...or is that what you did originally? If so, I would consider this still an open bug since the learning should be able to handle that case.

@mixxxbot
Copy link
Collaborator Author

Commented by: leodardo
Date: 2014-08-20T16:16:41Z


Just to be clear, as you ask I'm sending two MIDI commands, same CC,
different value:
Debug [Controller]: "MIDI status 0xB0 (ch 1, opcode 0xB), ctrl 0x19, val
0x7E"
Debug [Controller]: "MIDI status 0xB0 (ch 1, opcode 0xB), ctrl 0x19, val
0x7F"

With the first I tell mixxx to scroll down, with the latter to scroll up.
The learning learns the first as scroll down, then when I attempt the
learning for the scroll up, it deletes the first one, I can see it from the
XML. I guess the logic is to delete older learnings for the same <midino>
or CC.

I think the logic should be changed for controls that do not require a
value: unlike faders, a "scroll down" or "switch view" need only sense a
CC+value couple. However I think there are cases where you only need to
watch the CC and cases where you exactly want to map a command to CC+value.
But that's my 50 cents.
Regards

2014-08-20 17:57 GMT+02:00 Sean M. Pappalardo <email address hidden>:

...or is that what you did originally? If so, I would consider this
still an open bug since the learning should be able to handle that case.

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1358844

Title:
Track scrolling with endless knob: controller setup

Status in Mixxx:
Invalid

Bug description:
Dear devs,
I'm wondering if this feature can be added: when learning MIDI from a
controller, I would like to scroll up/down the tracks with one
potentiometer/encoder. Unfortunately the MIDI learn feature only tracks the
CC and not the value increment/decrement, thus I cannot use one pot/encoder
for scrolling up/down, but I have to assign two pots or two push buttons
(which are too slow to scroll through the list).

If this cannot be done by editing some script/mapping file, I would
try add the fix from the source, but I need a hint where to look for.

Best regards

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1358844/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: Pegasus-RPG
Date: 2014-08-20T21:47:39Z


We should make the MIDI learn support the case where a single knob can be used for two opposing functions if it gives different values for each. Marking this as new until me or another dev has a chance to test to see if this already works in latest master.

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
@mxmilkiib
Copy link
Contributor

mxmilkiib commented Nov 22, 2023

Am I right in thinking that one can use a specific value of the 3rd byte value in the logic of the controller .js, but it's not possible to bind against just one set value in the at the layer of MIDI mapping within Mixxx?

It would be very handy to optionally bind against the CC value in the main app, not just the CC ctrl number, in my instance for the above requirement; binding a rotary encoder that sends two values on the same CC to two actions.

(AFAIU, it's not possible to set the config of the Akai MPD218 rotary encoders to use two different CC codes whether the turn is going left or right.)

@mxmilkiib
Copy link
Contributor

See #12337 / #12376, and #12387 (via #12373).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants