mirror of
https://github.com/onyx-and-iris/nvda-voicemeeter.git
synced 2024-11-22 10:00:46 +00:00
implements asio buffer
This commit is contained in:
parent
e1fb16c32b
commit
a1c7f1358e
@ -2,6 +2,7 @@ import PySimpleGUI as psg
|
||||
|
||||
from .util import (
|
||||
get_asio_checkbox_index,
|
||||
get_asio_samples_list,
|
||||
get_input_device_list,
|
||||
get_insert_checkbox_index,
|
||||
get_patch_composite_list,
|
||||
@ -17,13 +18,19 @@ class Builder:
|
||||
self.kind = self.vm.kind
|
||||
|
||||
def run(self) -> list:
|
||||
menu = self.make_menu()
|
||||
menu = [[self.make_menu()]]
|
||||
|
||||
layout0 = []
|
||||
if self.kind.name == "basic":
|
||||
steps = (self.make_tab0_row0,)
|
||||
else:
|
||||
steps = (self.make_tab0_row0, self.make_tab0_row1, self.make_tab0_row2, self.make_tab0_row3)
|
||||
steps = (
|
||||
self.make_tab0_row0,
|
||||
self.make_tab0_row1,
|
||||
self.make_tab0_row2,
|
||||
self.make_tab0_row3,
|
||||
self.make_tab0_row4,
|
||||
)
|
||||
for step in steps:
|
||||
layout0.append([step()])
|
||||
|
||||
@ -59,7 +66,7 @@ class Builder:
|
||||
],
|
||||
],
|
||||
]
|
||||
return [[psg.Menu(menu_def, key="menus")]]
|
||||
return psg.Menu(menu_def, key="menus")
|
||||
|
||||
def make_tab0_row0(self) -> psg.Frame:
|
||||
"""row0 represents hardware outs"""
|
||||
@ -190,6 +197,26 @@ class Builder:
|
||||
|
||||
return psg.Frame("PATCH INSERT", asio_checkboxes)
|
||||
|
||||
def make_tab0_row4(self) -> psg.Frame:
|
||||
"""row4 represents asio buffer"""
|
||||
|
||||
samples = get_asio_samples_list()
|
||||
samples.append("Default")
|
||||
|
||||
return psg.Frame(
|
||||
"ASIO BUFFER",
|
||||
[
|
||||
[
|
||||
psg.ButtonMenu(
|
||||
"ASIO BUFFER",
|
||||
size=(12, 2),
|
||||
menu_def=["", samples],
|
||||
key="ASIO BUFFER",
|
||||
)
|
||||
]
|
||||
],
|
||||
)
|
||||
|
||||
def make_tab1_row(self, i) -> psg.Frame:
|
||||
def add_strip_outputs(layout):
|
||||
layout.append(
|
||||
|
@ -28,15 +28,3 @@ def _make_output_cache(vm) -> dict:
|
||||
|
||||
def _make_bus_mode_cache(vm) -> dict:
|
||||
return {**{f"BUS {i}||COMPOSITE": vm.bus[i].mode.get() for i in range(vm.kind.num_bus)}}
|
||||
|
||||
|
||||
_patch_insert_channels = (
|
||||
"left",
|
||||
"right",
|
||||
"center",
|
||||
"low frequency effect",
|
||||
"surround left",
|
||||
"surround right",
|
||||
"back left",
|
||||
"back right",
|
||||
)
|
||||
|
@ -1,10 +1,10 @@
|
||||
def get_asio_checkbox_index(channel, num):
|
||||
def get_asio_checkbox_index(channel, num) -> int:
|
||||
if channel == 0:
|
||||
return 2 * num - 2
|
||||
return 2 * num - 1
|
||||
|
||||
|
||||
def get_insert_checkbox_index(kind, channel, num):
|
||||
def get_insert_checkbox_index(kind, channel, num) -> int:
|
||||
if num <= kind.phys_in:
|
||||
if channel == 0:
|
||||
return 2 * num - 2
|
||||
@ -13,11 +13,11 @@ def get_insert_checkbox_index(kind, channel, num):
|
||||
return (2 * kind.phys_in) + (8 * (num - kind.phys_in - 1)) + channel
|
||||
|
||||
|
||||
def get_input_device_list(vm):
|
||||
def get_input_device_list(vm) -> list:
|
||||
return ["{type}: {name}".format(**vm.device.output(i)) for i in range(vm.device.outs)]
|
||||
|
||||
|
||||
def get_patch_composite_list(kind):
|
||||
def get_patch_composite_list(kind) -> list:
|
||||
temp = []
|
||||
for i in range(kind.phys_out):
|
||||
[temp.append(f"IN#{i + 1} {channel}") for channel in ("Left", "Right")]
|
||||
@ -25,3 +25,43 @@ def get_patch_composite_list(kind):
|
||||
[temp.append(f"IN#{i + 1} {channel}") for channel in ("Left", "Right", "Center", "LFE", "SL", "SR", "BL", "BR")]
|
||||
temp.append(f"BUS Channel")
|
||||
return temp
|
||||
|
||||
|
||||
def get_patch_insert_channels() -> list:
|
||||
return [
|
||||
"left",
|
||||
"right",
|
||||
"center",
|
||||
"low frequency effect",
|
||||
"surround left",
|
||||
"surround right",
|
||||
"back left",
|
||||
"back right",
|
||||
]
|
||||
|
||||
|
||||
_patch_insert_channels = get_patch_insert_channels()
|
||||
|
||||
|
||||
def get_asio_samples_list() -> list:
|
||||
return [
|
||||
"1024",
|
||||
"768",
|
||||
"704",
|
||||
"640",
|
||||
"576",
|
||||
"512",
|
||||
"480",
|
||||
"448",
|
||||
"441",
|
||||
"416",
|
||||
"384",
|
||||
"352",
|
||||
"320",
|
||||
"288",
|
||||
"256",
|
||||
"224",
|
||||
"192",
|
||||
"160",
|
||||
"128",
|
||||
]
|
||||
|
@ -3,10 +3,11 @@ import logging
|
||||
import PySimpleGUI as psg
|
||||
|
||||
from .builder import Builder
|
||||
from .models import _make_bus_mode_cache, _make_output_cache, _patch_insert_channels
|
||||
from .models import _make_bus_mode_cache, _make_output_cache
|
||||
from .nvda import Nvda
|
||||
from .parser import Parser
|
||||
from .util import (
|
||||
_patch_insert_channels,
|
||||
get_asio_checkbox_index,
|
||||
get_insert_checkbox_index,
|
||||
get_patch_composite_list,
|
||||
@ -33,6 +34,7 @@ class NVDAVMWindow(psg.Window):
|
||||
[self[f"HARDWARE OUT||A{i + 1}"].Widget.config(takefocus=1) for i in range(self.kind.phys_out)]
|
||||
if self.kind.name != "basic":
|
||||
[self[f"PATCH COMPOSITE||PC{i + 1}"].Widget.config(takefocus=1) for i in range(self.kind.phys_out)]
|
||||
self["ASIO BUFFER"].Widget.config(takefocus=1)
|
||||
self.register_events()
|
||||
self.current_focus = None
|
||||
|
||||
@ -83,6 +85,9 @@ class NVDAVMWindow(psg.Window):
|
||||
for j in range(self.kind.num_bus):
|
||||
self[f"BUS {i}||COMPOSITE"].bind("<FocusIn>", "||FOCUS IN")
|
||||
|
||||
# ASIO Buffer
|
||||
self[f"ASIO BUFFER"].bind("<FocusIn>", "||FOCUS IN")
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
Parses the event string and matches it to events
|
||||
@ -194,6 +199,16 @@ class NVDAVMWindow(psg.Window):
|
||||
num = int(in_num[-1])
|
||||
self.nvda.speak(f"Patch INSERT IN#{num} {channel} {'on' if val else 'off'}")
|
||||
|
||||
# ASIO Buffer
|
||||
case [["ASIO", "BUFFER"], ["FOCUS", "IN"]]:
|
||||
self.nvda.speak(f"ASIO BUFFER")
|
||||
case ["ASIO BUFFER"]:
|
||||
if values[event] == "Default":
|
||||
val = 0
|
||||
else:
|
||||
val = values[event]
|
||||
self.vm.option.buffer("asio", val)
|
||||
|
||||
# Strip outputs
|
||||
case [["STRIP", index], [output]]:
|
||||
val = not self.cache["outputs"][f"STRIP {index}||{output}"]
|
||||
|
Loading…
Reference in New Issue
Block a user