mirror of
https://github.com/onyx-and-iris/nvda-voicemeeter.git
synced 2024-11-22 18:00:50 +00:00
implements reset binds
Advanced Comp|Gate section added to README. bump to version 0.5.0b1
This commit is contained in:
parent
5befe72ca1
commit
0aeb33608f
18
README.md
18
README.md
@ -107,12 +107,30 @@ All sliders may be controlled in three different ways:
|
|||||||
- `Shift + Left|Right arrow` to move a slider by 0.1 steps.
|
- `Shift + Left|Right arrow` to move a slider by 0.1 steps.
|
||||||
- `Control + Left|Right arrow` to move a slider by 3 steps.
|
- `Control + Left|Right arrow` to move a slider by 3 steps.
|
||||||
|
|
||||||
|
To reset a slider back to its default value you may use `Control + Shift + R`.
|
||||||
|
|
||||||
To rename a strip/bus channel focus on the channel in question and press `F2`. Then enter the new channel name into the text input widget and press the `Ok` button.
|
To rename a strip/bus channel focus on the channel in question and press `F2`. Then enter the new channel name into the text input widget and press the `Ok` button.
|
||||||
|
|
||||||
Pressing the `OK` button with an empty text input will clear the label. In this case the label will be read as a default value for that channel. For example, if the leftmost Strip label were cleared, the screen reader will now read `Hardware Input 1`.
|
Pressing the `OK` button with an empty text input will clear the label. In this case the label will be read as a default value for that channel. For example, if the leftmost Strip label were cleared, the screen reader will now read `Hardware Input 1`.
|
||||||
|
|
||||||
Pressing `Cancel` will close the popup window with no affect on the label.
|
Pressing `Cancel` will close the popup window with no affect on the label.
|
||||||
|
|
||||||
|
#### `Advanced Compressor|Gate`
|
||||||
|
|
||||||
|
For potato version only, you may access advanced Compressor and Gate sliders. Simply focus any Gate or Compressor slider and press `Control + A`. This will open a popup window where you can navigate between the different sliders with `TAB`. Move the sliders with the same binds you would for normal sliders. However, there are a couple of extra binds for certain controls.
|
||||||
|
|
||||||
|
For Compressor Release you may use:
|
||||||
|
|
||||||
|
- `Alt + Left|Right arrow` to move the slider by 10 steps.
|
||||||
|
- `Alt + Control + Left|Right arrow` to move the slider by 50 steps.
|
||||||
|
|
||||||
|
For Gate BP Sidechain, Attack, Hold, Release you may use:
|
||||||
|
|
||||||
|
- `Alt + Left|Right arrow` to move the slider by 10 steps.
|
||||||
|
- `Alt + Control + Left|Right arrow` to move the slider by 50 steps.
|
||||||
|
|
||||||
|
To reset a slider back to its default value you may use `Control + Shift + R`.
|
||||||
|
|
||||||
#### `Menu`
|
#### `Menu`
|
||||||
|
|
||||||
A single menu item `Voicemeeter` can be opened using `Alt` and then `v`. The menu allows you to:
|
A single menu item `Voicemeeter` can be opened using `Alt` and then `v`. The menu allows you to:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "nvda_voicemeeter"
|
name = "nvda_voicemeeter"
|
||||||
version = "0.5.0a2"
|
version = "0.5.0b1"
|
||||||
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" },
|
||||||
|
@ -212,6 +212,7 @@ class Popup:
|
|||||||
self.popup[f"COMPRESSOR||SLIDER {param}"].bind(
|
self.popup[f"COMPRESSOR||SLIDER {param}"].bind(
|
||||||
f"<Control-Alt-{event}-{direction}>", f"||KEY CTRL ALT {direction.upper()} {event_id}"
|
f"<Control-Alt-{event}-{direction}>", f"||KEY CTRL ALT {direction.upper()} {event_id}"
|
||||||
)
|
)
|
||||||
|
self.popup[f"COMPRESSOR||SLIDER {param}"].bind("<Control-Shift-KeyPress-R>", "||KEY CTRL SHIFT R")
|
||||||
self.popup["MAKEUP"].bind("<FocusIn>", "||FOCUS IN")
|
self.popup["MAKEUP"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
self.popup["MAKEUP"].bind("<Return>", "||KEY ENTER")
|
self.popup["MAKEUP"].bind("<Return>", "||KEY ENTER")
|
||||||
self.popup["Exit"].bind("<FocusIn>", "||FOCUS IN")
|
self.popup["Exit"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
@ -458,6 +459,33 @@ class Popup:
|
|||||||
else:
|
else:
|
||||||
self.window.vm.event.pdirty = True
|
self.window.vm.event.pdirty = True
|
||||||
|
|
||||||
|
case [
|
||||||
|
["COMPRESSOR"],
|
||||||
|
["SLIDER", "INPUT" | "OUTPUT" as direction, "GAIN"],
|
||||||
|
["KEY", "CTRL", "SHIFT", "R"],
|
||||||
|
]:
|
||||||
|
if direction == "INPUT":
|
||||||
|
self.window.vm.strip[index].comp.gainin = 0
|
||||||
|
else:
|
||||||
|
self.window.vm.strip[index].comp.gainout = 0
|
||||||
|
self.popup[f"COMPRESSOR||SLIDER {direction} GAIN"].update(value=0)
|
||||||
|
self.window.nvda.speak(str(0))
|
||||||
|
case [["COMPRESSOR"], ["SLIDER", param], ["KEY", "CTRL", "SHIFT", "R"]]:
|
||||||
|
match param:
|
||||||
|
case "RATIO":
|
||||||
|
val = 1
|
||||||
|
case "THRESHOLD":
|
||||||
|
val = -20
|
||||||
|
case "ATTACK":
|
||||||
|
val = 10
|
||||||
|
case "RELEASE":
|
||||||
|
val = 50
|
||||||
|
case "KNEE":
|
||||||
|
val = 0.5
|
||||||
|
setattr(self.window.vm.strip[index].comp, param.lower(), val)
|
||||||
|
self.popup[f"COMPRESSOR||SLIDER {param}"].update(value=val)
|
||||||
|
self.window.nvda.speak(str(round(val, 1)))
|
||||||
|
|
||||||
case ["MAKEUP"]:
|
case ["MAKEUP"]:
|
||||||
val = not self.window.vm.strip[index].comp.makeup
|
val = not self.window.vm.strip[index].comp.makeup
|
||||||
self.window.vm.strip[index].comp.makeup = val
|
self.window.vm.strip[index].comp.makeup = val
|
||||||
@ -516,6 +544,7 @@ class Popup:
|
|||||||
self.popup[f"GATE||SLIDER {param}"].bind(
|
self.popup[f"GATE||SLIDER {param}"].bind(
|
||||||
f"<Control-Alt-{event}-{direction}>", f"||KEY CTRL ALT {direction.upper()} {event_id}"
|
f"<Control-Alt-{event}-{direction}>", f"||KEY CTRL ALT {direction.upper()} {event_id}"
|
||||||
)
|
)
|
||||||
|
self.popup[f"GATE||SLIDER {param}"].bind("<Control-Shift-KeyPress-R>", "||KEY CTRL SHIFT R")
|
||||||
self.popup["Exit"].bind("<FocusIn>", "||FOCUS IN")
|
self.popup["Exit"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
self.popup["Exit"].bind("<Return>", "||KEY ENTER")
|
self.popup["Exit"].bind("<Return>", "||KEY ENTER")
|
||||||
self.window.vm.observer.add(self.on_pdirty)
|
self.window.vm.observer.add(self.on_pdirty)
|
||||||
@ -658,6 +687,23 @@ class Popup:
|
|||||||
self.window.nvda.speak(str(round(val, 1)))
|
self.window.nvda.speak(str(round(val, 1)))
|
||||||
else:
|
else:
|
||||||
self.window.vm.event.pdirty = True
|
self.window.vm.event.pdirty = True
|
||||||
|
case [["GATE"], ["SLIDER", param], ["KEY", "CTRL", "SHIFT", "R"]]:
|
||||||
|
match param:
|
||||||
|
case "THRESHOLD":
|
||||||
|
val = -60
|
||||||
|
case "DAMPING":
|
||||||
|
val = -60
|
||||||
|
case "BPSIDECHAIN":
|
||||||
|
val = 100
|
||||||
|
case "ATTACK":
|
||||||
|
val = 0
|
||||||
|
case "HOLD":
|
||||||
|
val = 500
|
||||||
|
case "RELEASE":
|
||||||
|
val = 1000
|
||||||
|
setattr(self.window.vm.strip[index].gate, param.lower(), val)
|
||||||
|
self.popup[f"GATE||SLIDER {param}"].update(value=val)
|
||||||
|
self.window.nvda.speak(str(round(val, 1)))
|
||||||
|
|
||||||
case [[button], ["FOCUS", "IN"]]:
|
case [[button], ["FOCUS", "IN"]]:
|
||||||
self.window.nvda.speak(button)
|
self.window.nvda.speak(button)
|
||||||
|
@ -452,6 +452,8 @@ class NVDAVMWindow(psg.Window):
|
|||||||
case "tab||Settings":
|
case "tab||Settings":
|
||||||
self.write_event_value("ADVANCED SETTINGS", None)
|
self.write_event_value("ADVANCED SETTINGS", None)
|
||||||
case "tab||Physical Strip":
|
case "tab||Physical Strip":
|
||||||
|
if self.kind.name != "potato":
|
||||||
|
continue
|
||||||
if values["tabgroup||Physical Strip"] == "tab||Physical Strip||sliders":
|
if values["tabgroup||Physical Strip"] == "tab||Physical Strip||sliders":
|
||||||
if focus := self.find_element_with_focus():
|
if focus := self.find_element_with_focus():
|
||||||
identifier, partial = focus.key.split("||")
|
identifier, partial = focus.key.split("||")
|
||||||
@ -973,7 +975,7 @@ class NVDAVMWindow(psg.Window):
|
|||||||
case "LIMIT":
|
case "LIMIT":
|
||||||
self.vm.strip[int(index)].limit = 12
|
self.vm.strip[int(index)].limit = 12
|
||||||
self[f"STRIP {index}||SLIDER {param}"].update(value=12)
|
self[f"STRIP {index}||SLIDER {param}"].update(value=12)
|
||||||
self.nvda.speak(f"{param} {12 if param == 'LABEL' else 0}")
|
self.nvda.speak(f"{12 if param == 'LIMIT' else 0}")
|
||||||
|
|
||||||
# Bus Params
|
# Bus Params
|
||||||
case [["BUS", index], [param]]:
|
case [["BUS", index], [param]]:
|
||||||
@ -1106,7 +1108,7 @@ class NVDAVMWindow(psg.Window):
|
|||||||
case [["BUS", index], ["SLIDER", "GAIN"], ["KEY", "CTRL", "SHIFT", "R"]]:
|
case [["BUS", index], ["SLIDER", "GAIN"], ["KEY", "CTRL", "SHIFT", "R"]]:
|
||||||
self.vm.bus[int(index)].gain = 0
|
self.vm.bus[int(index)].gain = 0
|
||||||
self[f"BUS {index}||SLIDER GAIN"].update(value=0)
|
self[f"BUS {index}||SLIDER GAIN"].update(value=0)
|
||||||
self.nvda.speak(str(val))
|
self.nvda.speak(str(0))
|
||||||
|
|
||||||
# Unknown
|
# Unknown
|
||||||
case _:
|
case _:
|
||||||
|
Loading…
Reference in New Issue
Block a user