diff --git a/pyproject.toml b/pyproject.toml index 77ea813..f1d6752 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "vmr-http" -version = "0.5.0" +version = "0.5.1" description = "HTTP API for controlling Voicemeeter" readme = "README.md" authors = [{ name = "onyx-and-iris", email = "code@onyxandiris.online" }] diff --git a/src/vmr_http/models/bus.py b/src/vmr_http/models/bus.py index b8e76f2..58e2261 100644 --- a/src/vmr_http/models/bus.py +++ b/src/vmr_http/models/bus.py @@ -2,12 +2,12 @@ from typing import Optional -from pydantic import BaseModel +from pydantic import BaseModel, Field class BusParams(BaseModel): """Parameters for a single bus.""" - gain: Optional[float] = None - mute: Optional[bool] = None - mono: Optional[int] = None + gain: Optional[float] = Field(None, ge=-60.0, le=12.0, description='Gain value for the bus') + mute: Optional[bool] = Field(None, description='Mute status for the bus') + mono: Optional[int] = Field(None, description='Mono status for the bus') diff --git a/src/vmr_http/models/eq.py b/src/vmr_http/models/eq.py index 5a22036..8ab951d 100644 --- a/src/vmr_http/models/eq.py +++ b/src/vmr_http/models/eq.py @@ -2,21 +2,21 @@ from typing import Optional -from pydantic import BaseModel +from pydantic import BaseModel, Field class EQParams(BaseModel): """Parameters for an equalizer.""" - on: Optional[bool] = None - ab: Optional[bool] = None + on: Optional[bool] = Field(description='Whether the equalizer is enabled or not.') + ab: Optional[bool] = Field(description='Whether the equalizer is in mode A/B.') class EQChannelCellParams(BaseModel): """Parameters for an equalizer channel.""" - on: Optional[bool] = None - type: Optional[int] = None - f: Optional[float] = None - gain: Optional[float] = None - q: Optional[float] = None + on: Optional[bool] = Field(description='Whether the equalizer channel is enabled or not.') + type: Optional[int] = Field(ge=0, le=6, description='Type of the equalizer channel.') + f: Optional[float] = Field(ge=20.0, le=20000.0, description='Frequency of the equalizer channel.') + gain: Optional[float] = Field(ge=-36.0, le=18.0, description='Gain of the equalizer channel.') + q: Optional[float] = Field(ge=0.3, le=100.0, description='Q factor of the equalizer channel.') diff --git a/src/vmr_http/models/strip.py b/src/vmr_http/models/strip.py index fffabf8..8c96e10 100644 --- a/src/vmr_http/models/strip.py +++ b/src/vmr_http/models/strip.py @@ -2,53 +2,53 @@ from typing import Optional -from pydantic import BaseModel +from pydantic import BaseModel, Field class StripParams(BaseModel): """Parameters for a single strip.""" - gain: Optional[float] = None - mute: Optional[bool] = None - mono: Optional[bool] = None - solo: Optional[bool] = None - A1: Optional[bool] = None - A2: Optional[bool] = None - A3: Optional[bool] = None - A4: Optional[bool] = None - A5: Optional[bool] = None - B1: Optional[bool] = None - B2: Optional[bool] = None - B3: Optional[bool] = None + gain: Optional[float] = Field(None, ge=-60.0, le=12.0, description='Gain value for the strip') + mute: Optional[bool] = Field(None, description='Mute status for the strip') + mono: Optional[bool] = Field(None, description='Mono status for the strip') + solo: Optional[bool] = Field(None, description='Solo status for the strip') + A1: Optional[bool] = Field(None, description='A1 output status for the strip') + A2: Optional[bool] = Field(None, description='A2 output status for the strip') + A3: Optional[bool] = Field(None, description='A3 output status for the strip') + A4: Optional[bool] = Field(None, description='A4 output status for the strip') + A5: Optional[bool] = Field(None, description='A5 output status for the strip') + B1: Optional[bool] = Field(None, description='B1 output status for the strip') + B2: Optional[bool] = Field(None, description='B2 output status for the strip') + B3: Optional[bool] = Field(None, description='B3 output status for the strip') class StripCompParams(BaseModel): """Parameters for the compressor of a strip.""" - knob: Optional[float] = None - gainin: Optional[float] = None - ratio: Optional[float] = None - threshold: Optional[float] = None - attack: Optional[float] = None - release: Optional[float] = None - knee: Optional[float] = None - gainout: Optional[float] = None - makeup: Optional[bool] = None + knob: Optional[float] = Field(None, ge=0.0, le=10.0, description='Compressor knob value for the strip') + gainin: Optional[float] = Field(None, ge=-24.0, le=24.0, description='Compressor gain in value for the strip') + ratio: Optional[float] = Field(None, ge=1.0, le=8.0, description='Compressor ratio value for the strip') + threshold: Optional[float] = Field(None, ge=-40.0, le=-3.0, description='Compressor threshold value for the strip') + attack: Optional[float] = Field(None, ge=0.0, le=200.0, description='Compressor attack value for the strip') + release: Optional[float] = Field(None, ge=0.0, le=5000.0, description='Compressor release value for the strip') + knee: Optional[float] = Field(None, ge=0.0, le=1.0, description='Compressor knee value for the strip') + gainout: Optional[float] = Field(None, ge=-24.0, le=24.0, description='Compressor gain out value for the strip') + makeup: Optional[bool] = Field(None, description='Compressor makeup status for the strip') class StripGateParams(BaseModel): """Parameters for the gate of a strip.""" - knob: Optional[float] = None - threshold: Optional[float] = None - damping: Optional[float] = None - bpsidechain: Optional[float] = None - attack: Optional[float] = None - hold: Optional[float] = None - release: Optional[float] = None + knob: Optional[float] = Field(None, ge=0.0, le=10.0, description='Gate knob value for the strip') + threshold: Optional[float] = Field(None, ge=-60.0, le=-10.0, description='Gate threshold value for the strip') + damping: Optional[float] = Field(None, ge=-60.0, le=-10.0, description='Gate damping value for the strip') + bpsidechain: Optional[float] = Field(None, ge=100.0, le=4000.0, description='Gate sidechain value for the strip') + attack: Optional[float] = Field(None, ge=0.0, le=1000.0, description='Gate attack value for the strip') + hold: Optional[float] = Field(None, ge=0.0, le=5000.0, description='Gate hold value for the strip') + release: Optional[float] = Field(None, ge=0.0, le=5000.0, description='Gate release value for the strip') class StripDenoiserParams(BaseModel): """Parameters for the denoiser of a strip.""" - knob: Optional[float] = None + knob: Optional[float] = Field(None, ge=0.0, le=10.0, description='Denoiser knob value for the strip') diff --git a/uv.lock b/uv.lock index b4ec39e..d36b018 100644 --- a/uv.lock +++ b/uv.lock @@ -1151,7 +1151,7 @@ wheels = [ [[package]] name = "vmr-http" -version = "0.5.0" +version = "0.5.1" source = { editable = "." } dependencies = [ { name = "fastapi" },