From 3e65a2afea653175e4a7de7544d52f11029cfa37 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Sun, 5 Apr 2026 22:42:32 +0100 Subject: [PATCH] gainlayer router implemented reorganise package structure and update imports. patch bump --- pyproject.toml | 2 +- src/vmr_http/web/__init__.py | 5 ++++ src/vmr_http/web/bus/__init__.py | 5 ++++ src/vmr_http/web/{ => bus}/bus.py | 5 ++-- src/vmr_http/web/{busmode.py => bus/mode.py} | 0 src/vmr_http/web/strip/__init__.py | 5 ++++ .../web/{stripcomp.py => strip/comp.py} | 0 .../{stripdenoiser.py => strip/denoiser.py} | 0 src/vmr_http/web/strip/gainlayer.py | 27 +++++++++++++++++++ .../web/{stripgate.py => strip/gate.py} | 0 src/vmr_http/web/{ => strip}/strip.py | 10 ++++--- uv.lock | 2 +- 12 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 src/vmr_http/web/bus/__init__.py rename src/vmr_http/web/{ => bus}/bus.py (92%) rename src/vmr_http/web/{busmode.py => bus/mode.py} (100%) create mode 100644 src/vmr_http/web/strip/__init__.py rename src/vmr_http/web/{stripcomp.py => strip/comp.py} (100%) rename src/vmr_http/web/{stripdenoiser.py => strip/denoiser.py} (100%) create mode 100644 src/vmr_http/web/strip/gainlayer.py rename src/vmr_http/web/{stripgate.py => strip/gate.py} (100%) rename src/vmr_http/web/{ => strip}/strip.py (89%) diff --git a/pyproject.toml b/pyproject.toml index f1d6752..a046201 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "vmr-http" -version = "0.5.1" +version = "0.6.0" description = "HTTP API for controlling Voicemeeter" readme = "README.md" authors = [{ name = "onyx-and-iris", email = "code@onyxandiris.online" }] diff --git a/src/vmr_http/web/__init__.py b/src/vmr_http/web/__init__.py index e69de29..cf93d25 100644 --- a/src/vmr_http/web/__init__.py +++ b/src/vmr_http/web/__init__.py @@ -0,0 +1,5 @@ +"""API endpoints for controlling various Voicemeeter components.""" + +from . import bus, strip + +__all__ = ['bus', 'strip'] diff --git a/src/vmr_http/web/bus/__init__.py b/src/vmr_http/web/bus/__init__.py new file mode 100644 index 0000000..9207383 --- /dev/null +++ b/src/vmr_http/web/bus/__init__.py @@ -0,0 +1,5 @@ +"""module for bus-related endpoints, including the bus equalizer.""" + +from .bus import router + +__all__ = ['router'] diff --git a/src/vmr_http/web/bus.py b/src/vmr_http/web/bus/bus.py similarity index 92% rename from src/vmr_http/web/bus.py rename to src/vmr_http/web/bus/bus.py index c06f305..7c562ed 100644 --- a/src/vmr_http/web/bus.py +++ b/src/vmr_http/web/bus/bus.py @@ -4,11 +4,12 @@ from fastapi import APIRouter, Depends from vmr_http.dependencies import get_voicemeeter_client from vmr_http.models.bus import BusParams +from vmr_http.web import eq -from . import busmode, eq +from . import mode router = APIRouter() -router.include_router(busmode.router, prefix='/mode', tags=['bus mode']) +router.include_router(mode.router, prefix='/mode', tags=['bus mode']) router.include_router(eq.create_router(eq_kind='bus'), prefix='/eq', tags=['bus eq']) diff --git a/src/vmr_http/web/busmode.py b/src/vmr_http/web/bus/mode.py similarity index 100% rename from src/vmr_http/web/busmode.py rename to src/vmr_http/web/bus/mode.py diff --git a/src/vmr_http/web/strip/__init__.py b/src/vmr_http/web/strip/__init__.py new file mode 100644 index 0000000..efff071 --- /dev/null +++ b/src/vmr_http/web/strip/__init__.py @@ -0,0 +1,5 @@ +"""module for strip-related endpoints, including the strip equalizer.""" + +from .strip import router + +__all__ = ['router'] diff --git a/src/vmr_http/web/stripcomp.py b/src/vmr_http/web/strip/comp.py similarity index 100% rename from src/vmr_http/web/stripcomp.py rename to src/vmr_http/web/strip/comp.py diff --git a/src/vmr_http/web/stripdenoiser.py b/src/vmr_http/web/strip/denoiser.py similarity index 100% rename from src/vmr_http/web/stripdenoiser.py rename to src/vmr_http/web/strip/denoiser.py diff --git a/src/vmr_http/web/strip/gainlayer.py b/src/vmr_http/web/strip/gainlayer.py new file mode 100644 index 0000000..f774b3a --- /dev/null +++ b/src/vmr_http/web/strip/gainlayer.py @@ -0,0 +1,27 @@ +"""module for strip gain layer related endpoints.""" + +from fastapi import APIRouter, Body, Depends + +from vmr_http.dependencies import get_voicemeeter_client + +router = APIRouter() + + +@router.patch('') +@router.put('') +async def update_strip_comp_params( + index: int, + gainlayer_index: int, + level: float = Body(..., ge=-60.0, le=12.0, embed=True), + voicemeeter=Depends(get_voicemeeter_client), +): + """Update one or more compressor parameters for the specified strip index.""" + gainlayer = voicemeeter.strip[index].gainlayer[gainlayer_index] + gainlayer.gain = level + return {'gain_layer': {'level': gainlayer.gain}} + + +@router.get('/level') +async def get_strip_gain_layer_level(index: int, gainlayer_index: int, voicemeeter=Depends(get_voicemeeter_client)): + """Get the current gain layer level for the specified strip index.""" + return {'gain_layer': {'level': voicemeeter.strip[index].gainlayer[gainlayer_index].gain}} diff --git a/src/vmr_http/web/stripgate.py b/src/vmr_http/web/strip/gate.py similarity index 100% rename from src/vmr_http/web/stripgate.py rename to src/vmr_http/web/strip/gate.py diff --git a/src/vmr_http/web/strip.py b/src/vmr_http/web/strip/strip.py similarity index 89% rename from src/vmr_http/web/strip.py rename to src/vmr_http/web/strip/strip.py index cb318c8..06d589c 100644 --- a/src/vmr_http/web/strip.py +++ b/src/vmr_http/web/strip/strip.py @@ -4,13 +4,15 @@ from fastapi import APIRouter, Depends from vmr_http.dependencies import get_voicemeeter_client from vmr_http.models.strip import StripParams +from vmr_http.web import eq -from . import eq, stripcomp, stripdenoiser, stripgate +from . import comp, denoiser, gainlayer, gate router = APIRouter() -router.include_router(stripcomp.router, prefix='/comp', tags=['strip comp']) -router.include_router(stripgate.router, prefix='/gate', tags=['strip gate']) -router.include_router(stripdenoiser.router, prefix='/denoiser', tags=['strip denoiser']) +router.include_router(gainlayer.router, prefix='/gainlayer/{gainlayer_index}', tags=['strip gainlayer']) +router.include_router(comp.router, prefix='/comp', tags=['strip comp']) +router.include_router(gate.router, prefix='/gate', tags=['strip gate']) +router.include_router(denoiser.router, prefix='/denoiser', tags=['strip denoiser']) router.include_router(eq.create_router(eq_kind='strip'), prefix='/eq', tags=['strip eq']) diff --git a/uv.lock b/uv.lock index d36b018..16f0917 100644 --- a/uv.lock +++ b/uv.lock @@ -1151,7 +1151,7 @@ wheels = [ [[package]] name = "vmr-http" -version = "0.5.1" +version = "0.6.0" source = { editable = "." } dependencies = [ { name = "fastapi" },