Parameters Guide

This guide covers working with input parameters in VTube Studio.

Getting Input Parameters

To get a list of input parameters:

response = await vts.request_input_parameter_list()
parameters = response.data

for param in parameters:
    print(f"Parameter: {param.name}")
    print(f"  Value: {param.value}")
    print(f"  Min: {param.min}, Max: {param.max}")
    print(f"  Default: {param.defaultValue}")

Getting Parameter Values

To get the current value of a specific parameter:

from vtpy.data.requests import ParameterValueRequestData

response = await vts.request_parameter_value(
    ParameterValueRequestData(name="MouthOpen")
)

value = response.data.value
print(f"MouthOpen value: {value}")

Getting Live2D Parameters

To get Live2D-specific parameters:

response = await vts.request_live2d_parameter_list()
parameters = response.data

for param in parameters:
    print(f"Live2D Parameter: {param.name}")
    print(f"  Value: {param.value}")
    print(f"  Min: {param.min}, Max: {param.max}")

Creating Custom Parameters

You can create custom input parameters:

from vtpy.data.requests import ParameterCreationRequestData

response = await vts.request_parameter_creation(
    ParameterCreationRequestData(
        parameterName="MyCustomParameter",
        explanation="A custom parameter",
        min=0.0,
        max=1.0,
        defaultValue=0.5
    )
)

if response.data:
    print("Parameter created successfully")

Deleting Custom Parameters

To delete a custom parameter:

from vtpy.data.requests import ParameterDeletionRequestData

response = await vts.request_parameter_deletion(
    ParameterDeletionRequestData(parameterName="MyCustomParameter")
)

if response.data:
    print("Parameter deleted successfully")

Injecting Parameter Data

To inject parameter values (for face tracking or custom control):

from vtpy.data.requests import InjectParameterDataRequestData, ParameterInjectionValue

values = [
    ParameterInjectionValue(
        id="MouthOpen",
        value=0.5,
        weight=1.0
    ),
    ParameterInjectionValue(
        id="EyeOpenLeft",
        value=0.8,
        weight=1.0
    )
]

response = await vts.request_inject_parameter_data(
    InjectParameterDataRequestData(
        faceFound=True,
        mode="set",
        parameterValues=values
    )
)

Parameter Injection Modes

The injection mode can be:

  • “set”: Set the parameter to the specified value

  • “add”: Add the value to the current parameter value

  • “multiply”: Multiply the current value by the specified value

Complete Example

import asyncio
from vtpy import VTS
from vtpy.data.requests import (
    ParameterValueRequestData,
    InjectParameterDataRequestData,
    ParameterInjectionValue,
)

async def main():
    vts = VTS(plugin_name="MyPlugin", plugin_developer="MyName")

    try:
        await vts.start(host="localhost", port=8001)

        # Get all input parameters
        params_response = await vts.request_input_parameter_list()
        print("Available parameters:")
        for param in params_response.data:
            print(f"  - {param.name}: {param.value}")

        # Get specific parameter value
        mouth_response = await vts.request_parameter_value(
            ParameterValueRequestData(name="MouthOpen")
        )
        print(f"\nMouthOpen value: {mouth_response.data.value}")

        # Inject parameter values
        await vts.request_inject_parameter_data(
            InjectParameterDataRequestData(
                faceFound=True,
                mode="set",
                parameterValues=[
                    ParameterInjectionValue(
                        id="MouthOpen",
                        value=0.7,
                        weight=1.0
                    )
                ]
            )
        )
        print("\nInjected MouthOpen = 0.7")

    finally:
        if vts.connected:
            await vts.close()

asyncio.run(main())