gainlayer router implemented

reorganise package structure and update imports.

patch bump
This commit is contained in:
onyx-and-iris 2026-04-05 22:42:32 +01:00
parent b7b35c796a
commit 95ad5c2ff4
12 changed files with 53 additions and 8 deletions

View File

@ -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" }]

View File

@ -0,0 +1,5 @@
"""API endpoints for controlling various Voicemeeter components."""
from . import bus, strip
__all__ = ['bus', 'strip']

View File

@ -0,0 +1,5 @@
"""module for bus-related endpoints, including the bus equalizer."""
from .bus import router
__all__ = ['router']

View File

@ -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'])

View File

@ -0,0 +1,5 @@
"""module for strip-related endpoints, including the strip equalizer."""
from .strip import router
__all__ = ['router']

View File

@ -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}}

View File

@ -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'])

2
uv.lock generated
View File

@ -1151,7 +1151,7 @@ wheels = [
[[package]]
name = "vmr-http"
version = "0.5.1"
version = "0.6.0"
source = { editable = "." }
dependencies = [
{ name = "fastapi" },