-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: RPC control of positional audio parameters in the client #4575
Comments
Hehe, very interesting you bring this up now as I just recently finished something that could easily be extended to fulfill your needs. As you might now already (or maybe not, idk) I have created support for actual (more or less) general purpose plugins for Mumble (see #3743 - it's not yet merged as you can see, but it is already usable). On top of that, I have built a JSON interface that can be used to use the plugin API from outside of Mumble. Therefore the plugin interface had to be extended in order to expose the positional audio settings (it already has a general settings framework. Thus you/we only had to add the specific settings needed) and that should be more or less it. The whole thing then works by providing a Mumble plugin ( This obviously only works for Mumble clients that already include the changes from my plugin PR, but I expect the PR to be merged in the upcoming months and it is planned that 1.4.0 will be released with the plugin framework as a new feature. |
This is great news! So we would just have to extend your plugin a little bit, and then wait for version 1.4 of mumble, which will (hopefully) support your plugin? Is there any timeframe for release? In that case, I would like to extend your plugin to fit my needs. Should I open an issue in your repo? Thank you in advance! |
Yes - though the plugin isn't what needs extension. It's the plugin framework. The changes necessary to expose a few extra settings is rather minimal though, so I could even do that for you. Are the settings mentioned in your initial request all that you need? You'll get read and write settings to them ☝️
Not really. Initially we wanted to release 1.4.0 somewhat soon after the plugin PR has been merged but we also wanted to start distributing snapshot releases earlier (some complications in regards to the Windows installer and the new build-chain prevented that though). Depending on when the plugin PR gets merged we'll probably still wait a bit in order for volunteers to test the changes in 1.4.0 before releasing it as a stable release. The plugin PR itself will probably be merged in the matter of 1-2 months. Maybe earlier. I can't really tell as it is currently being reviewed by a third-party group. |
Yes, setting those four values would be all I would need for now. If you want to add that, that of course would be cool - thank you very much! In terms of release, that sounds promising. I will check back when there are public stable builds available. Edit: if there are any usable beta versions, I would like to test those too. |
Well I hope we can offer snapshot releases in 2-3 weeks. Until then there'd always be the possibility of compiling the branch for my plugin PR yourself or grabbing one of the CI artifacts :) |
Here you go: 19ba1af |
This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes mumble-voip#2455 Fixes mumble-voip#2148 Fixes mumble-voip#1594 Fixes mumble-voip#2051 Fixes mumble-voip#3742 Fixes mumble-voip#4575 Fixes mumble-voip#4751
This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes mumble-voip#2455 Fixes mumble-voip#2148 Fixes mumble-voip#1594 Fixes mumble-voip#2051 Fixes mumble-voip#3742 Fixes mumble-voip#4575 Fixes mumble-voip#4751
This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes mumble-voip#2455 Fixes mumble-voip#2148 Fixes mumble-voip#1594 Fixes mumble-voip#2051 Fixes mumble-voip#3742 Fixes mumble-voip#4575 Fixes mumble-voip#4751
This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes #2455 Fixes #2148 Fixes #1594 Fixes #2051 Fixes #3742 Fixes #4575 Fixes #4751
This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes #2455 Fixes #2148 Fixes #1594 Fixes #2051 Fixes #3742 Fixes #4575 Fixes #4751
This commit introduces a new plugin framework into the codebase of the Mumble client. Note that "plugin" here really refers to a (more or less) general purpose plugin and is therefore not to be confused with the previously available positional data plugins (only responsible for fetching positional data from a running game and passing that to Mumble). The plugin interface is written in C, removing the compiler-dependence the old "plugins" had. Instead plugins can now be written in an arbitrary language as long as that language is capable of being compiled into a shared library and also being capable of being C-compatible. As already indicated a plugin is essentially a shared library that provides certain functions that allow Mumble to interface with it. Inside Mumble the so-called PluginManager is responsible for managing the plugins and relaying events to the respective callbacks. Plugins themselves can also interact with Mumble on their own initiative by using the provided API functions. Fixes mumble-voip#2455 Fixes mumble-voip#2148 Fixes mumble-voip#1594 Fixes mumble-voip#2051 Fixes mumble-voip#3742 Fixes mumble-voip#4575 Fixes mumble-voip#4751
First of all, thank you for providing such great software as open source.
Context
For some games it would be beneficial to enable the instrumentation of the positional audio parameters in the mumble client (Minimum distance, Bloom, Maximum distance and Minimum volume). Case in Point: The game "Among Us" with my mod. For example, different roles in the games would have larger or smaller communication distances.
Describe the feature you have in mind
Addition of the following RPC commands:
mumble.exe rpc pa_mindist <value>
mumble.exe rpc pa_bloom <value>
mumble.exe rpc pa_maxdist <value>
mumble.exe rpc pa_minvol <value>
Describe alternatives you've considered
The RPC command already supports muting an unmuting, which is very useful. But support could be even more immersive. Manually setting the values is cumbersome and relies on the players.
Additional context
I am open to discussion about the syntax of the commands. Additionally, if wanted, I propose the addition of a checkbox next to the "Headphones" one, called "Enable manual control", which would give the user to override the RPC commands, just like they are ably with muting / unmuting. When this checkbox is not active, all the sliders would be disabled and could only be controlled via RPC.
Contribution
I would be willing to implement this feature, however I first want to work out a version the project lead would approve and merge.
Looking forward to any feedback.
The text was updated successfully, but these errors were encountered: