Endless Rotary Encoder doesn't Read Values


I am trying to use an Endless Rotary Encoder which is sending CC 0-127 to cubase.

I have seen similar products work fine, when the Encoder is assigned to move a parameter it will move that parameter from where it is.

On my product, when you move the Encoder the value on the parameter will jump to the encoders value.

How come it works fine for some products and not with others…

It is not a Flag Receive, Transmit, Relative or Pick Up issue. The product similar to mine works just fine with Receive Flag only.
And if I have to use Pick Up as a solution, then having Endless Encoders Defeats Its Purpose.


Most probably, this is Pick Up issue. Could you compare the Generic Remote settings of the old device, with the new device, please?

Also there are two ways, how do the endless encoders work. They can either send Inc/Dec values or real values. Do your HW devices behave the same way?

Hi, thank you for your reply Martin.

So the products I am comparing are Presonus ATOM that I own, with AKAI MPD 218 and Behringer X-Touch Mini both of which I do not own, but have seen people on youtube using them with cubase, the akai works as expected right of the box, and the beringer requires some changing in the software.

All 3 controllers send real values, CC 0-127, as I can see from the manual I own and the on the videos of the other two that expose the Editor Software.

The way you make it work is through enabling a flag, either in GR or QC, to Receive and Transmit so that the controller reads back the value of the parameter that it is assigned to control and works from there. That’s how Behringers X-touch updates the LEDs on knobs and moves automated faders.

Presonus ATOM Pad works fine in Studio One (a Presonus-made DAW) but not in cubase, it behaves like a limited excursion knob that needs Pick Up Mode to Use. (Not what we get endless encoders for…)

I believe the problem here is not Cubase, but rather the ATOM itself that does not read midi messages of the parameter value update that are sent back.



Thank you for the detailed description.

I’m sorry, I don’t own and I don’t know Presonus Atom. But, just a short look to the Owners manual… I wouldn’t expect, this device receives other MIDI Messages then sends. Some devices work like this (for example Mackie Control does send one MIDI data for the V-Pots and expect other MIDI data to show the value on the ring around the V-Pots). But as I said, I wouldn’t expect this from the Persons Atom.

As far as I can see, knob 1 sends MIDI CC14. I would try to Add a MIDI Track to Cubase and set it’s input and output from- and to Atom. Then I would try to record to the MIDI track while moving the 1st knob completely to the left until you reach value 0. Then stop recording. In the Key Editor’s Controller lane, dra a node with value 127. This value should be sent to Atom. Hit recording again and find out the 1st value, which will be recorded.

If it’s 0 or 1, Atom didn’t receive the MIDI CC from the track, so I would expect something is wrong with Atom. If the value is 127 or 126, I would expect Atom receives the value and changes its settings. Then some settings for the Generic Remote or Quick Control is wrong on your side.

Martin, why wouldn’t you expect right away just from looking at the manual?

Ok, so, part 2.

I found out that ATOM does in fact receives MIDI messages, but those are to switch it’s mode of operations.

If I use Matlab to send a MIDI message ‘NofeOff’ Channel 16 Note 0 Vel 0, the atom switches to a diferent mode of operation, the one it uses when it fully integrates with studio one.

so, reading the data from Midi Ox, I found out that the knobs behave differently, instead of sending CC 0-127 and stop, they send continuous CC 1-63 Clockwise and 65-127 counter clockwise. And they are speed-sensitive, a higher CC value will be sent the faster you move the knob.

So, in Cubase with relative mode it works fine for clockwise turns, it picks up the value from where it was left, no need to read.
But in the counter clockwise direction the value jumps in 3 steps very quickly to the lowest value possible. (like if I would control the frequency of a lowest band of an eq, when moving CW the frequency would gradually rise, and if I would move counter clockwise the frequency would decrease in 3 steps, 20k - 2k - 20 hz)

So, now, the only workaround I find is to use Pude Data to receive MIDI from atom, filter it, and send it back to cubase, and hopefully receive the data back and make the pad lights respond to the parameters, that would be cool.

but I am still not sure what kind of CC data cubase is expecting to receive to work fine when decreasing the value counter clockwise.
this way I could take the readings from atom when turning the knob counter clockwise CC 65-127 and transform it to maybe -1 through -63…

still have to discover, your help would be appreciated!

(yeah…it’s a big shame and disappointment that this controller does not have the knobs to work like I’ve expected… I was about to create the coolest generic remote controller ever from it: use a knob to navigate across the mixer, press a pad to use eq and use knobs to access the parameters, another pad would be the compressor, tube sat… c’mon man, atom would be so much better than any other control because of its ability to change channels for pads and knobs on the fly using advanced setup, meaning that I would be able to use it as generic remote control and very quickly, without exiting cubase or change settings in daw, use it to controls vst, quick controls and so on…)


Sorry, before we start with the 2nd Mode, does it mean Atom doesn’t receive the data in the 1st Mode? Or what is the problem with the 1st Mode, please?

This is actually the increment/decrement mode. This is exactly the way, how do the Mackie Control V-Pots (I mentioned) work. Exactly the same. You can increase or decrease the value and you can set up the step by the speed of the rotation.

Oh, that’s pity. I was hoping the Generic Remote Relative Mode could work exactly this way, as Mackie Control and ATOM work.

Myself I’m MAX/MSP user, so I would do the same in MAX. :slight_smile:

You can easily find it out by a bit of experiment from PData.

My expectation is:
65 = 1 step left/down
66 = 2 steps left/down
67 = 3 steps left/down
0 = 65 steps left/down

I think I have already even written the translator for this in MAX.

var vC = valueFromCubase;
var vA = valueFromAtom;
var diff = vA;
if (vA > 65) vA - 65;

sendOut(vA + diff);

Or am I wrong?


thank you for your support Martin, much appreciated!

So in the 1st mode ATOM does receives MIDI messages but doesn’t do anything with them, the only message that does something (as far as I know) is the message which will trigger the ‘Full integration mode’ or something for Studio One and Ableton.

And in the full integration mode we can send midi to change the colors of Pads. but the biggest difference is that the rotary knobs send increse and decrease data.

So, this might just be a Driver issue or something from the Presonus side (I’ve reported to them already),
because (in normal mode, not the special integration mode) if I would send a CC midi message to the ATOM with the number between 0-127 to the channel of the knob, it will not set the value of the knob to that value, instead, the value of the knob will be always:
a) 0 when you first turn on the device
b) the number at which you left the knob after moving it

So I hope they’ll patch it with an update, but in the meantime I’ve found this interesting just to mess around with it and learn something.

I already have a big picture of what I would like to achieve in pure data in regard of making a cool control surface out of this pad, but it’ll take a lot of time and I still have to learn pure data itself bc I only had a few optional classes of it at school and never finished it.

I didn’t understood quite well your Max code but my solution to it is like that:

read the value from cubase 0-127
convert the rotary input 1-63 to +1, +2, +3 etc. and 65-127 to -1, -2, -3 etc
add the number to the value that’s been read and send it back to the cubase.
meanwhile, I could take the value that’s been read and send it to atom as intensity value for the RBG led on a pad to get visual feedback.

so basically its like to make an Special Integration mode for cubase