7 Commits

Author SHA1 Message Date
a1da5c7256 patch bump 2026-03-02 12:04:21 +00:00
642337d987 pause-recording command added, to differentiate from playback pausing. 2026-03-02 12:04:01 +00:00
51002edb39 upd IN 4 2026-03-02 12:02:14 +00:00
d30c9f828d upd recorder examples
add implementation note 4
2026-03-02 11:59:56 +00:00
a9c3168542 add uv lock pre-commit config 2026-03-02 02:27:49 +00:00
fba3eddea8 upd link to packet ident:1 2026-03-02 01:39:50 +00:00
6c2c924a48 upd implementation notes. 2026-03-02 01:36:46 +00:00
5 changed files with 40 additions and 19 deletions

7
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,7 @@
repos:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.10.7
hooks:
# Update the uv lockfile
- id: uv-lock

View File

@@ -144,9 +144,9 @@ examples:
```console ```console
vban-cli recorder play vban-cli recorder play
vban-cli recorder rew vban-cli recorder pause
vban-cli recorder replay vban-cli recorder goto "00:01:30"
``` ```
see `vban-cli recorder --help` for more info. see `vban-cli recorder --help` for more info.
@@ -177,9 +177,10 @@ see `vban-cli sendtext --help` for more info.
## Implementation Notes ## Implementation Notes
1. The VBAN TEXT subprotocol defines two packet structures [ident:0][ident-0] and [ident:1][ident-1]. Neither of them contain the data for Bus EQ parameters. 1. The VBAN RT SERVICE subprotocol defines two packet structures [ident:0][ident-0] and [ident:1][ident-1]. Neither of them contain the data for Bus EQ parameters.
2. Packet structure with [ident:1][ident-1] is emitted by the VBAN server only on pdirty events. This means we do not receive the current state of those parameters on initial subscription. Therefore any commands which are intended to fetch the value of parameters defined in packet [ident:1][ident-1] will not work in this CLI. 2. Packet structure with [ident:1][ident-1] is emitted by the VBAN server only on pdirty events. This means we do not receive the current state of those parameters on initial subscription. Therefore any commands which are intended to fetch the value of parameters defined in packet [ident:1][ident-1] will not work in this CLI.
3. Packet structure with [ident:1][ident-1] defines parameteric EQ data only for the [first channel][ident-1-peq]. 3. Packet structure with [ident:1][ident-1] defines parameteric EQ data only for the [first channel][ident-1-peq].
4. There doesn't appear to be any way to retrieve the current recorder status, ie, recording, playing, stopped etc. I don't see the data available in either packet structures [ident:0][ident-0] or [ident:1][ident-1].
--- ---
@@ -200,5 +201,5 @@ If there's something missing that you would like to see added the best bet is to
[ident-0]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/3be2c1c36563afbd6df3da8436406c77d2cc1f10/VoicemeeterRemote.h#L896 [ident-0]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/3be2c1c36563afbd6df3da8436406c77d2cc1f10/VoicemeeterRemote.h#L896
[ident-1]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/3be2c1c36563afbd6df3da8436406c77d2cc1f10/VoicemeeterRemote.h#L982 [ident-1]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/3be2c1c36563afbd6df3da8436406c77d2cc1f10/VoicemeeterRemote.h#L1053
[ident-1-peq]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/3be2c1c36563afbd6df3da8436406c77d2cc1f10/VoicemeeterRemote.h#L995 [ident-1-peq]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/3be2c1c36563afbd6df3da8436406c77d2cc1f10/VoicemeeterRemote.h#L995

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "vban-cli" name = "vban-cli"
version = "0.9.0" version = "0.9.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" }

View File

@@ -20,26 +20,29 @@ def play(
console.out.print('Recorder playback started.') console.out.print('Recorder playback started.')
@app.command(name='stop')
def stop(
*,
ctx: Annotated[Context, Parameter(show=False)] = None,
):
"""Stop the recorder playback."""
ctx.client.recorder.stop()
console.out.print('Recorder playback stopped.')
@app.command(name='pause') @app.command(name='pause')
def pause( def pause(
*, *,
ctx: Annotated[Context, Parameter(show=False)] = None, ctx: Annotated[Context, Parameter(show=False)] = None,
): ):
"""Pause the recorder playback.""" """Pause the recorder playback."""
ctx.client.recorder.pause() ctx.client.recorder.stop()
console.out.print('Recorder playback paused.') console.out.print('Recorder playback paused.')
@app.command(name='stop')
def stop(
*,
ctx: Annotated[Context, Parameter(show=False)] = None,
):
"""Stop the recorder playback/recording and reset to the beginning."""
ctx.client.recorder.stop()
ctx.client.recorder.goto('00:00:00')
# We have no way of knowing if the recorder was playing or recording, so we print a generic message.
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 4.
console.out.print('Recorder stopped.')
@app.command(name='replay') @app.command(name='replay')
def replay( def replay(
*, *,
@@ -57,7 +60,17 @@ def record(
): ):
"""Start recording.""" """Start recording."""
ctx.client.recorder.record() ctx.client.recorder.record()
console.out.print('Recording started.') console.out.print('Recorder recording started.')
@app.command(name='pause-recording')
def pause_recording(
*,
ctx: Annotated[Context, Parameter(show=False)] = None,
):
"""Pause the recorder recording."""
ctx.client.recorder.pause()
console.out.print('Recorder recording paused.')
@app.command(name='ff') @app.command(name='ff')

4
uv.lock generated
View File

@@ -124,7 +124,7 @@ wheels = [
[[package]] [[package]]
name = "vban-cli" name = "vban-cli"
version = "0.9.0" version = "0.9.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.8.0" version = "2.8.1"
source = { editable = "../vban-cmd-python" } source = { editable = "../vban-cmd-python" }
[package.metadata] [package.metadata]