mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 17:00:13 +02:00
Merge pull request #15850 from zfox23/PTTAttenuationOption
BUGZ-858: Implement 'Reduce Other Volume While Pushing-to-Talk' option
This commit is contained in:
commit
8082ff8529
7 changed files with 141 additions and 24 deletions
|
@ -182,6 +182,7 @@ Flickable {
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: micControlsSwitchGroup
|
id: micControlsSwitchGroup
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
Layout.topMargin: simplifiedUI.margins.settings.settingsGroupTopMargin
|
Layout.topMargin: simplifiedUI.margins.settings.settingsGroupTopMargin
|
||||||
|
|
||||||
SimplifiedControls.Switch {
|
SimplifiedControls.Switch {
|
||||||
|
@ -205,6 +206,49 @@ Flickable {
|
||||||
AudioScriptingInterface.pushToTalkDesktop = !AudioScriptingInterface.pushToTalkDesktop;
|
AudioScriptingInterface.pushToTalkDesktop = !AudioScriptingInterface.pushToTalkDesktop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SimplifiedControls.Switch {
|
||||||
|
id: attenuateOutputSwitch
|
||||||
|
enabled: AudioScriptingInterface.pushToTalkDesktop
|
||||||
|
Layout.preferredHeight: 18
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
labelTextOn: "Reduce volume of other sounds while I'm pushing-to-talk"
|
||||||
|
checked: AudioScriptingInterface.pushingToTalkOutputGainDesktop !== 0.0
|
||||||
|
onClicked: {
|
||||||
|
if (AudioScriptingInterface.pushingToTalkOutputGainDesktop === 0.0) {
|
||||||
|
AudioScriptingInterface.pushingToTalkOutputGainDesktop = -20.0;
|
||||||
|
} else {
|
||||||
|
AudioScriptingInterface.pushingToTalkOutputGainDesktop = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SimplifiedControls.Slider {
|
||||||
|
id: muteOutputSlider
|
||||||
|
enabled: AudioScriptingInterface.pushToTalkDesktop && attenuateOutputSwitch.checked
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
Layout.preferredHeight: 18
|
||||||
|
labelText: "Amount to reduce"
|
||||||
|
from: 0.0
|
||||||
|
to: 60.0
|
||||||
|
defaultValue: 20.0
|
||||||
|
stepSize: 5.0
|
||||||
|
value: -1 * AudioScriptingInterface.pushingToTalkOutputGainDesktop
|
||||||
|
live: true
|
||||||
|
function updatePushingToTalkOutputGainDesktop(newValue) {
|
||||||
|
if (AudioScriptingInterface.pushingToTalkOutputGainDesktop !== newValue) {
|
||||||
|
AudioScriptingInterface.pushingToTalkOutputGainDesktop = newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onValueChanged: {
|
||||||
|
updatePushingToTalkOutputGainDesktop(-1 * value);
|
||||||
|
}
|
||||||
|
onPressedChanged: {
|
||||||
|
if (!pressed) {
|
||||||
|
updatePushingToTalkOutputGainDesktop(-1 * value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,6 +171,7 @@ Flickable {
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: micControlsSwitchGroup
|
id: micControlsSwitchGroup
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
Layout.topMargin: simplifiedUI.margins.settings.settingsGroupTopMargin
|
Layout.topMargin: simplifiedUI.margins.settings.settingsGroupTopMargin
|
||||||
|
|
||||||
SimplifiedControls.Switch {
|
SimplifiedControls.Switch {
|
||||||
|
|
|
@ -72,10 +72,14 @@ QtObject {
|
||||||
readonly property color border: "#00B4EF"
|
readonly property color border: "#00B4EF"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
readonly property QtObject text: QtObject {
|
||||||
|
readonly property color enabled: "#FFFFFF"
|
||||||
|
readonly property color disabled: "#8F8F8F"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
readonly property QtObject simplifiedSwitch: QtObject {
|
readonly property QtObject simplifiedSwitch: QtObject {
|
||||||
readonly property QtObject background: QtObject {
|
readonly property QtObject background: QtObject {
|
||||||
readonly property color disabled: "#616161"
|
readonly property color disabled: "#2B2B2B"
|
||||||
readonly property color off: "#616161"
|
readonly property color off: "#616161"
|
||||||
readonly property color hover: "#616161"
|
readonly property color hover: "#616161"
|
||||||
readonly property color pressed: "#616161"
|
readonly property color pressed: "#616161"
|
||||||
|
|
|
@ -44,7 +44,7 @@ Item {
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
horizontalAlignment: Text.AlignRight
|
horizontalAlignment: Text.AlignRight
|
||||||
visible: sliderText.text != ""
|
visible: sliderText.text != ""
|
||||||
color: simplifiedUI.colors.text.white
|
color: root.enabled ? simplifiedUI.colors.controls.slider.text.enabled : simplifiedUI.colors.controls.slider.text.disabled
|
||||||
size: simplifiedUI.sizes.controls.slider.labelTextSize
|
size: simplifiedUI.sizes.controls.slider.labelTextSize
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ Item {
|
||||||
innerSwitchHandle.color = simplifiedUI.colors.controls.simplifiedSwitch.handle.disabled;
|
innerSwitchHandle.color = simplifiedUI.colors.controls.simplifiedSwitch.handle.disabled;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (originalSwitch.checked) {
|
if (originalSwitch.checked) {
|
||||||
if (originalSwitch.hovered) {
|
if (originalSwitch.hovered) {
|
||||||
innerSwitchHandle.color = simplifiedUI.colors.controls.simplifiedSwitch.handle.hover;
|
innerSwitchHandle.color = simplifiedUI.colors.controls.simplifiedSwitch.handle.hover;
|
||||||
|
@ -69,6 +70,10 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onEnabledChanged: {
|
||||||
|
originalSwitch.changeColor();
|
||||||
|
}
|
||||||
|
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
originalSwitch.changeColor();
|
originalSwitch.changeColor();
|
||||||
}
|
}
|
||||||
|
@ -88,7 +93,8 @@ Item {
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
id: switchBackground
|
id: switchBackground
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
color: originalSwitch.checked ? simplifiedUI.colors.controls.simplifiedSwitch.background.on : simplifiedUI.colors.controls.simplifiedSwitch.background.off
|
color: originalSwitch.enabled ? (originalSwitch.checked ? simplifiedUI.colors.controls.simplifiedSwitch.background.on :
|
||||||
|
simplifiedUI.colors.controls.simplifiedSwitch.background.off) : simplifiedUI.colors.controls.simplifiedSwitch.background.disabled
|
||||||
width: originalSwitch.width
|
width: originalSwitch.width
|
||||||
height: simplifiedUI.sizes.controls.simplifiedSwitch.switchBackgroundHeight
|
height: simplifiedUI.sizes.controls.simplifiedSwitch.switchBackgroundHeight
|
||||||
radius: height/2
|
radius: height/2
|
||||||
|
@ -113,7 +119,7 @@ Item {
|
||||||
height: width
|
height: width
|
||||||
radius: width/2
|
radius: width/2
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.width: simplifiedUI.sizes.controls.simplifiedSwitch.switchHandleBorderSize
|
border.width: originalSwitch.enabled ? simplifiedUI.sizes.controls.simplifiedSwitch.switchHandleBorderSize : 0
|
||||||
border.color: simplifiedUI.colors.controls.simplifiedSwitch.handle.activeBorder
|
border.color: simplifiedUI.colors.controls.simplifiedSwitch.handle.activeBorder
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +130,7 @@ Item {
|
||||||
height: width
|
height: width
|
||||||
radius: width/2
|
radius: width/2
|
||||||
color: simplifiedUI.colors.controls.simplifiedSwitch.handle.off
|
color: simplifiedUI.colors.controls.simplifiedSwitch.handle.off
|
||||||
border.width: originalSwitch.pressed || originalSwitch.checked ? simplifiedUI.sizes.controls.simplifiedSwitch.switchHandleBorderSize : 0
|
border.width: (originalSwitch.pressed || originalSwitch.checked) && originalSwitch.enabled ? simplifiedUI.sizes.controls.simplifiedSwitch.switchHandleBorderSize : 0
|
||||||
border.color: originalSwitch.pressed ? simplifiedUI.colors.controls.simplifiedSwitch.handle.activeBorder : simplifiedUI.colors.controls.simplifiedSwitch.handle.checkedBorder
|
border.color: originalSwitch.pressed ? simplifiedUI.colors.controls.simplifiedSwitch.handle.activeBorder : simplifiedUI.colors.controls.simplifiedSwitch.handle.checkedBorder
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
|
@ -145,7 +151,7 @@ Item {
|
||||||
id: labelOff
|
id: labelOff
|
||||||
text: ""
|
text: ""
|
||||||
size: simplifiedUI.sizes.controls.simplifiedSwitch.labelTextSize
|
size: simplifiedUI.sizes.controls.simplifiedSwitch.labelTextSize
|
||||||
color: originalSwitch.checked ? simplifiedUI.colors.controls.simplifiedSwitch.text.off : simplifiedUI.colors.controls.simplifiedSwitch.text.on
|
color: originalSwitch.checked && !originalSwitch.enabled ? simplifiedUI.colors.controls.simplifiedSwitch.text.off : simplifiedUI.colors.controls.simplifiedSwitch.text.on
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.topMargin: -2 // Necessary for text alignment
|
anchors.topMargin: -2 // Necessary for text alignment
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
|
@ -193,7 +199,7 @@ Item {
|
||||||
id: labelOn
|
id: labelOn
|
||||||
text: ""
|
text: ""
|
||||||
size: simplifiedUI.sizes.controls.simplifiedSwitch.labelTextSize
|
size: simplifiedUI.sizes.controls.simplifiedSwitch.labelTextSize
|
||||||
color: originalSwitch.checked ? simplifiedUI.colors.controls.simplifiedSwitch.text.on : simplifiedUI.colors.controls.simplifiedSwitch.text.off
|
color: originalSwitch.checked && originalSwitch.enabled ? simplifiedUI.colors.controls.simplifiedSwitch.text.on : simplifiedUI.colors.controls.simplifiedSwitch.text.off
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.topMargin: -2 // Necessary for text alignment
|
anchors.topMargin: -2 // Necessary for text alignment
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
|
@ -366,8 +366,15 @@ void Audio::onContextChanged() {
|
||||||
void Audio::handlePushedToTalk(bool enabled) {
|
void Audio::handlePushedToTalk(bool enabled) {
|
||||||
if (getPTT()) {
|
if (getPTT()) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
|
if (!qApp->isHMDMode()) {
|
||||||
|
float gain = resultWithReadLock<float>([&] { return _pttOutputGainDesktop; });
|
||||||
|
// convert dB to amplitude
|
||||||
|
gain = fastExp2f(gain / 6.02059991f);
|
||||||
|
DependencyManager::get<AudioClient>()->setOutputGain(gain); // duck the output by N dB
|
||||||
|
}
|
||||||
setMuted(false);
|
setMuted(false);
|
||||||
} else {
|
} else {
|
||||||
|
DependencyManager::get<AudioClient>()->setOutputGain(1.0f);
|
||||||
setMuted(true);
|
setMuted(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -497,3 +504,29 @@ float Audio::getSystemInjectorGain() {
|
||||||
return _systemInjectorGain;
|
return _systemInjectorGain;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Audio::setPushingToTalkOutputGainDesktop(float gain) {
|
||||||
|
if (gain > 0.0f) {
|
||||||
|
qDebug() << "Denying attempt to set Pushing to Talk Output Gain above 0dB. Attempted value:" << gain;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool changed = false;
|
||||||
|
if (getPushingToTalkOutputGainDesktop() != gain) {
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
withWriteLock([&] {
|
||||||
|
if (_pttOutputGainDesktop != gain) {
|
||||||
|
_pttOutputGainDesktop = gain;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (changed) {
|
||||||
|
emit pushingToTalkOutputGainDesktopChanged(gain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float Audio::getPushingToTalkOutputGainDesktop() {
|
||||||
|
return resultWithReadLock<float>([&] { return _pttOutputGainDesktop; });
|
||||||
|
}
|
||||||
|
|
|
@ -66,10 +66,12 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable {
|
||||||
* @property {boolean} pushToTalkHMD - <code>true</code> if HMD push-to-talk is enabled, otherwise <code>false</code>.
|
* @property {boolean} pushToTalkHMD - <code>true</code> if HMD push-to-talk is enabled, otherwise <code>false</code>.
|
||||||
* @property {boolean} pushingToTalk - <code>true</code> if the user is currently pushing-to-talk, otherwise
|
* @property {boolean} pushingToTalk - <code>true</code> if the user is currently pushing-to-talk, otherwise
|
||||||
* <code>false</code>.
|
* <code>false</code>.
|
||||||
* @property {float} avatarGain - The gain (relative volume) that avatars' voices are played at. This gain is used at the server.
|
* @property {number} avatarGain - The gain (relative volume) that avatars' voices are played at. This gain is used at the server.
|
||||||
* @property {float} localInjectorGain - The gain (relative volume) that local injectors (local environment sounds) are played at.
|
* @property {number} localInjectorGain - The gain (relative volume) that local injectors (local environment sounds) are played at.
|
||||||
* @property {float} serverInjectorGain - The gain (relative volume) that server injectors (server environment sounds) are played at. This gain is used at the server.
|
* @property {number} serverInjectorGain - The gain (relative volume) that server injectors (server environment sounds) are played at. This gain is used at the server.
|
||||||
* @property {float} systemInjectorGain - The gain (relative volume) that system sounds are played at.
|
* @property {number} systemInjectorGain - The gain (relative volume) that system sounds are played at.
|
||||||
|
* @property {number} pushingToTalkOutputGainDesktop - The gain (relative volume) that all sounds are played at when the user is holding
|
||||||
|
* the push-to-talk key in Desktop mode.
|
||||||
*
|
*
|
||||||
* @comment The following properties are from AudioScriptingInterface.h.
|
* @comment The following properties are from AudioScriptingInterface.h.
|
||||||
* @property {boolean} isStereoInput - <code>true</code> if the input audio is being used in stereo, otherwise
|
* @property {boolean} isStereoInput - <code>true</code> if the input audio is being used in stereo, otherwise
|
||||||
|
@ -94,6 +96,8 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable {
|
||||||
Q_PROPERTY(bool pushToTalkDesktop READ getPTTDesktop WRITE setPTTDesktop NOTIFY pushToTalkDesktopChanged)
|
Q_PROPERTY(bool pushToTalkDesktop READ getPTTDesktop WRITE setPTTDesktop NOTIFY pushToTalkDesktopChanged)
|
||||||
Q_PROPERTY(bool pushToTalkHMD READ getPTTHMD WRITE setPTTHMD NOTIFY pushToTalkHMDChanged)
|
Q_PROPERTY(bool pushToTalkHMD READ getPTTHMD WRITE setPTTHMD NOTIFY pushToTalkHMDChanged)
|
||||||
Q_PROPERTY(bool pushingToTalk READ getPushingToTalk WRITE setPushingToTalk NOTIFY pushingToTalkChanged)
|
Q_PROPERTY(bool pushingToTalk READ getPushingToTalk WRITE setPushingToTalk NOTIFY pushingToTalkChanged)
|
||||||
|
Q_PROPERTY(float pushingToTalkOutputGainDesktop READ getPushingToTalkOutputGainDesktop
|
||||||
|
WRITE setPushingToTalkOutputGainDesktop NOTIFY pushingToTalkOutputGainDesktopChanged)
|
||||||
Q_PROPERTY(float avatarGain READ getAvatarGain WRITE setAvatarGain NOTIFY avatarGainChanged)
|
Q_PROPERTY(float avatarGain READ getAvatarGain WRITE setAvatarGain NOTIFY avatarGainChanged)
|
||||||
Q_PROPERTY(float localInjectorGain READ getLocalInjectorGain WRITE setLocalInjectorGain NOTIFY localInjectorGainChanged)
|
Q_PROPERTY(float localInjectorGain READ getLocalInjectorGain WRITE setLocalInjectorGain NOTIFY localInjectorGainChanged)
|
||||||
Q_PROPERTY(float serverInjectorGain READ getInjectorGain WRITE setInjectorGain NOTIFY serverInjectorGainChanged)
|
Q_PROPERTY(float serverInjectorGain READ getInjectorGain WRITE setInjectorGain NOTIFY serverInjectorGainChanged)
|
||||||
|
@ -197,14 +201,14 @@ public:
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Sets the gain (relative volume) that avatars' voices are played at. This gain is used at the server.
|
* Sets the gain (relative volume) that avatars' voices are played at. This gain is used at the server.
|
||||||
* @function Audio.setAvatarGain
|
* @function Audio.setAvatarGain
|
||||||
* @param {number} gain - Avatar gain (dB) at the server.
|
* @param {number} gain - The avatar gain (dB) at the server.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE void setAvatarGain(float gain);
|
Q_INVOKABLE void setAvatarGain(float gain);
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Gets the gain (relative volume) that avatars' voices are played at. This gain is used at the server.
|
* Gets the gain (relative volume) that avatars' voices are played at. This gain is used at the server.
|
||||||
* @function Audio.getAvatarGain
|
* @function Audio.getAvatarGain
|
||||||
* @returns {number} Avatar gain (dB) at the server.
|
* @returns {number} The avatar gain (dB) at the server.
|
||||||
* @example <caption>Report current audio gain settings.</caption>
|
* @example <caption>Report current audio gain settings.</caption>
|
||||||
* // 0 value = normal volume; -ve value = quieter; +ve value = louder.
|
* // 0 value = normal volume; -ve value = quieter; +ve value = louder.
|
||||||
* print("Avatar gain: " + Audio.getAvatarGain());
|
* print("Avatar gain: " + Audio.getAvatarGain());
|
||||||
|
@ -217,42 +221,42 @@ public:
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Sets the gain (relative volume) that environment sounds from the server are played at.
|
* Sets the gain (relative volume) that environment sounds from the server are played at.
|
||||||
* @function Audio.setInjectorGain
|
* @function Audio.setInjectorGain
|
||||||
* @param {number} gain - Injector gain (dB) at the server.
|
* @param {number} gain - The injector gain (dB) at the server.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE void setInjectorGain(float gain);
|
Q_INVOKABLE void setInjectorGain(float gain);
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Gets the gain (relative volume) that environment sounds from the server are played at.
|
* Gets the gain (relative volume) that environment sounds from the server are played at.
|
||||||
* @function Audio.getInjectorGain
|
* @function Audio.getInjectorGain
|
||||||
* @returns {number} Injector gain (dB) at the server.
|
* @returns {number} The injector gain (dB) at the server.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE float getInjectorGain();
|
Q_INVOKABLE float getInjectorGain();
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Sets the gain (relative volume) that environment sounds from the client are played at.
|
* Sets the gain (relative volume) that environment sounds from the client are played at.
|
||||||
* @function Audio.setLocalInjectorGain
|
* @function Audio.setLocalInjectorGain
|
||||||
* @param {number} gain - Injector gain (dB) in the client.
|
* @param {number} gain - The injector gain (dB) in the client.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE void setLocalInjectorGain(float gain);
|
Q_INVOKABLE void setLocalInjectorGain(float gain);
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Gets the gain (relative volume) that environment sounds from the client are played at.
|
* Gets the gain (relative volume) that environment sounds from the client are played at.
|
||||||
* @function Audio.getLocalInjectorGain
|
* @function Audio.getLocalInjectorGain
|
||||||
* @returns {number} Injector gain (dB) in the client.
|
* @returns {number} The injector gain (dB) in the client.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE float getLocalInjectorGain();
|
Q_INVOKABLE float getLocalInjectorGain();
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Sets the gain (relative volume) that system sounds are played at.
|
* Sets the gain (relative volume) that system sounds are played at.
|
||||||
* @function Audio.setSystemInjectorGain
|
* @function Audio.setSystemInjectorGain
|
||||||
* @param {number} gain - Injector gain (dB) in the client.
|
* @param {number} gain - The injector gain (dB) in the client.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE void setSystemInjectorGain(float gain);
|
Q_INVOKABLE void setSystemInjectorGain(float gain);
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Gets the gain (relative volume) that system sounds are played at.
|
* Gets the gain (relative volume) that system sounds are played at.
|
||||||
* @function Audio.getSystemInjectorGain
|
* @function Audio.getSystemInjectorGain
|
||||||
* @returns {number} Injector gain (dB) in the client.
|
* @returns {number} The injector gain (dB) in the client.
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE float getSystemInjectorGain();
|
Q_INVOKABLE float getSystemInjectorGain();
|
||||||
|
|
||||||
|
@ -290,6 +294,22 @@ public:
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE bool getRecording();
|
Q_INVOKABLE bool getRecording();
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* Sets the output volume gain that will be used when the user is holding the Push to Talk key.
|
||||||
|
* Should be negative.
|
||||||
|
* @function Audio.setPushingToTalkOutputGainDesktop
|
||||||
|
* @param {number} gain - The output volume gain (dB) while using PTT.
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE void setPushingToTalkOutputGainDesktop(float gain);
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* Gets the output volume gain that is used when the user is holding the Push to Talk key.
|
||||||
|
* Should be negative.
|
||||||
|
* @function Audio.getPushingToTalkOutputGainDesktop
|
||||||
|
* @returns {number} gain - The output volume gain (dB) while using PTT.
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE float getPushingToTalkOutputGainDesktop();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
|
@ -423,7 +443,7 @@ signals:
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Triggered when the avatar gain changes.
|
* Triggered when the avatar gain changes.
|
||||||
* @function Audio.avatarGainChanged
|
* @function Audio.avatarGainChanged
|
||||||
* @param {float} gain - The new avatar gain value.
|
* @param {number} gain - The new avatar gain value.
|
||||||
* @returns {Signal}
|
* @returns {Signal}
|
||||||
*/
|
*/
|
||||||
void avatarGainChanged(float gain);
|
void avatarGainChanged(float gain);
|
||||||
|
@ -431,7 +451,7 @@ signals:
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Triggered when the local injector gain changes.
|
* Triggered when the local injector gain changes.
|
||||||
* @function Audio.localInjectorGainChanged
|
* @function Audio.localInjectorGainChanged
|
||||||
* @param {float} gain - The new local injector gain value.
|
* @param {number} gain - The new local injector gain value.
|
||||||
* @returns {Signal}
|
* @returns {Signal}
|
||||||
*/
|
*/
|
||||||
void localInjectorGainChanged(float gain);
|
void localInjectorGainChanged(float gain);
|
||||||
|
@ -447,11 +467,19 @@ signals:
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* Triggered when the system injector gain changes.
|
* Triggered when the system injector gain changes.
|
||||||
* @function Audio.systemInjectorGainChanged
|
* @function Audio.systemInjectorGainChanged
|
||||||
* @param {float} gain - The new system injector gain value.
|
* @param {number} gain - The new system injector gain value.
|
||||||
* @returns {Signal}
|
* @returns {Signal}
|
||||||
*/
|
*/
|
||||||
void systemInjectorGainChanged(float gain);
|
void systemInjectorGainChanged(float gain);
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* Triggered when the push to talk gain changes.
|
||||||
|
* @function Audio.pushingToTalkOutputGainDesktopChanged
|
||||||
|
* @param {number} gain - The new output gain value.
|
||||||
|
* @returns {Signal}
|
||||||
|
*/
|
||||||
|
void pushingToTalkOutputGainDesktopChanged(float gain);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
|
@ -478,8 +506,9 @@ private:
|
||||||
bool _settingsLoaded { false };
|
bool _settingsLoaded { false };
|
||||||
float _inputVolume { 1.0f };
|
float _inputVolume { 1.0f };
|
||||||
float _inputLevel { 0.0f };
|
float _inputLevel { 0.0f };
|
||||||
float _localInjectorGain { 0.0f }; // in dB
|
float _localInjectorGain { 0.0f }; // in dB
|
||||||
float _systemInjectorGain { 0.0f }; // in dB
|
float _systemInjectorGain { 0.0f }; // in dB
|
||||||
|
float _pttOutputGainDesktop { -20.0f }; // in dB
|
||||||
bool _isClipping { false };
|
bool _isClipping { false };
|
||||||
bool _enableNoiseReduction { true }; // Match default value of AudioClient::_isNoiseGateEnabled.
|
bool _enableNoiseReduction { true }; // Match default value of AudioClient::_isNoiseGateEnabled.
|
||||||
bool _enableWarnWhenMuted { true };
|
bool _enableWarnWhenMuted { true };
|
||||||
|
|
Loading…
Reference in a new issue