open-stage-control has evelved a lot during these years, and I’m very grateful to you,
@jean-emmanuel, to be so open about implementing most of the features requested by users.
o-s-c is and has become incredibly powerful and flexible.
The automatic client sync, the availability on tablets and touch surfaces, the headless mode, the remote control features, are really cool.
Also, clone widgets, matrices, variable inheritance, allow to do really complex things without too much copy/paste.
And there are solutions for every problem, even very complex ones.
I also see a list of very interesting features in thre upcoming v1, like hidden script widgets, notifications, class and style attributes in html widgets,
url-options applied on remote browsers, button tap mode, native setTimeout handling…
The future looks great!
With all the experience I had during these years, here is a list of
additional features I would find very helpful and that would ease the use
of o-s-c, at leat in my case.
@jean-emmanuel, and others, feel free to discuss about them or tell if they would be useful for you too.
Almost all featuress I think about are related to the script widget.
Because when we need to do complex things or do things in a programmatic way, it
is somewhat tedious to have a separate script widget for every button/fader/…
We have to create the script widget, hide it somewhere, and also remember that this script is trigger by this particular button
(partiually addressed by this feature in v1: ‘always hidden except in project tree’)
It would be nicer to have a ‘script’ field in each widget, and be able to handle a received value in a programmatic way.
It would also be helpful to compare the received value to the previous one, like:
if (value != previous_value) {…}
Also, it would be great if the script function was called even if the value hasn’t changed, without using the linkId property
we could also imagine, a bit like in visual basic, that a function would be called automatically, like on_fader1_change(), on_fader1_receive(),
on_fader1_clicked(), etc
If these functions were located in a separate script file, this would ease using versioning, diff tools and such
It is a bit what is done with custom modules, but a bit more integrated.
And a last useful feature would be to have access to set(), get() etc, to
easily ‘sync’ a value between widgets (there are tother ways to do it currently but sometimes it requires
a more complex workflow)
For instance, if you have 4 buttons and a text, and that you want to display a text depending on the last button pressed, you have to write this in the text widget value:
@{btn1}?@{btn1}:(@{btn2}?@{btn2}:@{btn3})…
This could be replaced with set(text, this.value)
in each button.
Also, for what I see in the screnshot, the upcoming v1 looks very nice!
tree-lieke widget hierarchy seems really useful, and overall o-s-c looks much nicer!
I think the upcoming layout will involve a lot of mouse movements between the left and right part of the screen, except if panels are dockable.
Could you also consider having multiple windows ? that would also allow easier editing with multi-monitor setups
@jean-emmanuel I can split all this into separate features on github, or add more use cases, but this is only a preliminary discussion.
Thanks for taking some time to review/criticise this