remote control via network

  • citing one person(text originally posted by user atuin2):

    Can we make OpenSong more useful to churches with fewer resources or in low resource environments or weird resource environments.
    Ad hoc situations with many laptops but no projector (one laptop per child, weekends away, outdoor carol singing?)
    Thin client environments some churches may find it easier to have thin client machines connected wirelessly, than other multi-screen setups (Very long VGA cables etc). Thin clients can be old machines or purpose bought units, including a few new SVGT boxes that connect directly to a monitor or screen . If my multi-screen obsession seem excessive, remember i live in a country full of Victorian churches with a lot of pillars (I can't see the screen anything from my usual seat

    I would like to hear about any people which need remote controlling via network.

    There are several scenarios using remote control via network:

    1) One computer with presenter and all data files and other computers with thin clients. The presenter will control what will be displayed on all other computers.

    2) Or the thin client is running on first computer, all data are on the second computer and the presenter will control the presentation through the thin client.

    3) or any other combination?

    What scenario should be implemented?

    • Arne

      If such a feature were implemented, I would use this to set up additional displays in overflow areas without an operator. Currently, we have to have someone running each system, so this would be good for those times when an above average number of people show up for worship.

      For solution # 1, it would seem that building in a simple VNC server would be the easiest solution. Clients could connect with any VNC client, or perhaps a modified client that supports some sort of preloading so all slides change at the same time (when backgrounds changes would otherwise delay networked clients, for example)

      Solution # 2 might be useful somewhere, but I don't think it should be the exclusive implementation. What happens if the network goes down? Would the computer possibly connected to a main projector/TV be useless because the data files were elsewhere?

      My solution # 3 is a hybrid of 1 and 2: Control computer has all files, but other systems have copies of the files in the set. When the control computer adds a file, it is automatically copied to the other systems. Then, in the case of a network failure, some minimal interactive mode could be invoked on each of the additional presentation nodes.

      Solution 3+ would optionally allow for multiple synchronizations, although this may be more complexity than it's worth for the vast majority of users.

      For cases where extremely limited disk space would inhibit solution # 3, the built in file sharing of current supported OSes might serve as a quick way of getting close to solution # 2.

      • For solution # 1:
        - it's a good idea to preload some slides. several previous and several next slides could be preloaded.
        - how should it work what behavior is better?
        a) all thin clients listen on network and the pc with data files(the operator is using it) should connect to all thin clients and take over the control of presentation(from my point of view this behavior is better)
        b) or the pc with operator should listen on network and all thin clients should connect to it
        - should thin clients also be able to configure where display the presentation? (if on primary screen or on secondary screen or booth?)
        - we can try using VNC server or NX server( Do you mean integrate VNC to the application or that users can setup it if they need it?
        - I'm not sure if VNC or NX solutions are fully cross platform and if it's possible use it in this scenario: one screen is displayed on several computers. And what about video playback and network bandwidth? Does VNC support some form of broadcast or multicast (it means that the data are sent only once from operator's pc to all thin clients - it saves network bandwidth)?
        - i think it might be better create an own form of communication. We can then use broadcast for data sending and media streaming, preloading  some slides, etc. I doubt if there is any open source (or freely available) development tools simplifying this task.

    • SvA

      You want to have transitions?, you want to show moving (video) backgrounds? Then a VNC type approach is not approprate.

      I think the only reasonable approach is to let each client render its displays based on instructions from the controller PC. Dependent on network bandwith, at least for some resources, there should be an option to use streaming, or to download resources in advance, or to load it from shared resources over the net on usage.

      You likely will want to have the sattelites unmaned. Therefore the controller PC needs to establish the connection to the sattelites, not the other way round.

      • Yes, I want to have transitions and to show videos(in foreground or background).

        I'm sorry for my English ( I'm not a native speaker:( ) bud I didn't understand your last sentence well. Did you mean that the controller PC should act as a server (listen on network) and the satellites should know the name of the controller PC where they want to connect?

        Would you use this feature if implemented?

        My idea is using one separate connection to satellite for sending low bandwidth data(instructions, text slides) and second connection only when needing high bandwidth data(video, audio). High bandwidth data could be sent only once to all satellites using broadcast but all satellites must be then in the same local network.

        Do you thing it is desired in changingsong that all satellites should be in the same local network?

        • SvA

          I am not a native English speaker either, so the fault might well be on my side. By the term controller PC I was refering to the machine the operator sits on, i.e. the PC controlling the whole network consisting of this main PC and the remote controlled unmaned satellites.

          From a network point of view, the satellites need to be implemented as servers, I believe.

          As you say, if you want to use broadcast, all satellites need to be in the same network. I don't think this is desirable. Furthermore, this network needs to have rather high bandwith. To avoid these restrictions, I was suggesting to tell the satellite over the command link where it can find the resources needed and what transition it should perform. In general, the satellite should render it's own presentation screen, and not receive it over the network in some VNC type screen mirroring scheme.

          I am technically not into streaming content. I think, if you have a high bandwith live video stream, there is not much alternative to broadcast (assuming you want a short delay ans synchronous replay).

          On the other hand, if you have a recorded video, you can show it on a satellite, even if it is connected over a low bandwith connection in some other network, provided that satellite has a local copy of the video.

          Even for satellites in the local network I think it is preferable to let them render transitions locally in order to have less outward (outside the box) requirements to get fast and smooth transitions. The same is true for statuc background images. They will load faster if stored locally. Of course there also should be some mean to sent them to the satellite in due time.

    • Zach

      This is a good idea and could have many uses.  As mentioned in other posts this could be used to add monitors or additional outputs using old laptops and things like that to save money over additional graphics cards and monitors.

      I think local copies of files are a must.  It should appear to the operator as additional screens (outputs) even if the OS doesn't see them that way.

      It would be nice to be able to have the operator be either on a controller computer with rendering hapening on other computers or have rendering happening both locally for local screens and on remote screens also.

      I would suggest having a rendering program and a controlling program separate so they could either run on the same computer or on separate computers.

      Some possible configurations.

      1:  operator on a computer with dual monitors (control and output) controlling a separate machine(s) that would only have outputs.

      2:  operator on a laptop or other single monitor system that has the control screen and seperate machine(s) that would render the outputs.

    • So this is my suggestion based on posts in this thread how this feature could work:
      - I would consider this feature being "an advanced feature" and thus disabled after default installation(not to confuse new users with many features. Being able to use this feature you should enable it in settings dialog.

      satellite (SAT) - PC that should increase the count of usable monitors/projectors
      operator's PC (OPC) - PC that controls order of presentation, what display where.
      primary monitor output (PMO), secondary monitor output (SMO) - one pc can have one or two connected monitors
      types of screens: 1) presentation screen 1 (PS1) - main type of presentation screen, aimed at projector
      2) presentation screen 2 (PS2) - additional type of screen to display for example text and chords for worship band, etc
      3) operator's screen (PSO) - operator can see order of slides, control the presentation
      operator (OP) - a person who control the presentation

      - both (SAT and OPC) can act as server or client (SAT can initiate connection to OPC and OPC can initiate connection to SAT)
      - with new SAT we can have 1 or 2 additional monitor outputs
      - OP can set what type of screen (PS1 or PS2) will be run on what SAT and what monitor output (PMO or PM2)
      - content displayed on PS1 and PS2 will be similar and will differ only in used styles (e.g. on PS2 display only lyric with solid background and on PS1 display also image in background or for PS1 use transition but for PS2 don't use transition, on PS2 display also chords but no on PS1, etc.)
      - PS1 and PS2 will change their content synchronously
      - operator should be able to save profiles with his multimonitor/multicomputer settings
      - OPC will copy images and lyrics to SAT for presentation to any temporary folder
      - OPC will stream audio and video over network to SATs
      - in this feature is the linearity of presentation VERY IMPORTANT!

      1) create connections between SATellites and OPC.
      2) SAT will inform OPC about the count of available monitors (possible values are 1 or 2)
      3) OP will assign screen types to available monitors
      4) before starting the presentation OPC will copy images and lyrics to all available SATs (only for temporary purposes)
      5) when there is any video or audio in presentation, OPC will stream it to SATs
      6) OPC will be sending command to SATs for changing presentation
      7) when presentation is finished OPC will remove temporary lyrics and images from SATs
      8) disable presentation windows on SATs
      9) close connections with SATs

      • Arnonym

        If this is high up in the feature list, I would advise to implement it from the beginning. And to change the scheme a bit:

        Divide the app into two parts:
        - "Controller" that does most of the work
        - "Presenter" that gets the data-to-be-presented from the controller and displays it.

        For normal operations the controller would start an instance of presenter when going to the presentation mode.

        For advanced usage there would be several Presenters up and running in the net and maybe even announcing their exisiting via zeroconf or something else. The controller then can sort them to different classes like "main lyrics", "musicians lyrics and cords", "video and lyrics(overlay) for next room", all displaying different stuff and use them accordingly.