mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-04-25 15:34:48 -05:00
Add temp variable support for audio condition
This commit is contained in:
parent
79961aabe4
commit
f89bb1a750
|
|
@ -1402,6 +1402,15 @@ AdvSceneSwitcher.tempVar.twitch.user_login.removeMod.description="The user login
|
||||||
AdvSceneSwitcher.tempVar.twitch.user_name.removeMod="User name"
|
AdvSceneSwitcher.tempVar.twitch.user_name.removeMod="User name"
|
||||||
AdvSceneSwitcher.tempVar.twitch.user_name.removeMod.description="The display name of the removed moderator."
|
AdvSceneSwitcher.tempVar.twitch.user_name.removeMod.description="The display name of the removed moderator."
|
||||||
|
|
||||||
|
AdvSceneSwitcher.tempVar.audio.output_volume="Output volume"
|
||||||
|
AdvSceneSwitcher.tempVar.audio.output_volume.description="The volume the audio source is outputting."
|
||||||
|
AdvSceneSwitcher.tempVar.audio.configured_volume="Configured volume"
|
||||||
|
AdvSceneSwitcher.tempVar.audio.configured_volume.description="The volume level configured for the source."
|
||||||
|
AdvSceneSwitcher.tempVar.audio.muted="Source muted"
|
||||||
|
AdvSceneSwitcher.tempVar.audio.sync_offset="Source audio sync offset"
|
||||||
|
AdvSceneSwitcher.tempVar.audio.monitor="Source audio monitor type"
|
||||||
|
AdvSceneSwitcher.tempVar.audio.balance="Source audio balance"
|
||||||
|
|
||||||
AdvSceneSwitcher.selectScene="--select scene--"
|
AdvSceneSwitcher.selectScene="--select scene--"
|
||||||
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
|
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
|
||||||
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,12 @@ const static std::map<MacroConditionAudio::VolumeCondition, std::string>
|
||||||
"AdvSceneSwitcher.condition.audio.state.unmute"},
|
"AdvSceneSwitcher.condition.audio.state.unmute"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void MacroConditionAudio::SetType(const Type &type)
|
||||||
|
{
|
||||||
|
_checkType = type;
|
||||||
|
SetupTempVars();
|
||||||
|
}
|
||||||
|
|
||||||
MacroConditionAudio::~MacroConditionAudio()
|
MacroConditionAudio::~MacroConditionAudio()
|
||||||
{
|
{
|
||||||
obs_volmeter_remove_callback(_volmeter, SetVolumeLevel, this);
|
obs_volmeter_remove_callback(_volmeter, SetVolumeLevel, this);
|
||||||
|
|
@ -74,6 +80,7 @@ bool MacroConditionAudio::CheckOutputCondition()
|
||||||
}
|
}
|
||||||
|
|
||||||
SetVariableValue(std::to_string(curVolume));
|
SetVariableValue(std::to_string(curVolume));
|
||||||
|
SetTempVarValue("output_volume", std::to_string(curVolume));
|
||||||
|
|
||||||
// Reset for next check
|
// Reset for next check
|
||||||
_peak = -std::numeric_limits<float>::infinity();
|
_peak = -std::numeric_limits<float>::infinity();
|
||||||
|
|
@ -118,6 +125,9 @@ bool MacroConditionAudio::CheckVolumeCondition()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetTempVarValue("configured_volume", std::to_string(curVolume));
|
||||||
|
SetTempVarValue("muted", muted ? "true" : "false");
|
||||||
|
|
||||||
obs_source_release(s);
|
obs_source_release(s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -137,6 +147,7 @@ bool MacroConditionAudio::CheckSyncOffset()
|
||||||
ret = curOffset < _syncOffset;
|
ret = curOffset < _syncOffset;
|
||||||
}
|
}
|
||||||
SetVariableValue(std::to_string(curOffset));
|
SetVariableValue(std::to_string(curOffset));
|
||||||
|
SetTempVarValue("sync_offset", std::to_string(curOffset));
|
||||||
obs_source_release(s);
|
obs_source_release(s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -151,6 +162,8 @@ bool MacroConditionAudio::CheckMonitor()
|
||||||
auto s = obs_weak_source_get_source(_audioSource.GetSource());
|
auto s = obs_weak_source_get_source(_audioSource.GetSource());
|
||||||
ret = obs_source_get_monitoring_type(s) == _monitorType;
|
ret = obs_source_get_monitoring_type(s) == _monitorType;
|
||||||
SetVariableValue("");
|
SetVariableValue("");
|
||||||
|
SetTempVarValue("monitor",
|
||||||
|
std::to_string(obs_source_get_monitoring_type(s)));
|
||||||
obs_source_release(s);
|
obs_source_release(s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -170,6 +183,7 @@ bool MacroConditionAudio::CheckBalance()
|
||||||
ret = curBalance < _balance;
|
ret = curBalance < _balance;
|
||||||
}
|
}
|
||||||
SetVariableValue(std::to_string(curBalance));
|
SetVariableValue(std::to_string(curBalance));
|
||||||
|
SetTempVarValue("balance", std::to_string(curBalance));
|
||||||
obs_source_release(s);
|
obs_source_release(s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -290,6 +304,50 @@ void MacroConditionAudio::ResetVolmeter()
|
||||||
_volmeter = AddVolmeterToSource(this, _audioSource.GetSource());
|
_volmeter = AddVolmeterToSource(this, _audioSource.GetSource());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MacroConditionAudio::SetupTempVars()
|
||||||
|
{
|
||||||
|
MacroCondition::SetupTempVars();
|
||||||
|
switch (_checkType) {
|
||||||
|
case Type::OUTPUT_VOLUME:
|
||||||
|
AddTempvar(
|
||||||
|
"output_volume",
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.output_volume"),
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.output_volume.description"));
|
||||||
|
break;
|
||||||
|
case Type::CONFIGURED_VOLUME:
|
||||||
|
AddTempvar(
|
||||||
|
"configured_volume",
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.configured_volume"),
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.configured_volume.description"));
|
||||||
|
AddTempvar("muted",
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.muted"));
|
||||||
|
break;
|
||||||
|
case Type::SYNC_OFFSET:
|
||||||
|
AddTempvar(
|
||||||
|
"sync_offset",
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.sync_offset"));
|
||||||
|
break;
|
||||||
|
case Type::MONITOR:
|
||||||
|
AddTempvar("monitor",
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.monitor"));
|
||||||
|
break;
|
||||||
|
case Type::BALANCE:
|
||||||
|
AddTempvar("balance",
|
||||||
|
obs_module_text(
|
||||||
|
"AdvSceneSwitcher.tempVar.audio.balance"));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline void populateCheckTypes(QComboBox *list)
|
static inline void populateCheckTypes(QComboBox *list)
|
||||||
{
|
{
|
||||||
list->clear();
|
list->clear();
|
||||||
|
|
@ -479,10 +537,9 @@ void MacroConditionAudioEdit::ConditionChanged(int cond)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto lock = LockContext();
|
auto lock = LockContext();
|
||||||
if (_entryData->_checkType ==
|
if (_entryData->GetType() == MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
||||||
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
_entryData->GetType() == MacroConditionAudio::Type::BALANCE ||
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::BALANCE ||
|
_entryData->GetType() == MacroConditionAudio::Type::SYNC_OFFSET) {
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::SYNC_OFFSET) {
|
|
||||||
_entryData->_outputCondition =
|
_entryData->_outputCondition =
|
||||||
static_cast<MacroConditionAudio::OutputCondition>(cond);
|
static_cast<MacroConditionAudio::OutputCondition>(cond);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -499,16 +556,15 @@ void MacroConditionAudioEdit::CheckTypeChanged(int idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto lock = LockContext();
|
auto lock = LockContext();
|
||||||
_entryData->_checkType = static_cast<MacroConditionAudio::Type>(
|
_entryData->SetType(static_cast<MacroConditionAudio::Type>(
|
||||||
_checkTypes->itemData(idx).toInt());
|
_checkTypes->itemData(idx).toInt()));
|
||||||
|
|
||||||
const QSignalBlocker b(_condition);
|
const QSignalBlocker b(_condition);
|
||||||
if (_entryData->_checkType ==
|
if (_entryData->GetType() == MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
||||||
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
_entryData->GetType() == MacroConditionAudio::Type::BALANCE ||
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::BALANCE ||
|
_entryData->GetType() == MacroConditionAudio::Type::SYNC_OFFSET) {
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::SYNC_OFFSET) {
|
|
||||||
populateOutputConditionSelection(_condition);
|
populateOutputConditionSelection(_condition);
|
||||||
} else if (_entryData->_checkType ==
|
} else if (_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::CONFIGURED_VOLUME) {
|
MacroConditionAudio::Type::CONFIGURED_VOLUME) {
|
||||||
populateVolumeConditionSelection(_condition);
|
populateVolumeConditionSelection(_condition);
|
||||||
}
|
}
|
||||||
|
|
@ -526,17 +582,16 @@ void MacroConditionAudioEdit::UpdateEntryData()
|
||||||
_syncOffset->SetValue(_entryData->_syncOffset);
|
_syncOffset->SetValue(_entryData->_syncOffset);
|
||||||
_monitorTypes->setCurrentIndex(_entryData->_monitorType);
|
_monitorTypes->setCurrentIndex(_entryData->_monitorType);
|
||||||
_balance->SetDoubleValue(_entryData->_balance);
|
_balance->SetDoubleValue(_entryData->_balance);
|
||||||
_checkTypes->setCurrentIndex(_checkTypes->findData(
|
_checkTypes->setCurrentIndex(
|
||||||
static_cast<int>(_entryData->_checkType)));
|
_checkTypes->findData(static_cast<int>(_entryData->GetType())));
|
||||||
|
|
||||||
if (_entryData->_checkType ==
|
if (_entryData->GetType() == MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
||||||
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
_entryData->GetType() == MacroConditionAudio::Type::BALANCE ||
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::BALANCE ||
|
_entryData->GetType() == MacroConditionAudio::Type::SYNC_OFFSET) {
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::SYNC_OFFSET) {
|
|
||||||
populateOutputConditionSelection(_condition);
|
populateOutputConditionSelection(_condition);
|
||||||
_condition->setCurrentIndex(
|
_condition->setCurrentIndex(
|
||||||
static_cast<int>(_entryData->_outputCondition));
|
static_cast<int>(_entryData->_outputCondition));
|
||||||
} else if (_entryData->_checkType ==
|
} else if (_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::CONFIGURED_VOLUME) {
|
MacroConditionAudio::Type::CONFIGURED_VOLUME) {
|
||||||
populateVolumeConditionSelection(_condition);
|
populateVolumeConditionSelection(_condition);
|
||||||
_condition->setCurrentIndex(
|
_condition->setCurrentIndex(
|
||||||
|
|
@ -554,9 +609,9 @@ void MacroConditionAudioEdit::SetWidgetVisibility()
|
||||||
}
|
}
|
||||||
|
|
||||||
_volume->setVisible(
|
_volume->setVisible(
|
||||||
_entryData->_checkType ==
|
_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
||||||
(_entryData->_checkType ==
|
(_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::CONFIGURED_VOLUME &&
|
MacroConditionAudio::Type::CONFIGURED_VOLUME &&
|
||||||
(_entryData->_volumeCondition ==
|
(_entryData->_volumeCondition ==
|
||||||
MacroConditionAudio::VolumeCondition::ABOVE ||
|
MacroConditionAudio::VolumeCondition::ABOVE ||
|
||||||
|
|
@ -565,20 +620,20 @@ void MacroConditionAudioEdit::SetWidgetVisibility()
|
||||||
_entryData->_volumeCondition ==
|
_entryData->_volumeCondition ==
|
||||||
MacroConditionAudio::VolumeCondition::BELOW)));
|
MacroConditionAudio::VolumeCondition::BELOW)));
|
||||||
_condition->setVisible(
|
_condition->setVisible(
|
||||||
_entryData->_checkType ==
|
_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
MacroConditionAudio::Type::OUTPUT_VOLUME ||
|
||||||
_entryData->_checkType ==
|
_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::CONFIGURED_VOLUME ||
|
MacroConditionAudio::Type::CONFIGURED_VOLUME ||
|
||||||
_entryData->_checkType == MacroConditionAudio::Type::BALANCE ||
|
_entryData->GetType() == MacroConditionAudio::Type::BALANCE ||
|
||||||
_entryData->_checkType ==
|
_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::SYNC_OFFSET);
|
MacroConditionAudio::Type::SYNC_OFFSET);
|
||||||
_syncOffset->setVisible(_entryData->_checkType ==
|
_syncOffset->setVisible(_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::SYNC_OFFSET);
|
MacroConditionAudio::Type::SYNC_OFFSET);
|
||||||
_monitorTypes->setVisible(_entryData->_checkType ==
|
_monitorTypes->setVisible(_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::MONITOR);
|
MacroConditionAudio::Type::MONITOR);
|
||||||
_balance->setVisible(_entryData->_checkType ==
|
_balance->setVisible(_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::BALANCE);
|
MacroConditionAudio::Type::BALANCE);
|
||||||
_volMeter->setVisible(_entryData->_checkType ==
|
_volMeter->setVisible(_entryData->GetType() ==
|
||||||
MacroConditionAudio::Type::OUTPUT_VOLUME);
|
MacroConditionAudio::Type::OUTPUT_VOLUME);
|
||||||
adjustSize();
|
adjustSize();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ public:
|
||||||
MONITOR,
|
MONITOR,
|
||||||
BALANCE,
|
BALANCE,
|
||||||
};
|
};
|
||||||
|
void SetType(const Type &);
|
||||||
|
Type GetType() const { return _checkType; }
|
||||||
|
|
||||||
enum class OutputCondition {
|
enum class OutputCondition {
|
||||||
ABOVE,
|
ABOVE,
|
||||||
|
|
@ -56,7 +58,6 @@ public:
|
||||||
NumberVariable<int> _syncOffset = 0;
|
NumberVariable<int> _syncOffset = 0;
|
||||||
obs_monitoring_type _monitorType = OBS_MONITORING_TYPE_NONE;
|
obs_monitoring_type _monitorType = OBS_MONITORING_TYPE_NONE;
|
||||||
NumberVariable<double> _balance = 0.5;
|
NumberVariable<double> _balance = 0.5;
|
||||||
Type _checkType = Type::OUTPUT_VOLUME;
|
|
||||||
OutputCondition _outputCondition = OutputCondition::ABOVE;
|
OutputCondition _outputCondition = OutputCondition::ABOVE;
|
||||||
VolumeCondition _volumeCondition = VolumeCondition::ABOVE;
|
VolumeCondition _volumeCondition = VolumeCondition::ABOVE;
|
||||||
obs_volmeter_t *_volmeter = nullptr;
|
obs_volmeter_t *_volmeter = nullptr;
|
||||||
|
|
@ -67,7 +68,9 @@ private:
|
||||||
bool CheckSyncOffset();
|
bool CheckSyncOffset();
|
||||||
bool CheckMonitor();
|
bool CheckMonitor();
|
||||||
bool CheckBalance();
|
bool CheckBalance();
|
||||||
|
void SetupTempVars();
|
||||||
|
|
||||||
|
Type _checkType = Type::OUTPUT_VOLUME;
|
||||||
float _peak = -std::numeric_limits<float>::infinity();
|
float _peak = -std::numeric_limits<float>::infinity();
|
||||||
static bool _registered;
|
static bool _registered;
|
||||||
static const std::string id;
|
static const std::string id;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user