mirror of
https://github.com/onyx-and-iris/nvda-voicemeeter.git
synced 2025-04-19 20:13:46 +01:00
Compare commits
5 Commits
14c6b937d1
...
bfdc0306e3
Author | SHA1 | Date | |
---|---|---|---|
bfdc0306e3 | |||
245476adfd | |||
2562c02b7e | |||
aaa2c72668 | |||
7648b68b85 |
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "nvda_voicemeeter"
|
name = "nvda_voicemeeter"
|
||||||
version = "0.1.3"
|
version = "0.2.0"
|
||||||
description = "A Voicemeeter app compatible with NVDA"
|
description = "A Voicemeeter app compatible with NVDA"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "onyx-and-iris", email = "code@onyxandiris.online" },
|
{ name = "onyx-and-iris", email = "code@onyxandiris.online" },
|
||||||
|
@ -102,8 +102,6 @@ class Builder:
|
|||||||
"""tab0 row1 represents hardware outs"""
|
"""tab0 row1 represents hardware outs"""
|
||||||
|
|
||||||
def add_physical_device_opts(layout):
|
def add_physical_device_opts(layout):
|
||||||
devices = get_output_device_list(self.vm)
|
|
||||||
devices.append("- remove device selection -")
|
|
||||||
if self.kind.name == "basic":
|
if self.kind.name == "basic":
|
||||||
num_outs = self.kind.phys_out + self.kind.virt_out
|
num_outs = self.kind.phys_out + self.kind.virt_out
|
||||||
else:
|
else:
|
||||||
@ -113,7 +111,7 @@ class Builder:
|
|||||||
psg.ButtonMenu(
|
psg.ButtonMenu(
|
||||||
f"A{i + 1}",
|
f"A{i + 1}",
|
||||||
size=(6, 3),
|
size=(6, 3),
|
||||||
menu_def=["", devices],
|
menu_def=["", get_output_device_list(i, self.vm)],
|
||||||
key=f"HARDWARE OUT||A{i + 1}",
|
key=f"HARDWARE OUT||A{i + 1}",
|
||||||
)
|
)
|
||||||
for i in range(num_outs)
|
for i in range(num_outs)
|
||||||
|
@ -13,12 +13,32 @@ def get_insert_checkbox_index(kind, channel, num) -> int:
|
|||||||
return (2 * kind.phys_in) + (8 * (num - kind.phys_in - 1)) + channel
|
return (2 * kind.phys_in) + (8 * (num - kind.phys_in - 1)) + channel
|
||||||
|
|
||||||
|
|
||||||
|
_rejected_ids = (
|
||||||
|
"VBAudio100VMVAIO3",
|
||||||
|
"{F5735BD4-6EAF-4758-9710-9886E5AD0FF3}",
|
||||||
|
"{0239BE07-CEEF-4236-A900-AA778D432FD4}",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_input_device_list(vm) -> list:
|
def get_input_device_list(vm) -> list:
|
||||||
return ["{type}: {name}".format(**vm.device.input(i)) for i in range(vm.device.ins)]
|
devices = []
|
||||||
|
for j in range(vm.device.ins):
|
||||||
|
device = vm.device.input(j)
|
||||||
|
if device["id"] not in _rejected_ids:
|
||||||
|
devices.append("{type}: {name}".format(**device))
|
||||||
|
return devices
|
||||||
|
|
||||||
|
|
||||||
def get_output_device_list(vm) -> list:
|
def get_output_device_list(i, vm) -> list:
|
||||||
return ["{type}: {name}".format(**vm.device.output(i)) for i in range(vm.device.outs)]
|
devices = []
|
||||||
|
for j in range(vm.device.outs):
|
||||||
|
device = vm.device.output(j)
|
||||||
|
if device["id"] not in _rejected_ids:
|
||||||
|
devices.append("{type}: {name}".format(**device))
|
||||||
|
if i == 0:
|
||||||
|
return devices
|
||||||
|
devices.append("- remove device selection -")
|
||||||
|
return [device for device in devices if not device.startswith("asio")]
|
||||||
|
|
||||||
|
|
||||||
def get_patch_composite_list(kind) -> list:
|
def get_patch_composite_list(kind) -> list:
|
||||||
|
@ -168,6 +168,7 @@ class NVDAVMWindow(psg.Window):
|
|||||||
|
|
||||||
# Advanced Settings
|
# Advanced Settings
|
||||||
if self.kind.name != "basic":
|
if self.kind.name != "basic":
|
||||||
|
self["ADVANCED SETTINGS"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
self["ADVANCED SETTINGS"].bind("<Return>", "||KEY ENTER")
|
self["ADVANCED SETTINGS"].bind("<Return>", "||KEY ENTER")
|
||||||
|
|
||||||
# Strip Params
|
# Strip Params
|
||||||
@ -297,8 +298,11 @@ class NVDAVMWindow(psg.Window):
|
|||||||
]
|
]
|
||||||
return psg.Frame("BUFFERING", buffer)
|
return psg.Frame("BUFFERING", buffer)
|
||||||
|
|
||||||
buffer_frame = _make_buffering_frame()
|
layout = []
|
||||||
layout = [[buffer_frame], [psg.Button("Exit")]]
|
steps = (_make_buffering_frame,)
|
||||||
|
for step in steps:
|
||||||
|
layout.append([step()])
|
||||||
|
layout.append([psg.Button("Exit", size=(8, 2))])
|
||||||
|
|
||||||
window = psg.Window(title, layout, finalize=True)
|
window = psg.Window(title, layout, finalize=True)
|
||||||
buttonmenu_opts = {"takefocus": 1, "highlightthickness": 1}
|
buttonmenu_opts = {"takefocus": 1, "highlightthickness": 1}
|
||||||
@ -318,6 +322,11 @@ class NVDAVMWindow(psg.Window):
|
|||||||
match parsed_cmd := self.parser.match.parseString(event):
|
match parsed_cmd := self.parser.match.parseString(event):
|
||||||
case ["BUFFER MME" | "BUFFER WDM" | "BUFFER KS" | "BUFFER ASIO"]:
|
case ["BUFFER MME" | "BUFFER WDM" | "BUFFER KS" | "BUFFER ASIO"]:
|
||||||
if values[event] == "Default":
|
if values[event] == "Default":
|
||||||
|
if "MME" in event:
|
||||||
|
val = 1024
|
||||||
|
elif "WDM" in event or "KS" in event:
|
||||||
|
val = 512
|
||||||
|
else:
|
||||||
val = 0
|
val = 0
|
||||||
else:
|
else:
|
||||||
val = int(values[event])
|
val = int(values[event])
|
||||||
@ -459,7 +468,7 @@ class NVDAVMWindow(psg.Window):
|
|||||||
setattr(self.vm.strip[index].device, "wdm", "")
|
setattr(self.vm.strip[index].device, "wdm", "")
|
||||||
self.TKroot.after(200, self.nvda.speak, f"HARDWARE IN {key} device selection removed")
|
self.TKroot.after(200, self.nvda.speak, f"HARDWARE IN {key} device selection removed")
|
||||||
case [driver, device_name]:
|
case [driver, device_name]:
|
||||||
setattr(self.vm.strip[index].device, driver, device_name.strip())
|
setattr(self.vm.strip[index].device, driver, device_name.lstrip())
|
||||||
phonetic = {"mme": "em em e"}
|
phonetic = {"mme": "em em e"}
|
||||||
self.TKroot.after(
|
self.TKroot.after(
|
||||||
200,
|
200,
|
||||||
@ -480,7 +489,7 @@ class NVDAVMWindow(psg.Window):
|
|||||||
setattr(self.vm.bus[index].device, "wdm", "")
|
setattr(self.vm.bus[index].device, "wdm", "")
|
||||||
self.TKroot.after(200, self.nvda.speak, f"HARDWARE OUT {key} device selection removed")
|
self.TKroot.after(200, self.nvda.speak, f"HARDWARE OUT {key} device selection removed")
|
||||||
case [driver, device_name]:
|
case [driver, device_name]:
|
||||||
setattr(self.vm.bus[index].device, driver, device_name.strip())
|
setattr(self.vm.bus[index].device, driver, device_name.lstrip())
|
||||||
phonetic = {"mme": "em em e"}
|
phonetic = {"mme": "em em e"}
|
||||||
self.TKroot.after(
|
self.TKroot.after(
|
||||||
200,
|
200,
|
||||||
@ -546,7 +555,10 @@ class NVDAVMWindow(psg.Window):
|
|||||||
|
|
||||||
# Advanced Settings
|
# Advanced Settings
|
||||||
case ["ADVANCED SETTINGS"] | ["CTRL-A"]:
|
case ["ADVANCED SETTINGS"] | ["CTRL-A"]:
|
||||||
|
if values["tabs"] == "Settings":
|
||||||
self.popup_advanced_settings(title="Advanced Settings")
|
self.popup_advanced_settings(title="Advanced Settings")
|
||||||
|
case [["ADVANCED", "SETTINGS"], ["FOCUS", "IN"]]:
|
||||||
|
self.nvda.speak("ADVANCED SETTINGS")
|
||||||
case [["ADVANCED", "SETTINGS"], ["KEY", "ENTER"]]:
|
case [["ADVANCED", "SETTINGS"], ["KEY", "ENTER"]]:
|
||||||
self.find_element_with_focus().click()
|
self.find_element_with_focus().click()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user