mirror of
https://github.com/onyx-and-iris/vban-cli.git
synced 2026-04-16 02:23:30 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aa6b156eff | |||
| 5c60a382fd | |||
| d7fef4f26a | |||
| e6a17d5772 |
20
README.md
20
README.md
@@ -51,7 +51,7 @@ export VBAN_CLI_STREAMNAME=Command1
|
||||
|
||||
### Strip Command
|
||||
|
||||
*Usage: vban-cli strip \<index> COMMAND [ARGS]*
|
||||
*Usage: vban-cli strip \<index> COMMAND [OPTIONS]*
|
||||
|
||||
examples:
|
||||
|
||||
@@ -95,7 +95,7 @@ see `vban-cli strip eq cell --help` for more info.
|
||||
|
||||
##### Strip Comp Command
|
||||
|
||||
*Usage: vban-cli strip \<index> comp COMMAND*
|
||||
*Usage: vban-cli strip \<index> comp COMMAND [OPTIONS]*
|
||||
|
||||
examples:
|
||||
|
||||
@@ -107,6 +107,20 @@ vban-cli strip 3 comp auto-makeup true
|
||||
|
||||
see `vban-cli strip comp --help` for more info.
|
||||
|
||||
##### Strip Gate Command
|
||||
|
||||
*Usage: vban-cli strip \<index> gate COMMAND [OPTIONS]*
|
||||
|
||||
examples:
|
||||
|
||||
```console
|
||||
vban-cli strip 2 gate attack 634
|
||||
|
||||
vban-cli strip 5 gate hold 2088.7
|
||||
```
|
||||
|
||||
see `vban-cli strip comp --help` for more info.
|
||||
|
||||
##### Strip Gainlayer Command
|
||||
|
||||
*Usage: vban-cli strip \<index> gainlayer \<gainlayer_index> COMMAND [OPTIONS] [ARGS]*
|
||||
@@ -123,7 +137,7 @@ see `vban-cli strip gainlayer --help` for more info.
|
||||
|
||||
### Bus Command
|
||||
|
||||
*Usage: vban-cli bus \<index> COMMAND [ARGS]*
|
||||
*Usage: vban-cli bus \<index> COMMAND [OPTIONS]*
|
||||
|
||||
examples:
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "vban-cli"
|
||||
version = "0.10.0"
|
||||
version = "0.11.0"
|
||||
description = "A command-line interface for Voicemeeter leveraging VBAN."
|
||||
readme = "README.md"
|
||||
license = { text = "LICENSE" }
|
||||
|
||||
@@ -63,3 +63,108 @@ def threshold(
|
||||
# app.console.print(ctx.client.strip[index].gate.threshold)
|
||||
return
|
||||
ctx.client.strip[index].gate.threshold = new_threshold
|
||||
|
||||
|
||||
@app.command(name='damping-max')
|
||||
def damping_max(
|
||||
new_damping_max: Annotated[float, Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
):
|
||||
"""Get or set the damping max of the specified gate.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
new_damping_max : float, optional
|
||||
If provided, sets the damping max to this value. If not provided, the current damping max is printed.
|
||||
"""
|
||||
if new_damping_max is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# app.console.print(ctx.client.strip[index].gate.damping)
|
||||
return
|
||||
ctx.client.strip[index].gate.damping = new_damping_max
|
||||
|
||||
|
||||
@app.command(name='bp-sidechain')
|
||||
def bp_sidechain(
|
||||
new_bp_sidechain: Annotated[bool, Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
):
|
||||
"""Get or set the BP sidechain of the specified gate.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
new_bp_sidechain : bool, optional
|
||||
If provided, sets the BP sidechain to this value. If not provided, the current BP sidechain is printed.
|
||||
"""
|
||||
if new_bp_sidechain is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# app.console.print(ctx.client.strip[index].gate.bpsidechain)
|
||||
return
|
||||
ctx.client.strip[index].gate.bpsidechain = new_bp_sidechain
|
||||
|
||||
|
||||
@app.command(name='attack')
|
||||
def attack(
|
||||
new_attack: Annotated[float, Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
):
|
||||
"""Get or set the attack of the specified gate.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
new_attack : float, optional
|
||||
If provided, sets the attack to this value. If not provided, the current attack is printed.
|
||||
"""
|
||||
if new_attack is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# app.console.print(ctx.client.strip[index].gate.attack)
|
||||
return
|
||||
ctx.client.strip[index].gate.attack = new_attack
|
||||
|
||||
|
||||
@app.command(name='hold')
|
||||
def hold(
|
||||
new_hold: Annotated[float, Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
):
|
||||
"""Get or set the hold of the specified gate.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
new_hold : float, optional
|
||||
If provided, sets the hold to this value. If not provided, the current hold is printed.
|
||||
"""
|
||||
if new_hold is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# app.console.print(ctx.client.strip[index].gate.hold)
|
||||
return
|
||||
ctx.client.strip[index].gate.hold = new_hold
|
||||
|
||||
|
||||
@app.command(name='release')
|
||||
def release(
|
||||
new_release: Annotated[float, Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(parse=False)],
|
||||
ctx: Annotated[Context, Parameter(parse=False)],
|
||||
):
|
||||
"""Get or set the release of the specified gate.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
new_release : float, optional
|
||||
If provided, sets the release to this value. If not provided, the current release is printed.
|
||||
"""
|
||||
if new_release is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# app.console.print(ctx.client.strip[index].gate.release)
|
||||
return
|
||||
ctx.client.strip[index].gate.release = new_release
|
||||
|
||||
@@ -56,8 +56,16 @@ class StripHelpFormatter(BaseHelpFormatter):
|
||||
)
|
||||
if modified_usage == str(usage):
|
||||
modified_usage = re.sub(
|
||||
r'(\S+\s+strip)\s+(\w+)', r'\1 <index> \2', str(usage)
|
||||
r'(\S+\s+strip)\s+(\w+)',
|
||||
r'\1 <index> \2 [OPTIONS] [ARGS]',
|
||||
str(usage),
|
||||
)
|
||||
# Handle main strip command and subcommand groups
|
||||
modified_usage = re.sub(
|
||||
r'\bCOMMAND\b(?!\s+\[)', 'COMMAND [OPTIONS]', modified_usage
|
||||
)
|
||||
# Remove the duplicate INDEX that gets automatically added by cyclopts
|
||||
modified_usage = re.sub(r'\s+INDEX$', '', modified_usage)
|
||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||
|
||||
|
||||
@@ -76,8 +84,16 @@ class BusHelpFormatter(BaseHelpFormatter):
|
||||
)
|
||||
if modified_usage == str(usage):
|
||||
modified_usage = re.sub(
|
||||
r'(\S+\s+bus)\s+(\w+)', r'\1 <index> \2', str(usage)
|
||||
r'(\S+\s+bus)\s+(\w+)',
|
||||
r'\1 <index> \2 [OPTIONS] [ARGS]',
|
||||
str(usage),
|
||||
)
|
||||
# Handle main bus command and subcommand groups
|
||||
modified_usage = re.sub(
|
||||
r'\bCOMMAND\b(?!\s+\[)', 'COMMAND [OPTIONS]', modified_usage
|
||||
)
|
||||
# Remove the duplicate INDEX that gets automatically added by cyclopts
|
||||
modified_usage = re.sub(r'\s+INDEX$', '', modified_usage)
|
||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||
|
||||
|
||||
@@ -90,7 +106,9 @@ class EqHelpFormatter(BaseHelpFormatter):
|
||||
"""Render the usage line with proper <index> placement for both strip and bus commands."""
|
||||
if usage:
|
||||
modified_usage = re.sub(
|
||||
r'(\S+\s+)(\w+)(\s+eq\s+)(COMMAND)', r'\1\2 <index>\3\4', str(usage)
|
||||
r'(\S+\s+)(\w+)(\s+eq\s+)(COMMAND)',
|
||||
r'\1\2 <index>\3\4 [OPTIONS]',
|
||||
str(usage),
|
||||
)
|
||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||
|
||||
@@ -105,9 +123,11 @@ class GainlayerHelpFormatter(BaseHelpFormatter):
|
||||
if usage:
|
||||
modified_usage = re.sub(
|
||||
r'(\S+\s+strip)(\s+gainlayer\s+)(COMMAND)',
|
||||
r'\1 <index>\2<[cyan]gainlayer_index[/cyan]> \3',
|
||||
r'\1 <index>\2<[cyan]gainlayer_index[/cyan]> \3 [OPTIONS] [ARGS]',
|
||||
str(usage),
|
||||
)
|
||||
# Remove the duplicate GAINLAYER_INDEX that gets automatically added by cyclopts
|
||||
modified_usage = re.sub(r'\s+GAINLAYER_INDEX$', '', modified_usage)
|
||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||
|
||||
|
||||
@@ -121,7 +141,9 @@ class CellHelpFormatter(BaseHelpFormatter):
|
||||
if usage:
|
||||
modified_usage = re.sub(
|
||||
r'(\S+\s+)(\w+)(\s+eq\s+cell\s+)(COMMAND)',
|
||||
r'\1\2 <index>\3<[cyan]band[/cyan]> \4',
|
||||
r'\1\2 <index>\3<[cyan]band[/cyan]> \4 [ARGS]',
|
||||
str(usage),
|
||||
)
|
||||
# Remove the duplicate BAND that gets automatically added by cyclopts
|
||||
modified_usage = re.sub(r'\s+BAND$', '', modified_usage)
|
||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||
|
||||
Reference in New Issue
Block a user