DMX KeyPad

jannis87

Hi community,
I'm using QLC+ mainly for doing live lightshows during rock concerts. When I arrive at a venue where there's usually a lighting desk, I use the "Simple Desk" to check all fixtures and the patching and then create Functions and my Virtual Console. While it is very nice that the Virtual Console can be accessed via web server, the Simple Desk cannot. So while I'm on stage with my laptop at the FOH, I cannot use my mobile phone to check the fixtures since I just didn't yet setup the Virtual Console at all.
Furthermore, If you ever tried using sliders on the web interface via a mobile phone you realize that you need to be very precise. Otherwise my browser scrolls instead of modifying the value.
To get rid of all of these problems, I tried to implement a DMX KeyPad in QLC+. The ones you find on lighting desks like GrandMA and the ones made by transtechnik to select a range of channels and assign a value to them. Those keypads are very suitable for touchscreens and the webserver of the OLA daemon (Open Lighting Architecture) features such a keypad.

My first try enhances the Simple Desk by adding the keypad to the sliders in the upper section. This make sense since just like the sliders, the commands from the keypad override the DMX channel values until reset and you get a visual feedback which channels are overridden (red background of sliders). The long aim is to add it also to the webserver so it can be used via mobile phone or tablet.

The code can be found here: https://github.com/kripton/qlcplus/tree/dmxkeypad
Just switch to the Simple Desk and play around.
The number keys, "AT", "CLR", "FULL", "THRU" (for channel ranges, not yet for value ranges) and "ENTER" should be working. "MINUS", "PLUS" and "BY" as well as value ranges (transtechnik calls them "FAN" function) haven't been implemented yet.
I plan to add a syntax diagram as found on https://sqlite.org/syntaxdiagrams.html for the documentation later.

It would be nice to get comments on the code and the functionality so I can change it rather early than later.

Best regards,
Jannis
Jano Svitok

For diagrams, check asciidia.
jannis87

Jano, thanks for the hint, the generated graphs look usable. However, I think I'll try the way SQLite generated their graphs first since they used a Tcl-program and I know Tcl better than PHP. Furthermore I didn't decide yet, whether to ship the diagrams as SVG/PNG or as source and let them be generated during build time. In the latter case it matters on what interpreter we can depend.

Another note about the actual KeyPad StateMachine algorithm: I just realized that I should use the enter() and exited() signals of the states more often. That might save me a lot of if-instructions. Refactoring the code right now ...
jannis87

Here's a screenshot of the functionality
Attachments
qlcplus-keypad.png
qlcplus-keypad.png (103.55 KiB) Viewed 5378 times
jannis87

Another screenshot. Two commands were issued:
1 THRU 10 BY 3 AT 200
18 THRU 25 AT 0 THRU 255
Attachments
qlcplus-keypad1.png
qlcplus-keypad1.png (109.3 KiB) Viewed 5378 times
Jano Svitok

I really like it, I kind of planned something like that (as a developer, I always welcome keyboard control, and command line interfaces :) ). Unfortunately I'm pretty busy so I can't check the code now. Massimo is planning release real soon, so I suppose he won't merge it before the release either.
Massimo Callegari

Hi Kripton, you did it right to post the shots here. Sorry for asking them in private.
As Jano said, this is too much to be integrated in 4.7.1, but I'm willing to do it later.

The only problem I see here is a "space issue". I struggled to have the Simple Desk 32 channels to fit on smaller screens. Now the smallest width that Simple Desk can assume is 980 pixels (at least on Linux)
Your shots are 1318 pixels wide, so your solution won't fit on 1280x1024 or 1024x768 resolutions. In those cases I guess QLC+ will resize the window out of the screen, so the user won't be able to access the rightmost icons, like operate mode, blackout and so on.
Even worse, all the right editors will be cut (chaser, efx, rgb matrix editors, etc)

I would propose to add a button to show/hide the keypad
- as an optional left panel (your current solution)
- as a separate window always on top, like the speed dials window

What do you think ?
jannis87

Hi,
no problem that this won't make it into 4.7.1. More time to write documentation :D (And maybe get it onto the webserver?)

The smallest width I can get by resizing is 1088px (Too wide for 1024). But it looks like the width is limited (in a minimum width way) by the bottom half.

However, all the splitters (the horizontal one between the "Universe control" (top) and the cue stack (bottom) can be resized and when pulling the splitter between the faders and the keypad way to the right and the keypad will disappear automatically. However, hiding it by default will probably keep it hidden forever.
In the bottom half, the "Cue stack" is a tab and I thought about just adding the keypad as another tab there. From the design side (mostly looking at the existing code) it really doesn't belong there but directly attached to the "Simple Desk" faders at the top.
Separate window: Sure, thought about that one, too. Everytime the keypad runs detached from the simple desk, it needs a button to reset the channels. I even thought about deriving from the simpledesk and running detached from it. Any design-improvements are appreciated :D
Massimo Callegari

Two considerations:
- the Simple Desk minimum width is determined by the top part, not the bottom one. I think the channels top icons are the ones that cannot be resized
- the Cue Stack is a tab because if channel groups are present in the project, they will appear in the Simple Desk as a new tab (try it out). This means that those tabs are generic, so not necessarily related to the bottom part.

Said that, I would go for two options:
- keypad as a separate window
- keypad as a tab

Which one do you prefer ? :)
sebastian hartl

you guys are simply the best! unfortunately i am not a developer and a bit slow on the intake as far as including add ons in the software. can you tell me how to access qlc+ through the web browser? and i would love the add on with the channel pad on the simple desk. please teach me!

thank you
jannis87

Hi Sebastian,
sorry I didn't respond earlier, I just saw your questions today.
To get QLC+ on the web browser is easy. Just make sure you are using the latest version and append "-w" to the command line. Then, in your web browser enter "http://:9999" or "http://127.0.0.1:9999" if testing it locally and you should be set.

The DMX keypad has not yet been merged to QLC+ and you could access it if you compiled QLC+ yourself.
User avatar
forresthopkinsa
Posts: 20
Joined: Tue Sep 29, 2015 3:23 am
Real Name:

Can we get an update on this? It's been a year and a half, and this would be really useful functionality. Are there any major issues that are preventing it from being pushed upstream?
Production Director for Coastline Church NW

Software Engineer at AWS S3
Baer
Posts: 96
Joined: Fri Jan 15, 2016 8:40 am
Real Name: Matthias

Would be great to have this feature, and would be even greater to have the possiblity to add this to the virutal console
Tasaei
Posts: 53
Joined: Sun Apr 19, 2015 8:55 am
Real Name: Jasper

a friend of mine implemented it, too, was really cool to work with!
bblinky
Posts: 2
Joined: Tue Sep 22, 2015 10:09 am
Location: Earth, Sol system, Milkyway galaxy
Real Name: Noa Johan Thorstensson
Contact:

Tasaei wrote: Wed Mar 23, 2016 7:20 pm a friend of mine implemented it, too, was really cool to work with!
Github?
User avatar
sbenejam
Posts: 546
Joined: Sun Apr 12, 2015 6:28 pm
Real Name: Santiago Benejam Torres
Contact:

There is a DMX Keypad on the web interface of QLC +.
https://www.qlcplus.org/docs/html_en_EN ... rface.html
User avatar
edogawa
Posts: 572
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

I've done a bit of work to get the dmxkeypad code up to date, to compile against current master, and add keyboard input.

See my comment in https://github.com/mcallegari/qlcplus/pull/280
User avatar
mcallegari
Posts: 4480
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

I'm here.

Is there a convention for the "language" to be used?
I can start from where Jannis left (6 years ago :( )
Attachments
Screenshot_20201119_205416.png
User avatar
edogawa
Posts: 572
Joined: Thu May 07, 2015 10:34 am
Real Name: Edgar Aichinger

That's a difficult topic, I'll try to summarize my little knowledge (or what I think I know) about it and still keep it a short post ;-)

Hardware venders all use their own logic and concepts that have developed over decades, and users tend to prefer one or another depending on what philosophy they grew up with...

Really, MA Lighting, ETC Congo, ETC Eos Family, Strand Genius, Compulite, Avab, Hog, they may share *some* basic ideas but differ considerably in others. Some are better suited for theater, others for concert/clubbing, and some try to be allrounders. Also during the last years a whole new generation of hard- and software has emerged, to introduce modern concepts to better handle the many possibilities that new intelligent multicoloured lights offer.

That's also the reason why you usually depend on a board operator to program the venue's lighting console when you arrive there on tour and don't bring your own board. I'm trained on Strand Genius software and Compulite Spark and Applause desks, can more or less deal with simpler stuff on ETC Eos, but have hardly a clue about AVAB, GrandMA or ETC Congo, for example. Some of these big desks offer switching to alternative input methods, for operators that are trained to other systems of that same manufacturer, and/or personal preference choices.

I've seen sections in handbooks of big desks to explain how keyboard input and the commandline interpreter work, so you get a basic understanding of the thinking behind and can quickly learn the "language". They usually talk about commandline elements like commands, targets, operators, modifiers, and explain the needed syntax by instruction and example, and after a while you get the hang of it. Also the onscreen status area usually gives error or warning messages for wrong/incomplete or dangerous commands, and desks often offer a help page.

The current DMX keypad in QLC+ is very basic. At the moment it allows to assign values to one or a combination of several DMX channels, and that's it, but that's pretty helpful and timesaving already. Extending it beyond that would probably ask for a way to call scenes, channel groups or whatever targets for operations by number.

I have no clue if kripton (is that Jannis?) still is around or has any plans to continue with this.
User avatar
mcallegari
Posts: 4480
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

Alright, I've got a working prototype
Most difficult part is +/- buttons (still not working)

@Edgar: thanks for the usual lengthy post ;) To be honest though I'm not sure if in 2020, and seeing also how many features software can have (vs hardware), operators are still that attached to a keypad.
Anyway, I've noticed there's interest in this, so I've finally found some time to work on it.
Attachments
Screenshot_20201120_120748.png
Post Reply