6 Commits

Author SHA1 Message Date
37b8c387d9 upd lockfile 2026-03-14 10:16:44 +00:00
02f96ddf62 bump vban-cmd dep version 2026-03-07 15:56:02 +00:00
411234aeb3 upd lockfile 2026-03-07 00:05:26 +00:00
2ca89515be add command lock/unlock
patch bump
2026-03-05 20:12:36 +00:00
6cd92a2975 add bus label/gain commands
patch bump
2026-03-05 20:05:00 +00:00
36a8ec124a add strip label command
patch bump
2026-03-05 20:04:40 +00:00
5 changed files with 84 additions and 4 deletions

View File

@@ -1,11 +1,11 @@
[project]
name = "vban-cli"
version = "0.12.2"
version = "0.12.5"
description = "A command-line interface for Voicemeeter leveraging VBAN."
readme = "README.md"
license = { text = "LICENSE" }
requires-python = ">=3.13"
dependencies = ["cyclopts>=4.6.0", "loguru>=0.7.3", "vban-cmd>=2.9.6"]
dependencies = ["cyclopts>=4.6.0", "loguru>=0.7.3", "vban-cmd>=2.10.1"]
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python",

View File

@@ -106,3 +106,43 @@ def mode(
app.console.print(ctx.client.bus[index].mode.get())
return
setattr(ctx.client.bus[index].mode, type_, True)
@app.command(name='gain')
def gain(
new_value: Annotated[Optional[float], Argument()] = None,
*,
index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Get or set the gain of the specified bus.
Parameters
----------
new_value : float, optional
If provided, sets the gain to this value. If not provided, the current gain is printed.
"""
if new_value is None:
app.console.print(ctx.client.bus[index].gain)
return
ctx.client.bus[index].gain = new_value
@app.command(name='label')
def label(
new_value: Annotated[Optional[str], Argument()] = None,
*,
index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Get or set the label of the specified bus.
Parameters
----------
new_value : str, optional
If provided, sets the label to this value. If not provided, the current label is printed.
"""
if new_value is None:
app.console.print(ctx.client.bus[index].label)
return
ctx.client.bus[index].label = new_value

View File

@@ -50,3 +50,23 @@ def restart(
"""Restart the Voicemeeter engine."""
ctx.client.command.restart()
app.console.print('Voicemeeter engine should now be restarting.')
@app.command(name='lock')
def lock(
*,
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Lock the Voicemeeter GUI."""
ctx.client.command.lock = True
app.console.print('Voicemeeter GUI should now be locked.')
@app.command(name='unlock')
def unlock(
*,
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Unlock the Voicemeeter GUI."""
ctx.client.command.lock = False
app.console.print('Voicemeeter GUI should now be unlocked.')

View File

@@ -270,3 +270,23 @@ def b3(
app.console.print(ctx.client.strip[index].B3)
return
ctx.client.strip[index].B3 = new_value
@app.command(name='label')
def label(
new_value: Annotated[Optional[str], Argument()] = None,
*,
index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Get or set the label of the specified strip.
Parameters
----------
new_value : str, optional
If provided, sets the label to this value. If not provided, the current label is printed.
"""
if new_value is None:
app.console.print(ctx.client.strip[index].label)
return
ctx.client.strip[index].label = new_value

4
uv.lock generated
View File

@@ -124,7 +124,7 @@ wheels = [
[[package]]
name = "vban-cli"
version = "0.12.2"
version = "0.12.5"
source = { editable = "." }
dependencies = [
{ name = "cyclopts" },
@@ -141,7 +141,7 @@ requires-dist = [
[[package]]
name = "vban-cmd"
version = "2.9.6"
version = "2.10.3"
source = { editable = "../vban-cmd-python" }
[package.metadata]