If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Is this the kind of MIDI message you would use to map to Traktor? When I try to map it, what I get is jog turn only in one direction, regardless in which direction I turn the encoder.

Any kind of help is deeply appreciated.

Best regards,
Natasha

The official way to send encoder messages is using control change numbers 96 & 97, they are named “data increment” and “data decrement” respectively. However even though this is the official way in the midi documentation not every DAW will actually use it, it’s also important to note that it can be used as part of rpn or nrpn commands though I don’t believe it’s required in order to use it. So your typical midi message and will look like ‘b0 60 ff’ to increase controller number 127 and ‘b0 61 ff’ to decrease controller number 127, based on that you can discern that the third byte is the controller number you want to edit whereas for normal control change messages it’s the second byte.

So try using this to increment

Code:

usbMIDI.sendControlChange(1, 96, encoderNumber);

And this to decrement

Code:

usbMIDI.sendControlChange(1, 97, encoderNumber);

I can confirm that this works in FL Studio but you will have to test your DAW, some use it and some don’t.

So to send a full NRPN message the structure looks like this for both increment and decrement

Code:

uint16_t controlNumber = 12 //0-16382 16383 is used as null to end NRPNs
uint8_t channelNumber = 1 //1-16
uint8_t incrementAmount = 1 //0-127 typically 1 and sometimes ignored in DAWs
usbMIDI.beginNrpn(controlNumber, channelNumber);
usbMIDI.sendNrpnIncrement(incrementAmount, channelNumber); //Any amount of changes can be sent before ending a NRPN
usbMIDI.endNrpn(channelNumber); //NRPNs also don’t have to be ended, but it’s best practice to end after your values are sent so a stray message doesn’t interfere with anything down the line