mirror of
https://github.com/onyx-and-iris/nvda-voicemeeter.git
synced 2026-04-07 09:53:35 +00:00
Compare commits
5 Commits
v.0.2.1.b1
...
v.0.2.2.a1
| Author | SHA1 | Date | |
|---|---|---|---|
| 645361c731 | |||
| 6baa0000c8 | |||
| d722154325 | |||
| c94d763569 | |||
| ac14b7ad0d |
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "nvda_voicemeeter"
|
||||
version = "0.2.1b1"
|
||||
version = "0.2.2a1"
|
||||
description = "A Voicemeeter app compatible with NVDA"
|
||||
authors = [
|
||||
{ name = "onyx-and-iris", email = "code@onyxandiris.online" },
|
||||
|
||||
@@ -48,12 +48,8 @@ class NVDAVMWindow(psg.Window):
|
||||
[self[f"PATCH COMPOSITE||PC{i + 1}"].Widget.config(**buttonmenu_opts) for i in range(self.kind.phys_out)]
|
||||
slider_opts = {"takefocus": 1, "highlightthickness": 1}
|
||||
for i in range(self.kind.num_strip):
|
||||
if i < self.kind.phys_in:
|
||||
for param in util.get_slider_params(i, self.vm):
|
||||
self[f"STRIP {i}||SLIDER {param}"].Widget.config(**slider_opts)
|
||||
else:
|
||||
for param in ("BASS", "MID", "TREBLE"):
|
||||
self[f"STRIP {i}||SLIDER {param}"].Widget.config(**slider_opts)
|
||||
for param in util.get_slider_params(i, self.vm):
|
||||
self[f"STRIP {i}||SLIDER {param}"].Widget.config(**slider_opts)
|
||||
self[f"STRIP {i}||SLIDER GAIN"].Widget.config(**slider_opts)
|
||||
if self.kind.name != "basic":
|
||||
self[f"STRIP {i}||SLIDER LIMIT"].Widget.config(**slider_opts)
|
||||
@@ -109,6 +105,15 @@ class NVDAVMWindow(psg.Window):
|
||||
self[f"{key}||SLIDER"].update(value=value)
|
||||
for i in range(self.kind.num_strip):
|
||||
self[f"STRIP {i}||SLIDER GAIN"].update(value=self.vm.strip[i].gain)
|
||||
if self.kind.name != "basic":
|
||||
self[f"STRIP {i}||SLIDER LIMIT"].update(value=self.vm.strip[i].limit)
|
||||
for param in util.get_slider_params(i, self.vm):
|
||||
if param in ("AUDIBILITY", "BASS", "MID", "TREBLE"):
|
||||
val = getattr(self.vm.strip[i], param.lower())
|
||||
else:
|
||||
target = getattr(self.vm.strip[i], param.lower())
|
||||
val = target.knob
|
||||
self[f"STRIP {i}||SLIDER {param}"].update(value=val)
|
||||
for i in range(self.kind.num_bus):
|
||||
self[f"BUS {i}||SLIDER GAIN"].update(value=self.vm.bus[i].gain)
|
||||
if self.kind.name != "basic":
|
||||
@@ -132,6 +137,8 @@ class NVDAVMWindow(psg.Window):
|
||||
self.bind("<Control-KeyPress-Tab>", "CTRL-TAB")
|
||||
self.bind("<Control-Shift-KeyPress-Tab>", "CTRL-SHIFT-TAB")
|
||||
self.bind("<Control-a>", "CTRL-A")
|
||||
for i in range(1, 10):
|
||||
self.bind(f"<Control-Key-{i}>", f"CTRL-{i}")
|
||||
|
||||
# Hardware In
|
||||
for i in range(self.vm.kind.phys_in):
|
||||
@@ -211,6 +218,7 @@ class NVDAVMWindow(psg.Window):
|
||||
self[f"STRIP {i}||SLIDER {param}"].bind("<Shift-KeyPress-Down>", "||KEY SHIFT DOWN")
|
||||
self[f"STRIP {i}||SLIDER {param}"].bind("<Control-KeyPress-Up>", "||KEY CTRL UP")
|
||||
self[f"STRIP {i}||SLIDER {param}"].bind("<Control-KeyPress-Down>", "||KEY CTRL DOWN")
|
||||
self[f"STRIP {i}||SLIDER {param}"].bind("<Control-Shift-KeyPress-R>", "||KEY CTRL SHIFT R")
|
||||
|
||||
# Bus Params
|
||||
params = ["MONO", "EQ", "MUTE", "MODE"]
|
||||
@@ -237,6 +245,7 @@ class NVDAVMWindow(psg.Window):
|
||||
self[f"BUS {i}||SLIDER GAIN"].bind("<Shift-KeyPress-Down>", "||KEY SHIFT DOWN")
|
||||
self[f"BUS {i}||SLIDER GAIN"].bind("<Control-KeyPress-Up>", "||KEY CTRL UP")
|
||||
self[f"BUS {i}||SLIDER GAIN"].bind("<Control-KeyPress-Down>", "||KEY CTRL DOWN")
|
||||
self[f"BUS {i}||SLIDER GAIN"].bind("<Control-Shift-KeyPress-R>", "||KEY CTRL SHIFT R")
|
||||
|
||||
def popup_save_as(self, message, title=None, initial_folder=None):
|
||||
layout = [
|
||||
@@ -406,6 +415,35 @@ class NVDAVMWindow(psg.Window):
|
||||
self["tabgroup"].set_focus()
|
||||
self.nvda.speak(f"{values['tabgroup']}")
|
||||
|
||||
# Quick Navigation
|
||||
case ["CTRL-1" | "CTRL-2" | "CTRL-3" | "CTRL-4" | "CTRL-5" | "CTRL-6" | "CTRL-7" | "CTRL-8" as bind]:
|
||||
key, index = bind.split("-")
|
||||
match values["tabgroup"]:
|
||||
case "tab||Physical Strip":
|
||||
self[f"STRIP {int(index) - 1}||A1"].set_focus()
|
||||
if (
|
||||
self.find_element_with_focus() is None
|
||||
or self.find_element_with_focus().Key != f"STRIP {int(index) - 1}||A1"
|
||||
):
|
||||
self[f"STRIP {int(index) - 1}||SLIDER GAIN"].set_focus()
|
||||
case "tab||Virtual Strip":
|
||||
index = int(index) + self.kind.phys_in
|
||||
if index > self.kind.num_strip:
|
||||
continue
|
||||
self[f"STRIP {index - 1}||A1"].set_focus()
|
||||
if (
|
||||
self.find_element_with_focus() is None
|
||||
or self.find_element_with_focus().Key != f"STRIP {int(index) - 1}||A1"
|
||||
):
|
||||
self[f"STRIP {int(index) - 1}||SLIDER GAIN"].set_focus()
|
||||
case "tab||Buses":
|
||||
self[f"BUS {int(index) - 1}||MONO"].set_focus()
|
||||
if (
|
||||
self.find_element_with_focus() is None
|
||||
or self.find_element_with_focus().Key != f"BUS {int(index) - 1}||MONO"
|
||||
):
|
||||
self[f"BUS {int(index) - 1}||SLIDER GAIN"].set_focus()
|
||||
|
||||
# Rename popups
|
||||
case ["F2:113"]:
|
||||
tab = values["tabgroup"]
|
||||
@@ -723,9 +761,7 @@ class NVDAVMWindow(psg.Window):
|
||||
self.vm.event.pdirty = False
|
||||
label = self.cache["labels"][f"STRIP {index}||LABEL"]
|
||||
val = values[f"STRIP {index}||SLIDER {param}"]
|
||||
if param == "LIMIT":
|
||||
val = int(val)
|
||||
self.nvda.speak(f"{label} {param} slider {val}")
|
||||
self.nvda.speak(f"{label} {param} slider {int(val) if param == 'LIMIT' else val}")
|
||||
case [
|
||||
["STRIP", index],
|
||||
[
|
||||
@@ -900,6 +936,23 @@ class NVDAVMWindow(psg.Window):
|
||||
case "LIMIT":
|
||||
self.vm.strip[int(index)].limit = util.check_bounds(val, (-40, 12))
|
||||
self[f"STRIP {index}||SLIDER {param}"].update(value=util.check_bounds(val, (-40, 12)))
|
||||
case [["STRIP", index], ["SLIDER", param], ["KEY", "CTRL", "SHIFT", "R"]]:
|
||||
match param:
|
||||
case "GAIN":
|
||||
self.vm.strip[int(index)].gain = 0
|
||||
self[f"STRIP {index}||SLIDER {param}"].update(value=0)
|
||||
case "COMP" | "GATE" | "DENOISER":
|
||||
setattr(target, "knob", 0)
|
||||
self[f"STRIP {index}||SLIDER {param}"].update(value=0)
|
||||
case "AUDIBILITY":
|
||||
self.vm.strip[int(index)].audibility = 0
|
||||
self[f"STRIP {index}||SLIDER {param}"].update(value=0)
|
||||
case "BASS" | "MID" | "TREBLE":
|
||||
setattr(self.vm.strip[int(index)], param.lower(), 0)
|
||||
self[f"STRIP {index}||SLIDER {param}"].update(value=0)
|
||||
case "LIMIT":
|
||||
self.vm.strip[int(index)].limit = 12
|
||||
self[f"STRIP {index}||SLIDER {param}"].update(value=12)
|
||||
|
||||
# Bus Params
|
||||
case [["BUS", index], [param]]:
|
||||
@@ -1009,6 +1062,9 @@ class NVDAVMWindow(psg.Window):
|
||||
val -= 0.1
|
||||
self.vm.bus[int(index)].gain = util.check_bounds(val, (-60, 12))
|
||||
self[f"BUS {index}||SLIDER GAIN"].update(value=val)
|
||||
case [["BUS", index], ["SLIDER", "GAIN"], ["KEY", "CTRL", "SHIFT", "R"]]:
|
||||
self.vm.bus[int(index)].gain = 0
|
||||
self[f"BUS {index}||SLIDER GAIN"].update(value=0)
|
||||
|
||||
# Unknown
|
||||
case _:
|
||||
|
||||
Reference in New Issue
Block a user