Code Monkey home page Code Monkey logo

Comments (5)

willosof avatar willosof commented on June 7, 2024

Can you show me another console/device that does this? The topic intrigues me.

from companion.

dnmeid avatar dnmeid commented on June 7, 2024

I've done a survey in a group with 700 AV people. I asked should the pages be incremented with arrow up or arrow down. After 24h 20 perfer page increment to be arrow up and 11 prefer it to be arrow down. The up supporters are almost all lighting guys, the down supporters are almost all sound and video guys. (The group has more lighting guys than sound and video)
Some suggested the most natural and intuitive way would be left/right buttons with right is increment. One audio guy mentioned that on many audio consoles the direction is user definable.

After rethinking all of that I think we should drop the concept of the pages like they are at the moment and replace it with a more flexible solution. Also thinking of upcoming multi-device functionality. My proposal: Introduction of windows or whatever you want to call it. Basically a window should be a 2d array of buttons mapped onto physical keys. Like in a computer window, when the key area is smaller than the button array, overflow with scrolling can happen. Properties of a window are id or name, position on keys (top left), border size (w,h), pane size (w,h), pane position (x,y).
We should introduce companion as a new pseudo-device and offer actions to control it: window open at position (x/y and size w/h) (also brings window on top), window close, window scroll (direction and increment), window scroll to (x/y).
One can rebuild the workflow like it is with two windows. Window one occupying the three left buttons and window two occupying the remaining buttons. In window one you have buttons for scrolling window two up or down (or left and right).

The big advantage is, that you can have much more flexibility. Lets say I have only two pages. I can make one window with a button in top left "scroll to where page two is" and on page two in the same location one button with "scroll to where page one is".
This also is a solution for the sticky button request. Just make a second window and don't scroll it. If you only wan't to have one sticky button and it should be in the middle of the keys, no problem, just make sure window two is on top of window one. That means windows should not be brought to front when using a button.
Also the Page navigation system suggested by Deanbau could be user programmable that way, you just have to open a window with several buttons to new windows with several buttons to scroll positions. Ok it will take some time to program this as a user, but the point is that the power and flexibility is at the user end and they can customize their control surface the way they want.

Button naming could be w.y.x (w= window no, y= row no, x=column no). My suggestion is that the pane size is virtually infinite (fixed to some technical limit), so you can just place your buttons anywhere you want an scroll there, you don't have to grow the pane when you need more space and, more important, we don't need to reflow buttons when the pane shrinks.

Of course we need parameters for actions for that, but we need parameters anyway.

One more addition to the button flexibility (maybe I should do new issue): We should have a button pool. That means when creating a button with actions and so on it gets created in a pool and you can use the pool objects and place them in windows. With that you can reuse the button/have more instances of the same button. When editing the button you edit the pool object and all other instances reflect the edit. Copying a button in a window creates a new instance, copying in the pool creates an independent new button. We can also enumerate the pool objects and maybe put that number in the top right of a button.
BTW: Button creation and assignment should be drag and drop.

Discussion is open!

from companion.

willosof avatar willosof commented on June 7, 2024

from companion.

willosof avatar willosof commented on June 7, 2024

Dependent on #56

from companion.

willosof avatar willosof commented on June 7, 2024

Now optional from userconfig!

from companion.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.