Adding volume control for the displays

Hi I am trying one new functionality in the server to control the volume of the displays. Suggest some ideas for doing so.

You mean you want the Player software have control over the Display Volume?

I think you might be able to do that with a shell command, by writing a BAT file which sets the volume. Otherwise I think this will be a feature request for future versions.

Thanks for the reply :smile:

Actually we are planning to control the volume of the display from the server site itself. Can you suggest an idea for implementing this ?

:smile:

Well… I think anything you did would have to be actioned by the player via the server - unless your server could somehow run commands remotely (which I don’t think is advisable).

The answer depends on whether you want a workaround or a completely integrated solution. A workaround would be a set of BAT files on the Player which had commands for adjusting the volume to certain levels. Then a set of layouts in the CMS which contained the Shell Command module, calling the appropriate BAT file.

You’d schedule the layouts when you wanted the volume to change - probably with the priority flag ticked so you knew they would run.

A full integrated solution would mean modifying the Player Source Code to control the volume, based on the settings provided in the RegisterDisplay call. Then modifying the CMS so that the user could configure that information - I am not sure how the UI for it would work, as I would assume there would need to be some events, that triggered the change. Maybe as part of Interactive Signage

Thanks Dan,

We are looking for a fully integrated solution. We have developed the UI for the same. But, we are not able to pass the value of the volume from the UI to the player settings.
kindly give us some solution on how to implement this. Thanks in advance.

Will you be sharing the modifications with the community? It would be nice to have them as a Fork/Pull request in GitHub.

Regarding the settings - you’d need to add them to the SOAP service (lib/services/xmdssoap4.class.php) in the same IF conditional on Line 158.

Thanks Dan,

We will be working on it. If we could succeed in this we will definitely share this modification with the community. :smile:
We expect your support to implement this successfully.

:smile: well - we need to see what you are doing and discuss how you are putting it together before we can provide any sort of support. I’m sure you can understand that we don’t have the resources to implement new functionality that we cannot then include in the solution as a whole.

Things like UI design, DB design, implementation notes, etc will need to be documented so that we have a good understanding of what is going on. There is a template for this here: Blueprint Template which can be copied into this topic and filled in.

So by “normal settings”, Dan means that the CMS already sends down to the client lots of settings when the client calls “Register”:

https://github.com/xibosignage/xibo-cms/blob/develop/lib/service/xmdssoap4.class.php#L48

You’d need to tag on your new settings to that.

But ideally before you do that, it would be good to understand exactly what it is you’re trying to implement with regard to volume settings and how that will integrate in to the CMS UI.

Hi Alex,

We are actually trying to add a volume slide bar for each display, so that we can control the volume of that particular display. We want it to be a live event, like we can adjust the volume while the display is showing.

Thank you.

That’s going to be tricky then within the current model.

The player polls the CMS on a collection interval - say once every 5 minutes. Having a live slider in the CMS would need the client to poll every second or even more frequently which will cause massive load on the CMS and use loads of bandwidth.

So you are telling that we will not be able to add this feature in the current model?

No I’m saying some thought needs to be given to how it would be possible to implement something like that. I don’t have any suggestions immediately but others may have.

Ok. Thank you Alex. If you came to know any possible way please share with us too.

Does it have to be manually controlled?

Would it be acceptable for example to set a volume level on an individual layout or media item? That way the volume can change layout to layout and that information can come down with the layout so that it’s known ahead of time?

No, we actually want it to be manually controlled for each display not depending on layout.

And it has to be controlled in real time? ie adjusted continuously? Or is the volume set once and then left?

Yeah, it has to be adjustable continuously as we see in media players.

Hmm, perhaps this isn’t something we could include after all :confounded:

If you did not want it “real-time” then I would have said to implement it exactly as we have discussed so far:

  • new field on Display table for volume
  • modify register XMDS method to send a configuration node for <Volume>
  • modify client ApplicationSettings with a new public property for Volume
  • modify client default.config.xml to have a default Volume property
  • listen for changes to the volume property (maybe have to implement some delegates/events in ApplicationSettings) and take necessary action

However - if you want your player to poll that service every second - that would add an unacceptable level of load because it would also have to poll all of the other services at the same rate.

Some suggestions:

  • Have a separate polling interval for register
  • Have a separate “highFrequencyConfig” method in XMDS with a separate polling interval
  • Suck it up and make sure your CMS has enough power to cope with a very low collection interval for all services.

Sure Dan. Thank you very much for your suggestion. We will definitely give a try :smile: