diff --git a/controller.py b/controller.py index 6f4f586c..599963e3 100644 --- a/controller.py +++ b/controller.py @@ -858,6 +858,7 @@ def callbackSetEnableAutoExportMessageLogs(value): def callbackSetEnableVrcMicMuteSync(value): print("callbackSetEnableVrcMicMuteSync", value) config.ENABLE_VRC_MIC_MUTE_SYNC = value + model.changePutQueueMicAudio() def callbackSetEnableSendMessageToVrc(value): print("callbackSetEnableSendMessageToVrc", value) diff --git a/model.py b/model.py index fe38fe02..2cdbd49b 100644 --- a/model.py +++ b/model.py @@ -223,25 +223,24 @@ class Model: def oscSendMessage(message): sendMessage(message, config.OSC_IP_ADDRESS, config.OSC_PORT) + @staticmethod + def getMuteSelfStatus(): + return getOSCParameterValue(address="/avatar/parameters/MuteSelf") + def startReceiveOSC(self): osc_parameter_prefix = "/avatar/parameters/" param_MuteSelf = "MuteSelf" - self.mute_status = getOSCParameterValue(address=osc_parameter_prefix + param_MuteSelf) + self.mute_status = self.getMuteSelfStatus() def change_handler_mute(address, osc_arguments): - if config.ENABLE_VRC_MIC_MUTE_SYNC is True: - if osc_arguments is True and self.mute_status is False: + if osc_arguments is True and self.mute_status is False: + self.mute_status = True + if config.ENABLE_VRC_MIC_MUTE_SYNC is True: self.stopPutQueueMicAudio() - self.mute_status = True - elif osc_arguments is False and self.mute_status is True: + elif osc_arguments is False and self.mute_status is True: + self.mute_status = False + if config.ENABLE_VRC_MIC_MUTE_SYNC is True: self.startPutQueueMicAudio() - self.mute_status = False - - def change_handler_voice(address, osc_arguments): - if config.ENABLE_VRC_MIC_MUTE_SYNC is True: - if self.mute_status is True: - self.startPutQueueMicAudio() - self.mute_status = False dict_filter_and_target = { osc_parameter_prefix + param_MuteSelf: change_handler_mute, @@ -328,8 +327,7 @@ class Model: self.mic_audio_queue = ConditionalQueue() # self.mic_energy_queue = ConditionalQueue() - if config.ENABLE_MUTE_DETECT is True and self.mute_status is True: - model.stopPutQueueMicAudio() + self.changePutQueueMicAudio() mic_device = choice_mic_device[0] record_timeout = config.INPUT_MIC_RECORD_TIMEOUT @@ -402,6 +400,15 @@ class Model: self.mic_audio_queue.get() # self.mic_energy_queue.set_flag(False) + def changePutQueueMicAudio(self): + if config.ENABLE_VRC_MIC_MUTE_SYNC is True: + if self.mute_status is True: + self.stopPutQueueMicAudio() + else: + self.startPutQueueMicAudio() + else: + self.startPutQueueMicAudio() + def stopMicTranscript(self): if isinstance(self.mic_print_transcript, threadFnc): self.mic_print_transcript.stop()