[Done] Issue With New Midi Mapping Functionality - [Toggle] Vs. [Set]

This unfortunately is a bit hard to explain. I already tried that here.

Theres no real standard for “which messages MIDI controller buttons do send”, so there are plenty of combination possible.

Pressing a button on a MIDI controller which uses CCs. Then the following might happen:

A)
Button Pressed: Controller with Value 127 (or something above 64) is sent
Button Released: Controller with Value 0 (or something below 64) is sent
Button Pressed again: same as before
Button Released again: same as before

B)
Button Pressed: Controller with Value 127 (or something above 64)
Button Released: nothing
Button Pressed again: Controller with Value 0
Button Released again: nothing

C)
Button Pressed: Controller with Value 127 (or something above 64)
Button Release: nothing
Button Pressed again: Controller with Value 127 is sent again
Button Release again: nothing

About the same thing happens with buttons which send MIDI notes instead of controllers. There the CC value simply is the velocity or Note Off.

There are other “strange” ways, like sending different CC numbers on button presses/releases, but lets ignore those. Lets also ignore “encoders” and stuff for now.


Now if you now want to set something ON or OFF in Renoise, you have to tell Renoise how it should deal with the incoming messages.

Renoise does this by offering two different mappings for most things you can turn on or off:

Let me choose “Edit Mode” as example:

Edit Mode [Toggle] -> will ignore Controller Values of 0, so you can use controller A) or C)
Edit Mode [Set] -> will not ignore Controller 0 Values, but interpret them as “state”: CC value > 64 ON, CC value < 64 OFF, so you can use controller B) or encoders or faders


NoMad: Your controller seems to send B), so you have to use the [Set] variants in Renoise. We do use by default the [Trigger] variants, that’s why it does not work “out of the box” for you.

To do so, open the list of mappings, click on “Available & used Mappings” in the mapping dialog. Then, if you for example select the record button in Renoise, you will find a [Set] variant below.


Of course it would be great to magically let Renoise select the “right” thing here, trying to find out which kind of controller you have. Unfortunately this is not easy to do, so we can only “guess”. One idea might be to:

  • If Renoise quickly gets a message from the same CC number but with another value (you’ve pressed, released a button or moved a fader, moved an encoder) then we automatically choose [Set] variants.
  • Else we do use the [Trigger] variants

This needs some kind of timeout though, to allow you pressing and releasing the buttons within lets say half a second.

The mappings in the GUI would then not just show the [Toggle] states, but both, just whats mapped currently. [Set]s or [Toggles]s

Could this work, or have I missed something. Or this there an easier way?
documentation