Skip to content

Commit 6c81d76

Browse files
authored
Merge e05cc21 into 38efb1c
2 parents 38efb1c + e05cc21 commit 6c81d76

2 files changed

Lines changed: 35 additions & 13 deletions

File tree

source/audio/soundSplit.py

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,25 @@
2323
@unique
2424
class SoundSplitState(DisplayStringIntEnum):
2525
OFF = 0
26-
NVDA_LEFT_APPS_RIGHT = 1
27-
NVDA_LEFT_APPS_BOTH = 2
28-
NVDA_RIGHT_APPS_LEFT = 3
29-
NVDA_RIGHT_APPS_BOTH = 4
30-
NVDA_BOTH_APPS_LEFT = 5
31-
NVDA_BOTH_APPS_RIGHT = 6
26+
NVDA_BOTH_APPS_BOTH = 1
27+
NVDA_LEFT_APPS_RIGHT = 2
28+
NVDA_LEFT_APPS_BOTH = 3
29+
NVDA_RIGHT_APPS_LEFT = 4
30+
NVDA_RIGHT_APPS_BOTH = 5
31+
NVDA_BOTH_APPS_LEFT = 6
32+
NVDA_BOTH_APPS_RIGHT = 7
33+
3234

3335
@property
3436
def _displayStringLabels(self) -> dict[IntEnum, str]:
3537
return {
3638
# Translators: Sound split state
37-
SoundSplitState.OFF: pgettext("SoundSplit", "Disabled"),
39+
SoundSplitState.OFF: pgettext("SoundSplit", "Sound split disabled"),
40+
# Translators: Sound split state
41+
SoundSplitState.NVDA_BOTH_APPS_BOTH: pgettext(
42+
"SoundSplit",
43+
"NVDA in both channels and applications in both channels",
44+
),
3845
# Translators: Sound split state
3946
SoundSplitState.NVDA_LEFT_APPS_RIGHT: _("NVDA on the left and applications on the right"),
4047
# Translators: Sound split state
@@ -51,7 +58,11 @@ def _displayStringLabels(self) -> dict[IntEnum, str]:
5158

5259
def getAppVolume(self) -> VolumeTupleT:
5360
match self:
54-
case SoundSplitState.OFF | SoundSplitState.NVDA_LEFT_APPS_BOTH | SoundSplitState.NVDA_RIGHT_APPS_BOTH:
61+
case (
62+
SoundSplitState.NVDA_BOTH_APPS_BOTH
63+
| SoundSplitState.NVDA_LEFT_APPS_BOTH
64+
| SoundSplitState.NVDA_RIGHT_APPS_BOTH
65+
):
5566
return (1.0, 1.0)
5667
case SoundSplitState.NVDA_RIGHT_APPS_LEFT | SoundSplitState.NVDA_BOTH_APPS_LEFT:
5768
return (1.0, 0.0)
@@ -62,7 +73,11 @@ def getAppVolume(self) -> VolumeTupleT:
6273

6374
def getNVDAVolume(self) -> VolumeTupleT:
6475
match self:
65-
case SoundSplitState.OFF | SoundSplitState.NVDA_BOTH_APPS_LEFT | SoundSplitState.NVDA_BOTH_APPS_RIGHT:
76+
case (
77+
SoundSplitState.NVDA_BOTH_APPS_BOTH
78+
| SoundSplitState.NVDA_BOTH_APPS_LEFT
79+
| SoundSplitState.NVDA_BOTH_APPS_RIGHT
80+
):
6681
return (1.0, 1.0)
6782
case SoundSplitState.NVDA_LEFT_APPS_RIGHT | SoundSplitState.NVDA_LEFT_APPS_BOTH:
6883
return (1.0, 0.0)
@@ -93,7 +108,7 @@ def initialize() -> None:
93108
@atexit.register
94109
def terminate():
95110
if nvwave.usingWasapiWavePlayer():
96-
setSoundSplitState(SoundSplitState.OFF)
111+
setSoundSplitState(SoundSplitState.NVDA_BOTH_APPS_BOTH)
97112
unregisterCallback()
98113
else:
99114
log.debug("Skipping terminating sound split as WASAPI is disabled.")
@@ -154,6 +169,9 @@ def on_session_created(self, new_session: AudioSession):
154169

155170

156171
def setSoundSplitState(state: SoundSplitState) -> dict:
172+
if state == SoundSplitState.OFF:
173+
unregisterCallback()
174+
return
157175
leftVolume, rightVolume = state.getAppVolume()
158176
leftNVDAVolume, rightNVDAVolume = state.getNVDAVolume()
159177
volumeSetter = VolumeSetter(leftVolume, rightVolume, leftNVDAVolume, rightNVDAVolume)
@@ -177,11 +195,15 @@ def toggleSoundSplitState() -> None:
177195
try:
178196
i = allowedStates.index(state)
179197
except ValueError:
180-
# State not found, resetting to default (OFF)
198+
# State not found, resetting to default (NVDA_BOTH_APPS_BOTH)
181199
i = -1
182200
i = (i + 1) % len(allowedStates)
183201
newState = SoundSplitState(allowedStates[i])
184-
result = setSoundSplitState(newState)
202+
if newState == SoundSplitState.OFF:
203+
result = setSoundSplitState(SoundSplitState.NVDA_BOTH_APPS_BOTH)
204+
setSoundSplitState(newState)
205+
else:
206+
result = setSoundSplitState(newState)
185207
config.conf["audio"]["soundSplitState"] = newState.value
186208
ui.message(newState.displayString)
187209
if result["foundSessionWithNot2Channels"]:

source/config/configSpec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
audioAwakeTime = integer(default=30, min=0, max=3600)
5959
whiteNoiseVolume = integer(default=0, min=0, max=100)
6060
soundSplitState = integer(default=0)
61-
includedSoundSplitModes = int_list(default=list(0, 1, 2))
61+
includedSoundSplitModes = int_list(default=list(0, 2, 3))
6262
6363
# Braille settings
6464
[braille]

0 commit comments

Comments
 (0)