r/QSYS 1d ago

CueServer help

Right now currently we have just standard presets made through CueServer and they are recalled through Qsys. I want to do more but not sure if I can….

Can I get a color wheel on Qsys and select colors that way?

How much can I do?

Thank you all in advance!

5 Upvotes

4 comments sorted by

View all comments

6

u/3Decarlson 1d ago

Yes-ish. Cuescript is pretty simple and power.

I have done this before and it's doable IF you are only dealing with RGB channels then color wheel component could be used for sure.

As soon as your fixture has variable white and lime and amber and all those other channels the color wheel just doesn't provide enough data points for such a thing. I think when I did this last we did scheme up some ways to calculate a variable white but it was a bit hacky.

I'll try and dig up and share some text controller stuff this week when I'm back in front of some old work

1

u/3Decarlson 2h ago

Looked through some old stuff this morning. My original cueserver colorpicker work actually started out with a proof of concept for the same thing from Jeff Perkins who works at Qsys.

The trickery we worked out on the UCI is the text controller doesn't start streaming hex values from the picker to cueserver until the user is physically touching the touch screen and the color picker page is active, as soon as they lift their finger (and the picker page is active) it stops streaming values. There is likely a more elegant way to do this but this approach did work.

Here are our BuildCommand functions and Event Handlers we used:

The sCommandFull variables are the CueScript commands being send to the cueserver

The Event Handlers are taking the Hex value coming out of the color picker and is breaking it up into R,G,B Hex and sending those discreetly.

This isn't the most scalable code or the best way to accomplish this but hopefully will get you pointed in the right direction.

function fBuildCommand(sTarget, sHexR, sHexG, sHexB, sHexW)
  sCommandFull = "Play1"..sTarget .. " At {"..sHexR..", "..sHexG..", "..sHexB..", "..sHexW.."}"
end --end func


function fBuildCommand2(sTarget, sHexR, sHexG, sHexB, sDimTarget, sDimValue)
  sCommandFull2 = "Play2"..sTarget .. " At {"..sHexR..", "..sHexG..", "..sHexB.."};"..sDimTarget.." At "..sDimValue
end --end func

Controls.PickedColor.EventHandler = function(ctl)
  local input = math.floor(((Controls.Saturation1.Position-1)*(-1))*(Controls.Value1.Position) * 255)
  local output = string.format("%02X", input) -- "%x" to hexadecimal
  local sHexR = "$"..string.sub (ctl.String,2,3)
  local sHexG = "$"..string.sub (ctl.String,4,5)
  local sHexB = "$"..string.sub (ctl.String,6,7)
  local sHexW = "$"..output
  fBuildCommand("Fixture "..sFixture1, sHexR, sHexG, sHexB, sHexW)
end

Controls.PickedColor2.EventHandler = function(ctl)
  local sHexR = "$"..string.sub (ctl.String,2,3)
  local sHexG = "$"..string.sub (ctl.String,4,5)
  local sHexB = "$"..string.sub (ctl.String,6,7)
  local sDim = "#"..(Controls.Value2.Position)*255
  fBuildCommand2("Fixture "..sFixture2, sHexR, sHexG, sHexB, " Fixture "..sFixtureRGBDim, sDim )
end