mirror of
https://github.com/onyx-and-iris/vmr-http.git
synced 2026-04-06 09:59:11 +00:00
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
"""module for bus-related endpoints."""
|
|
|
|
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 mode
|
|
|
|
router = APIRouter()
|
|
router.include_router(mode.router, prefix='/mode', tags=['bus mode'])
|
|
router.include_router(eq.create_router(eq_kind='bus'), prefix='/eq', tags=['bus eq'])
|
|
|
|
|
|
@router.patch('', tags=['bus'])
|
|
@router.put('', tags=['bus'])
|
|
async def update_bus_params(index: int, params: BusParams, voicemeeter=Depends(get_voicemeeter_client)):
|
|
"""Update one or more parameters for the specified bus index."""
|
|
bus = voicemeeter.bus[index]
|
|
updated = {}
|
|
for key, value in params.model_dump(exclude_unset=True).items():
|
|
setattr(bus, key, value)
|
|
updated[key] = getattr(bus, key)
|
|
return updated
|
|
|
|
|
|
@router.get('/gain', tags=['bus'])
|
|
async def get_gain(index: int, voicemeeter=Depends(get_voicemeeter_client)):
|
|
"""Get the current gain value for the specified bus index."""
|
|
return {'gain': voicemeeter.bus[index].gain}
|
|
|
|
|
|
@router.get('/mute', tags=['bus'])
|
|
async def get_mute(index: int, voicemeeter=Depends(get_voicemeeter_client)):
|
|
"""Get the current mute status for the specified bus index."""
|
|
return {'mute': voicemeeter.bus[index].mute}
|
|
|
|
|
|
@router.get('/mono', tags=['bus'])
|
|
async def get_mono(index: int, voicemeeter=Depends(get_voicemeeter_client)):
|
|
"""Get the current mono status for the specified bus index."""
|
|
opts = ['Off', 'On', 'Stereo Reverse']
|
|
return {'mono': opts[voicemeeter.bus[index].mono]}
|