mirror of
https://github.com/onyx-and-iris/vban-cli.git
synced 2026-03-04 22:19:13 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cd5b8b0636 | |||
| 77e21617af | |||
| 5f448fa48e | |||
| 7eb8dc0bb6 | |||
| 81b3841241 | |||
| 6e6a60e9bd |
22
README.md
22
README.md
@ -63,7 +63,7 @@ vban-cli strip 2 gain -18.7
|
||||
|
||||
see `vban-cli strip --help` for more info.
|
||||
|
||||
##### Strip EQ
|
||||
#### Strip EQ
|
||||
|
||||
*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.
|
||||
|
||||
##### Strip EQ Cell Command
|
||||
#### Strip EQ Cell Command
|
||||
|
||||
*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.
|
||||
|
||||
##### Strip Comp Command
|
||||
#### Strip Comp Command
|
||||
|
||||
*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.
|
||||
|
||||
##### Strip Gate Command
|
||||
#### Strip Gate Command
|
||||
|
||||
*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.
|
||||
|
||||
##### 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]*
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
[project]
|
||||
name = "vban-cli"
|
||||
version = "0.12.0"
|
||||
version = "0.12.1"
|
||||
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.1"]
|
||||
dependencies = ["cyclopts>=4.6.0", "loguru>=0.7.3", "vban-cmd>=2.9.4"]
|
||||
classifiers = [
|
||||
"Development Status :: 4 - Beta",
|
||||
"Programming Language :: Python",
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import Annotated
|
||||
from typing import Annotated, Optional
|
||||
|
||||
from cyclopts import App, Argument, Parameter
|
||||
|
||||
@ -8,24 +8,9 @@ from .help import 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')
|
||||
def knob(
|
||||
new_knob: Annotated[float, Argument()] = None,
|
||||
new_knob: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -34,7 +19,7 @@ def knob(
|
||||
|
||||
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 new_knob is None:
|
||||
@ -46,7 +31,7 @@ def knob(
|
||||
|
||||
@app.command(name='input-gain')
|
||||
def input_gain(
|
||||
new_gain: Annotated[float, Argument()] = None,
|
||||
new_gain: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -67,7 +52,7 @@ def input_gain(
|
||||
|
||||
@app.command(name='ratio')
|
||||
def ratio(
|
||||
new_ratio: Annotated[float, Argument()] = None,
|
||||
new_ratio: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -88,7 +73,7 @@ def ratio(
|
||||
|
||||
@app.command(name='threshold')
|
||||
def threshold(
|
||||
new_threshold: Annotated[float, Argument()] = None,
|
||||
new_threshold: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -109,7 +94,7 @@ def threshold(
|
||||
|
||||
@app.command(name='attack')
|
||||
def attack(
|
||||
new_attack: Annotated[float, Argument()] = None,
|
||||
new_attack: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -130,7 +115,7 @@ def attack(
|
||||
|
||||
@app.command(name='release')
|
||||
def release(
|
||||
new_release: Annotated[float, Argument()] = None,
|
||||
new_release: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -151,7 +136,7 @@ def release(
|
||||
|
||||
@app.command(name='knee')
|
||||
def knee(
|
||||
new_knee: Annotated[float, Argument()] = None,
|
||||
new_knee: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -172,7 +157,7 @@ def knee(
|
||||
|
||||
@app.command(name='output-gain')
|
||||
def output_gain(
|
||||
new_gain: Annotated[float, Argument()] = None,
|
||||
new_gain: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -193,7 +178,7 @@ def output_gain(
|
||||
|
||||
@app.command(name='auto-makeup')
|
||||
def makeup(
|
||||
new_makeup: Annotated[bool, Argument()] = None,
|
||||
new_makeup: Annotated[Optional[bool], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import Annotated
|
||||
from typing import Annotated, Optional
|
||||
|
||||
from cyclopts import App, Argument, Parameter
|
||||
|
||||
@ -8,24 +8,9 @@ from .help import 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')
|
||||
def knob(
|
||||
new_knob: Annotated[float, Argument()] = None,
|
||||
new_knob: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -34,7 +19,7 @@ def knob(
|
||||
|
||||
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 new_knob is None:
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import Annotated
|
||||
from typing import Annotated, Optional
|
||||
|
||||
from cyclopts import App, Argument, Parameter
|
||||
|
||||
@ -35,7 +35,7 @@ def launcher(
|
||||
|
||||
@app.command(name='on')
|
||||
def on(
|
||||
new_state: Annotated[bool, Argument()] = None,
|
||||
new_state: Annotated[Optional[bool], Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(parse=False)],
|
||||
):
|
||||
@ -43,7 +43,7 @@ def on(
|
||||
|
||||
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 new_state is None:
|
||||
@ -73,7 +73,7 @@ def cell_launcher(
|
||||
|
||||
@cell_app.command(name='on')
|
||||
def cell_on(
|
||||
new_state: Annotated[bool, Argument()] = None,
|
||||
new_state: Annotated[Optional[bool], Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(parse=False)],
|
||||
):
|
||||
@ -81,7 +81,7 @@ def cell_on(
|
||||
|
||||
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 new_state is None:
|
||||
@ -93,7 +93,7 @@ def cell_on(
|
||||
|
||||
@cell_app.command(name='freq')
|
||||
def cell_freq(
|
||||
new_freq: Annotated[float, Argument()] = None,
|
||||
new_freq: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(parse=False)],
|
||||
):
|
||||
@ -101,7 +101,7 @@ def cell_freq(
|
||||
|
||||
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 new_freq is None:
|
||||
@ -113,7 +113,7 @@ def cell_freq(
|
||||
|
||||
@cell_app.command(name='gain')
|
||||
def cell_gain(
|
||||
new_gain: Annotated[float, Argument()] = None,
|
||||
new_gain: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(parse=False)],
|
||||
):
|
||||
@ -121,7 +121,7 @@ def cell_gain(
|
||||
|
||||
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 new_gain is None:
|
||||
@ -133,7 +133,7 @@ def cell_gain(
|
||||
|
||||
@cell_app.command(name='quality')
|
||||
def cell_q(
|
||||
new_q: Annotated[float, Argument()] = None,
|
||||
new_q: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(parse=False)],
|
||||
):
|
||||
@ -141,7 +141,7 @@ def cell_q(
|
||||
|
||||
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 new_q is None:
|
||||
@ -153,7 +153,7 @@ def cell_q(
|
||||
|
||||
@cell_app.command(name='type')
|
||||
def cell_type(
|
||||
new_type: Annotated[int, Argument()] = None,
|
||||
new_type: Annotated[Optional[int], Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(parse=False)],
|
||||
):
|
||||
@ -161,7 +161,7 @@ def cell_type(
|
||||
|
||||
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 new_type is None:
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import Annotated
|
||||
from typing import Annotated, Optional
|
||||
|
||||
from cyclopts import App, Argument, Parameter
|
||||
|
||||
@ -28,7 +28,7 @@ def launcher(
|
||||
|
||||
@app.command(name='level')
|
||||
def level(
|
||||
new_level: Annotated[float, Argument()] = None,
|
||||
new_level: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
strip_index: Annotated[int, Parameter(parse=False)],
|
||||
gainlayer_index: Annotated[int, Parameter(parse=False)],
|
||||
@ -38,7 +38,7 @@ def level(
|
||||
|
||||
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 new_level is None:
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from typing import Annotated
|
||||
from typing import Annotated, Optional
|
||||
|
||||
from cyclopts import App, Argument, Parameter
|
||||
|
||||
@ -8,24 +8,9 @@ from .help import 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')
|
||||
def knob(
|
||||
new_knob: Annotated[float, Argument()] = None,
|
||||
new_knob: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -34,7 +19,7 @@ def knob(
|
||||
|
||||
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 new_knob is None:
|
||||
@ -46,7 +31,7 @@ def knob(
|
||||
|
||||
@app.command(name='threshold')
|
||||
def threshold(
|
||||
new_threshold: Annotated[float, Argument()] = None,
|
||||
new_threshold: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -67,7 +52,7 @@ def threshold(
|
||||
|
||||
@app.command(name='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)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -88,7 +73,7 @@ def damping_max(
|
||||
|
||||
@app.command(name='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)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -109,7 +94,7 @@ def bp_sidechain(
|
||||
|
||||
@app.command(name='attack')
|
||||
def attack(
|
||||
new_attack: Annotated[float, Argument()] = None,
|
||||
new_attack: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -130,7 +115,7 @@ def attack(
|
||||
|
||||
@app.command(name='hold')
|
||||
def hold(
|
||||
new_hold: Annotated[float, Argument()] = None,
|
||||
new_hold: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
@ -151,7 +136,7 @@ def hold(
|
||||
|
||||
@app.command(name='release')
|
||||
def release(
|
||||
new_release: Annotated[float, Argument()] = None,
|
||||
new_release: Annotated[Optional[float], Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
|
||||
@ -8,9 +8,9 @@ from .help import StripHelpFormatter
|
||||
|
||||
app = App(name='strip', help_formatter=StripHelpFormatter())
|
||||
app.command(eq.app.meta, name='eq')
|
||||
app.command(comp.app.meta, name='comp')
|
||||
app.command(gate.app.meta, name='gate')
|
||||
app.command(denoiser.app.meta, name='denoiser')
|
||||
app.command(comp.app, name='comp')
|
||||
app.command(gate.app, name='gate')
|
||||
app.command(denoiser.app, name='denoiser')
|
||||
app.command(gainlayer.app.meta, name='gainlayer')
|
||||
|
||||
|
||||
|
||||
4
uv.lock
generated
4
uv.lock
generated
@ -124,7 +124,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "vban-cli"
|
||||
version = "0.12.0"
|
||||
version = "0.12.1"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "cyclopts" },
|
||||
@ -141,7 +141,7 @@ requires-dist = [
|
||||
|
||||
[[package]]
|
||||
name = "vban-cmd"
|
||||
version = "2.9.1"
|
||||
version = "2.9.6"
|
||||
source = { editable = "../vban-cmd-python" }
|
||||
|
||||
[package.metadata]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user