From 26e68900aa057175532b81ebe09bffa33499a794 Mon Sep 17 00:00:00 2001 From: Onyx and Iris <75868496+onyx-and-iris@users.noreply.github.com> Date: Tue, 6 Jan 2026 04:38:07 +0000 Subject: [PATCH] expand on_mdirty to provide callback logic/logging. --- duckypad_twitch/audio.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/duckypad_twitch/audio.py b/duckypad_twitch/audio.py index bf39058..42ef9f5 100644 --- a/duckypad_twitch/audio.py +++ b/duckypad_twitch/audio.py @@ -44,10 +44,34 @@ class Audio(ILayer): self.vm.button[button].stateonly = getattr(AudioState, button.name) def on_mdirty(self): - """Handle Voicemeeter dirty event""" + """Callback for Voicemeeter mdirty events. + + + This method keeps the DuckyPad state in sync with changes made from the Stream Deck""" self.logger.debug('Voicemeeter state changed (mdirty event)') for button in Buttons: - setattr(self.state, button.name, self.vm.button[button].stateonly) + current_value = self.vm.button[button].stateonly + if getattr(self.state, button.name) != current_value: + match button.name: + case 'mute_mics': + if current_value: + self.logger.info('Mics Muted') + else: + self.logger.info('Mics Unmuted') + case 'only_discord': + if current_value: + self.mixer.strip[XAirStrips.comms].send[XAirBuses.stream_mix].level = -90 + self.logger.info('Only Discord Enabled') + else: + self.mixer.strip[XAirStrips.comms].send[XAirBuses.stream_mix].level = -24 + self.logger.info('Only Discord Disabled') + case 'only_stream': + if current_value: + self.logger.info('Only Stream Enabled') + else: + self.logger.info('Only Stream Disabled') + + setattr(self.state, button.name, current_value) def mute_mics(self): self.state.mute_mics = not self.state.mute_mics