OSC messages sent to encoder widget have no effect on its rotation

Hello,

Among other things, I'm using Open Stage Control to visualize my physical interactions with MIDI controllers through knobs, faders, buttons, and encoder widgets. The setup involves my MIDI controllers (knobs, faders, buttons and encoders) sending MIDI messages to SuperCollider, which then relays OSC messages back to Open Stage Control.

This setup is working seamlessly for knobs, faders, and buttons, but I'm facing challenges with the encoder widgets. Despite trying various adjustments (changing encoder widget ranges, ticks, sensitivity, adding 'OSC{/address}' to widget value, toggling my MIDI encoders between relative and absolute modes, etc.), encoder widgets remain unresponsive.

Can the rotation of encoder widgets even be manipulated through OSC messages? If so, what might I be overlooking in my setup of the encoder widget?

Any guidance would be greatly appreciated!

It cannot, sorry for the long search ! Given its relative nature (the encoder doesn't have a value per say), I chose not to expose its rotation state to osc messages because widgets only expose their value that. There are a few exception to that rule though, so the option is not completely out of the table, maybe for a future addition.

I understand. Of course, if this can be added in a future release, I would be extremely greatful Jean-Emmanuel. This would make my control interface absolutely perfect!

I want to take this opportunity to thank you for all the work you've done on this fanstastic platform. Open Stage Control has truly changed the way I am interacting with my MIDI controllers and SuperCollider, and it is an amazing asset for the community.

Merci beaucoup !

Thanks for the kind words, always appreciated : )

Jean,

I'm replying to this old thread. Actually, the encoders I am using (Intech Studio EN16) are entirely programmable and feature two modes:

  1. Absolute mode, sending a incremented value ranging from a low value to a high value (i.e. 0 / 127).
  2. Relative mode, sending a fixed value at each rotation step (i.e. +1 / -1).

The relative mode is the mode I am actually using, which I believe matches the behavior of the encoder widgets. So I guess it would make sense to expose their rotation state to allow OSC messages to be sent to the widgets.

Of course, I'm not requesting anything but ... that would be truly awesome : )

The thing is sending incremental values to the widget won't be enough to properly sync its rotation state to an external encoder: their granularity won't match and an absolute reference will be needed at some point. I can allow sending an absolute angle value to change the widget's rotation but you'll still need to figure out your encoder's angle and send it to o-s-c...

The absolute mode on the other hand would work fine (with a 360° knob widget) sync-wise, but you'd need to convert the absolute value to a relative one using filtering and (simple) maths.

Jean,

Thank you very much for your prompt response.

Encoders have a specific number of steps per full 360-degree rotation (or pulses per revolution - PPR). For instance, mine have 24 steps per rotation, but I'm aware that encoders with different step counts exist. To accommodate various types of encoders, introducing a configurable variable within the encoder widget settings could be a solution. This variable would allow users to specify the number of steps per full rotation for their specific encoder, enabling Open Stage Control to dynamically calculate and display the rotation angle per step based on the user-defined number of steps.

Furthermore, considering that some MIDI encoders, including mine, have a velocity setting where turning the encoder faster increases the fixed value sent at each step (e.g., +1/-1 when turned slowly, +2/-2 when turned faster, and so on), it would be prudent to base such a setting/calculation on event occurrences rather than actual values.

Thank you for considering this suggestion.