Can I make one encoder encode faster?

@u-man At this point it might be easier if you just told me what controller you’re using.

This doesn’t make sense as there are no such thing. If your controller sends 14-bit values (0-16383) then it is sending absolute values. If your controller is sending relative values, it would send one value when turning the encoder clockwise, and another value when turning the encoder counter-clockwise.

1 Like

That’s exactly what he does…. In 14-Bit. Your description describes how that relative value behaves in a absolute CC value range.

There is no such thing as a “relative value in an absolute CC value range”. You are probably using the wrong terminology.

Out of curiosity, how is your controller sending this 14-bit value? As pitchbend, NRPN or something else?

1 Like

There’s an interesting hybrid case. For example many Native Instruments controllers (in the Maschine, Komplete Kontrol and Traktor series) feature encoders which can operate in “absolute” CC mode.

i.e.

  • you turn right and the MIDI CC value goes up until it hits 127, and then you can keep turning and it just stops sending values.
  • you turn left and the MIDI CC values go down until it hits 0 and then you can keep turning and it just stops sending values.

And in that mode, those controllers will set their associated internal values to whatever comes in.

So for example,

  • MIDI Remote sends a CC value of 73 to the hardware controller
    • turning the hardware encoder right will send a CC value of 74, etc.
    • turning the hardware encoder left will send a CC value of 72, etc.

So in a way, the encoder behaves much like a motorized fader, also leading to the same often discussed problems with using the non-scripted MIDI Remote in bi-directional mode.


Side note: The relative mode with those NI controllers, does not seem to work properly with the MIDI Remote in bi-directional mode at all. Currently I think this use case is a problem on the NI side.

For me, I set ‘slope’ and ‘shape’ encoder, with * setTypeRelativeSignedBit <---- this option and it is working ok. One by one. (e.g. 6dB/, 12/dB, 24dB and so on) sorry if I made myself not clear enough. But try that option under midi remote mapping :slight_smile:

I understand what you’re saying. (I also own a NI KK keyboard.)
I think in this discussion we were talking about the hardware. From that viewpoint, encoders doesn’t have a start or an end. The data it’s sending, controlled by firmware, can be anything, like MIDI Continuous Controller messages for example.
When rotary encoders started to pop up on mix consoles and later MIDI controllers and synths, they were all sending absolute values. Their primary benefit came from their seamless ability to control multiple parameters. I don’t know who started with relative CC data, but it’s still not standardized anywhere and different manufacturers use different methods.
Perhaps it’s just semantics but the way I see it, an encoder is always endless but can send either relative MIDI CC values or absolute MIDI data.

1 Like

You need to understand how the encoders are really working.A potentiometer is analog and always using 7-bit values, has a fixed range and can’t be bi-directional. It can never have/use more then 127 unique steps. If you move in steps, you move in a absolute way from a start to a end. You can see this, if you move from one patch to another inside a VST and if you then turn your potentiometer, you will have a jump from the current value of the controlled parameter, to the (absolute) value of the potentiometer. In other words, the parameter follows the potentiometer.
A endless encoder will use 14-bit values, is digital, therefore can have/use way more then 127 unique steps and is bi-directional. The steps you move are relative to the current value of the controlled parameter. So if you do the example from the above, you will not experience the (unwanted) jump of the value that can occur with a patch-change. In other words, the encoder follows the parameter.

What you need to understand is that Cubase is optimized (or prefer) to work with these 7-bit values. I think mainly for (downgrade) compatibility reasons and midi-bandwidth (you have with a real MIDI-cable).
The options Cubase offers now for us for relative encoders are, to operate with them in the absolute value range. This sadly means, we can’t take full advantage of the possible range these encoders have to offer. A thing you can’t change by scripting or anything else. Only a developer can change this. Even if Steinberg would offer and optimize this for relative encoders, you wouldn’t have this option for any 3rd party VSTs.

Where did you get that idea?

I don’t even know what to say to you anymore. It feels like trying to convince a flat-earther that the planet is actually a sphere.
Yes, a potentiometer is an analog device. No, it is not always using 7-bit values. This is because it is an analog device, remember? Not digital.
Have you ever used a pitch-bend wheel? Can you guess what electronic component it’s using?

You still own me a beer :slight_smile:

So what are those midi controller potentiometers are sending according to you. Or in which range do they operate?

A Potentiometer, but it is a pitch-bend wheel and not the typical midi controller potentiometer.

What ever the manufacturer of said MIDI controller decides it should send. But since it’s a MIDI controller, is should conform to the MIDI specifications. Here there are a few options. MIDI CC is by far the most common one and a MIDI CC value is defined as a 7-bit value. Pitch-bend is also defined in the MIDI 1.0 standard, but as a 14-bit value. The potentiometer could also be sending NRPN, which again is defined by the MIDI Association and can use two MIDI CC messages to create a 14-bit value.

For what? You still continue to be categorically wrong.

No, that is not correct. Cubase doesn’t use MIDI to run its VST environment. Cubase can connect to MIDI devices, but then there is a translation happening between the MIDI signals and the VST parameters. The VST parameters use floating point values, not integers of any bit depth.

This is also not right as Cubase supports relative MIDI CC messages. It’s been supported in Generic Remote for… I don’t know for how long. Ages.

Yes, you can. You can use a variety of 14-bit messages, such as Pitch-bend, NRPN, Mackie Remote, or relative CC (of which Cubase MIDI Remote supports 3 different standards. Generic Remote only supports one).

If your rotary encoder can send MIDI CC in any of the three relative modes Cubase supports, then you can. You can scale the Process Value (which again is a floating point value) to whatever resolution you like. I know this because I have done it. You can do it too with a little bit of JavaScript code.

I could not get my encoders get to work with generic remote. So Cubase did NOT supported my encoder until Cubase 12. Because it supported (like you said) only one mode. This mode made my encoder work only clockwise, but not in the opposite direction.

Ok, maybe you are right how Cubase and the VSTs process it (0.0-1.0), but it uses only 127 steps (between 0.0-1.0) at most for the range and you can´t change that to 1000 steps, no matter what.

You are categorically wrong, because you have not proofed, that you can adress more then 127 unique steps with a encoder. I proofed why you are wrong with this.

No, you can´t. There is no encoder that can move the value of a parameter in more then 127 steps. You did not proof anything with your Cutoff drawn line on a automation track. Until you show me how a encoder can move a parameter value in more than unique 127 steps, is anything irrelevant coming from you.

My controller supports one of the three relative modes. Proof it, that i can use it with more then 127 unique steps, since you have done it.

These settings work:

As I said before, you have to use the API and a customVariable. You can’t do it with the surface editor.

And? How big can this script be? One encoder that controls a Cutoff and you know the relative mode this encoder uses. I know how to load a script. Do it please.