Relative XY widgets for use with game controllers.

Archive of the non-categorized posts related to the QLC+ technical support.
Please do not create new threads here, instead, use the categories above !
Post Reply
Chris Laurie

One of the most useful applications for using a game controller as an input device for QLC+, would be to be able to control the XY positioning of a moving head.

There are a few issues with the current XY widget that makes this impractical/difficult:

* Joysticks are spring loaded and centred. This means it always starts at the centre of an XY pad and returns there when released.
* Being spring loaded means you have to find the XY spot and keep it there. This is a bit counter intuitive with the way a board's sliders usually work - move it to position and it stays there while your hands are doing something else.
* Game controllers has a slight jitter.On my experiments with the midi interface there was a definite jitter in the XY widget.

I suggest the extension of the XY widget - relative movement:

* The XY values coming from the controller indicates the rate of change in a specific dimension (as opposed to absolute values). In other words moving the joystick a little way will adjust it slowly while moving it all the way will adjust it very fast.
* The adjustment is relative to the last XY signal for that fixture.
* When the joystick is released and jumps back to centre, the XY co-ordinates are left where they are and no movement back to centre occurs. This would make it possible to make small adjustments by gently nudging a joystick.
* If at all possible the widget should take into account the fine and coarse XY controls many current moving heads have. At small offsets, increment/decrement just the fine control till it gets to the limit then increment/decrement coarse control by 1 and start the fine control at the other end of the limit. As the joystick is moved further from centre, the rate at which the change happens is incremented until it makes sense to only adjust the coarse control - setting the fine control to mid-value.
* Allow the XY widget to update to positions set by means of a function/button. So the designer can program a position to a function/button and the XY widget then updates to that position and allow joystick control from there on.
* The algorithm could use averaging techniques to remove jitter and since there is no change broadcast when the joystick is centred, the fixtures remain stable at the last position.
* Allowing the designer some control as to the sensitivity and crossover parameters would increase the usability of this widget.


This approach would make game controllers extremely useful input devices for controlling moving heads. One can program a predetermines spot for 2 moving heads as to where the performer will start and then follow him around using the 2 joysticks one has on a typical controller = follow spot! This would be very difficult with the standard XY widgets. In fact, using bluetooth, the joystick operator can be somewhere else in the room to where the lighting desk is.
Matthew Marks

Great idea, but I expect the springs are easy to remove from a joystick so you might consider doing that too!
Chris Laurie

You would still have to find the spot from the previous. My suggestion means you can pro-program the starting spot.
Connor Faulder

I must say this is quite odd as I have just popped onto this forum to suggest the exact same thing! I second this idea as it's understandably quite hard to keep your hand steady to stop the light moving about.
Chris Laurie

The other interesting issue with a game controller sending absolute XY values, is that it does not get into the extreme corners. At least on the OUYA controller I tested with. Since the joystick is in a round pod it actually cuts the rectangle of the XY to rounded corners. Rate of change methodology will get the XY coordinates to the extreme corners.

Another thing - as I understand the midi spec, it sends values of 0-127 (one bit being used to distinguish between status and data bytes). This means that a midi controller has an even smaller resolution than the DMX can handle (0-255), making the movements even coarser. A rate of change methodology will make very fine movements possible especially if the XY widget can make use of fine and coarse XY movement channels. The further the fixture is from the target the worse this problem will be.
Matthew Marks

Good point about the corners being cut off. MIDI has extensions which allow 14-bit values to be sent. I had a stab at modifying QLC to support this. My changes work fine with the BCF2000 but I only did them for Linux, which is why I haven't offered them back. I know I should attempt to support the other platforms so that people can benefit.
Ruubmaster
Posts: 6
Joined: Sat Nov 18, 2017 12:05 pm
Real Name:

I'm a bit late, but more than 10 years later I think this is still a very useful function to have, and would be great if it were added.
Ruubmaster
Posts: 6
Joined: Sat Nov 18, 2017 12:05 pm
Real Name:

I just saw that control change midi input can be switched to relative, but as joysticks are not always exactly in the middle, the signal is constantly slowly drifting. I do however have found a way to make QLC+ work with an XBOX one controller to control the movement of moving heads. If anyone want to know more about it message me.
Post Reply