@@ -155,6 +155,12 @@ def on_session_created(self, new_session: AudioSession):
155155
156156def setSoundSplitState (state : SoundSplitState ) -> dict :
157157 leftVolume , rightVolume = state .getAppVolume ()
158+ appsVolume = (
159+ config .conf ["audio" ]["applicationsSoundVolume" ] / 100
160+ * (1 - int (config .conf ["audio" ]["applicationsMuted" ]))
161+ )
162+ leftVolume *= appsVolume
163+ rightVolume *= appsVolume
158164 leftNVDAVolume , rightNVDAVolume = state .getNVDAVolume ()
159165 volumeSetter = VolumeSetter (leftVolume , rightVolume , leftNVDAVolume , rightNVDAVolume )
160166 applyToAllAudioSessions (volumeSetter )
@@ -163,7 +169,7 @@ def setSoundSplitState(state: SoundSplitState) -> dict:
163169 }
164170
165171
166- def toggleSoundSplitState ( ) -> None :
172+ def updateSoundSplitState ( increment : int | None = None ) -> None :
167173 if not nvwave .usingWasapiWavePlayer ():
168174 message = _ (
169175 # Translators: error message when wasapi is turned off.
@@ -173,17 +179,21 @@ def toggleSoundSplitState() -> None:
173179 ui .message (message )
174180 return
175181 state = SoundSplitState (config .conf ["audio" ]["soundSplitState" ])
176- allowedStates : list [int ] = config .conf ["audio" ]["includedSoundSplitModes" ]
177- try :
178- i = allowedStates .index (state )
179- except ValueError :
180- # State not found, resetting to default (OFF)
181- i = - 1
182- i = (i + 1 ) % len (allowedStates )
183- newState = SoundSplitState (allowedStates [i ])
182+ if increment is None :
183+ newState = state
184+ else :
185+ allowedStates : list [int ] = config .conf ["audio" ]["includedSoundSplitModes" ]
186+ try :
187+ i = allowedStates .index (state )
188+ except ValueError :
189+ # State not found, resetting to default (OFF)
190+ i = - 1
191+ i = (i + increment ) % len (allowedStates )
192+ newState = SoundSplitState (allowedStates [i ])
184193 result = setSoundSplitState (newState )
185194 config .conf ["audio" ]["soundSplitState" ] = newState .value
186- ui .message (newState .displayString )
195+ if increment is not None :
196+ ui .message (newState .displayString )
187197 if result ["foundSessionWithNot2Channels" ]:
188198 msg = _ (
189199 # Translators: warning message when sound split trigger wasn't successful due to one of audio sessions
@@ -192,3 +202,7 @@ def toggleSoundSplitState() -> None:
192202 "one of audio sessions is either mono, or has more than 2 audio channels."
193203 )
194204 ui .message (msg )
205+
206+
207+ def toggleSoundSplitState () -> None :
208+ updateSoundSplitState (increment = 1 )
0 commit comments