Compare commits

..

6 Commits

9 changed files with 63 additions and 96 deletions

View File

@ -63,7 +63,7 @@ vban-cli strip 2 gain -18.7
see `vban-cli strip --help` for more info. see `vban-cli strip --help` for more info.
##### Strip EQ #### Strip EQ
*Usage: vban-cli strip \<index> eq COMMAND [OPTIONS]* *Usage: vban-cli strip \<index> eq COMMAND [OPTIONS]*
@ -75,7 +75,7 @@ vban-cli strip 0 eq on true
see `vban-cli strip eq --help` for more info. see `vban-cli strip eq --help` for more info.
##### Strip EQ Cell Command #### Strip EQ Cell Command
*Usage: vban-cli strip \<index> eq cell \<band> COMMAND [ARGS]* *Usage: vban-cli strip \<index> eq cell \<band> COMMAND [ARGS]*
@ -91,7 +91,7 @@ vban-cli strip 4 eq cell 5 type 5
see `vban-cli strip eq cell --help` for more info. see `vban-cli strip eq cell --help` for more info.
##### Strip Comp Command #### Strip Comp Command
*Usage: vban-cli strip \<index> comp COMMAND [OPTIONS]* *Usage: vban-cli strip \<index> comp COMMAND [OPTIONS]*
@ -105,7 +105,7 @@ vban-cli strip 3 comp auto-makeup true
see `vban-cli strip comp --help` for more info. see `vban-cli strip comp --help` for more info.
##### Strip Gate Command #### Strip Gate Command
*Usage: vban-cli strip \<index> gate COMMAND [OPTIONS]* *Usage: vban-cli strip \<index> gate COMMAND [OPTIONS]*
@ -119,7 +119,19 @@ vban-cli strip 5 gate hold 2088.7
see `vban-cli strip comp --help` for more info. see `vban-cli strip comp --help` for more info.
##### Strip Gainlayer Command #### Strip Denoiser Command
*Usage: vban-cli strip \<index> denoiser COMMAND [OPTIONS]*
examples:
```console
vban-cli strip 4 denoiser knob 3.6
```
see `vban-cli strip denoiser --help` for more info.
#### Strip Gainlayer Command
*Usage: vban-cli strip \<index> gainlayer \<gainlayer_index> COMMAND [OPTIONS] [ARGS]* *Usage: vban-cli strip \<index> gainlayer \<gainlayer_index> COMMAND [OPTIONS] [ARGS]*

View File

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

View File

@ -1,4 +1,4 @@
from typing import Annotated from typing import Annotated, Optional
from cyclopts import App, Argument, Parameter from cyclopts import App, Argument, Parameter
@ -8,24 +8,9 @@ from .help import StripHelpFormatter
app = App(name='comp', help_formatter=StripHelpFormatter()) app = App(name='comp', help_formatter=StripHelpFormatter())
@app.meta.default
def launcher(
*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)],
index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Control the compressor parameters."""
additional_kwargs = {}
command, bound, _ = app.parse_args(tokens)
additional_kwargs['index'] = index
additional_kwargs['ctx'] = ctx
return command(*bound.args, **bound.kwargs, **additional_kwargs)
@app.command(name='knob') @app.command(name='knob')
def knob( def knob(
new_knob: Annotated[float, Argument()] = None, new_knob: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -34,7 +19,7 @@ def knob(
Parameters Parameters
---------- ----------
new_knob : int, optional new_knob : float, optional
If provided, sets the knob to this value. If not provided, the current knob is printed. If provided, sets the knob to this value. If not provided, the current knob is printed.
""" """
if new_knob is None: if new_knob is None:
@ -46,7 +31,7 @@ def knob(
@app.command(name='input-gain') @app.command(name='input-gain')
def input_gain( def input_gain(
new_gain: Annotated[float, Argument()] = None, new_gain: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -67,7 +52,7 @@ def input_gain(
@app.command(name='ratio') @app.command(name='ratio')
def ratio( def ratio(
new_ratio: Annotated[float, Argument()] = None, new_ratio: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -88,7 +73,7 @@ def ratio(
@app.command(name='threshold') @app.command(name='threshold')
def threshold( def threshold(
new_threshold: Annotated[float, Argument()] = None, new_threshold: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -109,7 +94,7 @@ def threshold(
@app.command(name='attack') @app.command(name='attack')
def attack( def attack(
new_attack: Annotated[float, Argument()] = None, new_attack: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -130,7 +115,7 @@ def attack(
@app.command(name='release') @app.command(name='release')
def release( def release(
new_release: Annotated[float, Argument()] = None, new_release: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -151,7 +136,7 @@ def release(
@app.command(name='knee') @app.command(name='knee')
def knee( def knee(
new_knee: Annotated[float, Argument()] = None, new_knee: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -172,7 +157,7 @@ def knee(
@app.command(name='output-gain') @app.command(name='output-gain')
def output_gain( def output_gain(
new_gain: Annotated[float, Argument()] = None, new_gain: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -193,7 +178,7 @@ def output_gain(
@app.command(name='auto-makeup') @app.command(name='auto-makeup')
def makeup( def makeup(
new_makeup: Annotated[bool, Argument()] = None, new_makeup: Annotated[Optional[bool], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],

View File

@ -1,4 +1,4 @@
from typing import Annotated from typing import Annotated, Optional
from cyclopts import App, Argument, Parameter from cyclopts import App, Argument, Parameter
@ -8,24 +8,9 @@ from .help import StripHelpFormatter
app = App(name='denoiser', help_formatter=StripHelpFormatter()) app = App(name='denoiser', help_formatter=StripHelpFormatter())
@app.meta.default
def launcher(
*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)],
index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Control the denoiser parameters."""
additional_kwargs = {}
command, bound, _ = app.parse_args(tokens)
additional_kwargs['index'] = index
additional_kwargs['ctx'] = ctx
return command(*bound.args, **bound.kwargs, **additional_kwargs)
@app.command(name='knob') @app.command(name='knob')
def knob( def knob(
new_knob: Annotated[float, Argument()] = None, new_knob: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -34,7 +19,7 @@ def knob(
Parameters Parameters
---------- ----------
new_knob : int, optional new_knob : float, optional
If provided, sets the knob to this value. If not provided, the current knob is printed. If provided, sets the knob to this value. If not provided, the current knob is printed.
""" """
if new_knob is None: if new_knob is None:

View File

@ -1,4 +1,4 @@
from typing import Annotated from typing import Annotated, Optional
from cyclopts import App, Argument, Parameter from cyclopts import App, Argument, Parameter
@ -35,7 +35,7 @@ def launcher(
@app.command(name='on') @app.command(name='on')
def on( def on(
new_state: Annotated[bool, Argument()] = None, new_state: Annotated[Optional[bool], Argument()] = None,
*, *,
target: Annotated[object, Parameter(parse=False)], target: Annotated[object, Parameter(parse=False)],
): ):
@ -43,7 +43,7 @@ def on(
Parameters Parameters
---------- ----------
new_state : bool new_state : bool, optional
If provided, sets the on state to this value. If not provided, the current on state is printed. If provided, sets the on state to this value. If not provided, the current on state is printed.
""" """
if new_state is None: if new_state is None:
@ -73,7 +73,7 @@ def cell_launcher(
@cell_app.command(name='on') @cell_app.command(name='on')
def cell_on( def cell_on(
new_state: Annotated[bool, Argument()] = None, new_state: Annotated[Optional[bool], Argument()] = None,
*, *,
target: Annotated[object, Parameter(parse=False)], target: Annotated[object, Parameter(parse=False)],
): ):
@ -81,7 +81,7 @@ def cell_on(
Parameters Parameters
---------- ----------
new_state : bool new_state : bool, optional
If provided, sets the on state to this value. If not provided, the current on state is printed. If provided, sets the on state to this value. If not provided, the current on state is printed.
""" """
if new_state is None: if new_state is None:
@ -93,7 +93,7 @@ def cell_on(
@cell_app.command(name='freq') @cell_app.command(name='freq')
def cell_freq( def cell_freq(
new_freq: Annotated[float, Argument()] = None, new_freq: Annotated[Optional[float], Argument()] = None,
*, *,
target: Annotated[object, Parameter(parse=False)], target: Annotated[object, Parameter(parse=False)],
): ):
@ -101,7 +101,7 @@ def cell_freq(
Parameters Parameters
---------- ----------
new_freq : float new_freq : float, optional
If provided, sets the frequency to this value. If not provided, the current frequency is printed. If provided, sets the frequency to this value. If not provided, the current frequency is printed.
""" """
if new_freq is None: if new_freq is None:
@ -113,7 +113,7 @@ def cell_freq(
@cell_app.command(name='gain') @cell_app.command(name='gain')
def cell_gain( def cell_gain(
new_gain: Annotated[float, Argument()] = None, new_gain: Annotated[Optional[float], Argument()] = None,
*, *,
target: Annotated[object, Parameter(parse=False)], target: Annotated[object, Parameter(parse=False)],
): ):
@ -121,7 +121,7 @@ def cell_gain(
Parameters Parameters
---------- ----------
new_gain : float new_gain : float, optional
If provided, sets the gain to this value. If not provided, the current gain is printed. If provided, sets the gain to this value. If not provided, the current gain is printed.
""" """
if new_gain is None: if new_gain is None:
@ -133,7 +133,7 @@ def cell_gain(
@cell_app.command(name='quality') @cell_app.command(name='quality')
def cell_q( def cell_q(
new_q: Annotated[float, Argument()] = None, new_q: Annotated[Optional[float], Argument()] = None,
*, *,
target: Annotated[object, Parameter(parse=False)], target: Annotated[object, Parameter(parse=False)],
): ):
@ -141,7 +141,7 @@ def cell_q(
Parameters Parameters
---------- ----------
new_q : float new_q : float, optional
If provided, sets the Q to this value. If not provided, the current Q is printed. If provided, sets the Q to this value. If not provided, the current Q is printed.
""" """
if new_q is None: if new_q is None:
@ -153,7 +153,7 @@ def cell_q(
@cell_app.command(name='type') @cell_app.command(name='type')
def cell_type( def cell_type(
new_type: Annotated[int, Argument()] = None, new_type: Annotated[Optional[int], Argument()] = None,
*, *,
target: Annotated[object, Parameter(parse=False)], target: Annotated[object, Parameter(parse=False)],
): ):
@ -161,7 +161,7 @@ def cell_type(
Parameters Parameters
---------- ----------
new_type : int new_type : int, optional
If provided, sets the type to this value. If not provided, the current type is printed. If provided, sets the type to this value. If not provided, the current type is printed.
""" """
if new_type is None: if new_type is None:

View File

@ -1,4 +1,4 @@
from typing import Annotated from typing import Annotated, Optional
from cyclopts import App, Argument, Parameter from cyclopts import App, Argument, Parameter
@ -28,7 +28,7 @@ def launcher(
@app.command(name='level') @app.command(name='level')
def level( def level(
new_level: Annotated[float, Argument()] = None, new_level: Annotated[Optional[float], Argument()] = None,
*, *,
strip_index: Annotated[int, Parameter(parse=False)], strip_index: Annotated[int, Parameter(parse=False)],
gainlayer_index: Annotated[int, Parameter(parse=False)], gainlayer_index: Annotated[int, Parameter(parse=False)],
@ -38,7 +38,7 @@ def level(
Parameters Parameters
---------- ----------
new_level : float new_level : float, optional
If provided, sets the level to this value. If not provided, the current level is printed. If provided, sets the level to this value. If not provided, the current level is printed.
""" """
if new_level is None: if new_level is None:

View File

@ -1,4 +1,4 @@
from typing import Annotated from typing import Annotated, Optional
from cyclopts import App, Argument, Parameter from cyclopts import App, Argument, Parameter
@ -8,24 +8,9 @@ from .help import StripHelpFormatter
app = App(name='gate', help_formatter=StripHelpFormatter()) app = App(name='gate', help_formatter=StripHelpFormatter())
@app.meta.default
def launcher(
*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)],
index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Control the compressor parameters."""
additional_kwargs = {}
command, bound, _ = app.parse_args(tokens)
additional_kwargs['index'] = index
additional_kwargs['ctx'] = ctx
return command(*bound.args, **bound.kwargs, **additional_kwargs)
@app.command(name='knob') @app.command(name='knob')
def knob( def knob(
new_knob: Annotated[float, Argument()] = None, new_knob: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -34,7 +19,7 @@ def knob(
Parameters Parameters
---------- ----------
new_knob : int, optional new_knob : float, optional
If provided, sets the knob to this value. If not provided, the current knob is printed. If provided, sets the knob to this value. If not provided, the current knob is printed.
""" """
if new_knob is None: if new_knob is None:
@ -46,7 +31,7 @@ def knob(
@app.command(name='threshold') @app.command(name='threshold')
def threshold( def threshold(
new_threshold: Annotated[float, Argument()] = None, new_threshold: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -67,7 +52,7 @@ def threshold(
@app.command(name='damping-max') @app.command(name='damping-max')
def damping_max( def damping_max(
new_damping_max: Annotated[float, Argument()] = None, new_damping_max: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -88,7 +73,7 @@ def damping_max(
@app.command(name='bp-sidechain') @app.command(name='bp-sidechain')
def bp_sidechain( def bp_sidechain(
new_bp_sidechain: Annotated[float, Argument()] = None, new_bp_sidechain: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -109,7 +94,7 @@ def bp_sidechain(
@app.command(name='attack') @app.command(name='attack')
def attack( def attack(
new_attack: Annotated[float, Argument()] = None, new_attack: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -130,7 +115,7 @@ def attack(
@app.command(name='hold') @app.command(name='hold')
def hold( def hold(
new_hold: Annotated[float, Argument()] = None, new_hold: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],
@ -151,7 +136,7 @@ def hold(
@app.command(name='release') @app.command(name='release')
def release( def release(
new_release: Annotated[float, Argument()] = None, new_release: Annotated[Optional[float], Argument()] = None,
*, *,
index: Annotated[int, Parameter(parse=False)], index: Annotated[int, Parameter(parse=False)],
ctx: Annotated[Context, Parameter(parse=False)], ctx: Annotated[Context, Parameter(parse=False)],

View File

@ -8,9 +8,9 @@ from .help import StripHelpFormatter
app = App(name='strip', help_formatter=StripHelpFormatter()) app = App(name='strip', help_formatter=StripHelpFormatter())
app.command(eq.app.meta, name='eq') app.command(eq.app.meta, name='eq')
app.command(comp.app.meta, name='comp') app.command(comp.app, name='comp')
app.command(gate.app.meta, name='gate') app.command(gate.app, name='gate')
app.command(denoiser.app.meta, name='denoiser') app.command(denoiser.app, name='denoiser')
app.command(gainlayer.app.meta, name='gainlayer') app.command(gainlayer.app.meta, name='gainlayer')

4
uv.lock generated
View File

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