A standalone VTube Studio parameter controller that allows you to create, manage, and animate custom parameters for your VTube Studio model.
💡 Important Notes:
- ✅ No Camera Tracking Required - Works completely independently of face/hand tracking
- ✅ Model-Safe - Does NOT modify your model files
- ✅ Parameter Copy - Can optionally extract and copy existing parameters from your model
- ✅ Non-Destructive - All animations are applied in real-time via the VTube Studio API
- ✨ Real-time Parameter Control - Create and manage custom VTube Studio parameters
- 🎭 Live Animation - Animate your model with mathematical functions (sine, cosine, random waves, etc.)
- 🎨 Advanced Node Editor - Visual programming system for complex animations (NEW!)
- 📊 15+ Animation Presets - Fox ears, wagging tail, breathing, blinking, and more
- 🔗 Node-Based Logic - Connect nodes for conditions, math, timing, and effects
- 📈 Live Preview Graph - See your animation in real-time before applying
- ⚡ Heartbeat System - Real-time parameter value generation and sending
- 🎮 Easy Connection - Simple WebSocket connection to VTube Studio
- 💾 Parameter Persistence - Save and load parameter configurations
- 🔍 Filter & Search - Quickly find parameters in large setups
- 🔄 Transfer Settings Between Model Versions - Perfect for migrating settings when upgrading your model or working with multiple versions. Copy hotkeys, parameters, and expressions from older versions to newer ones without manual reconfiguration. Especially useful for Live2D riggers working with iterative model improvements.
- 🔒 Automatic Backups - VTS configuration backups are created before any modifications (backup system is currently basic and VTS-only)
- 📋 Selective Transfer - Choose exactly what to transfer (individual hotkeys, specific parameters, etc.)
- 🎯 Visual Model Browser - See all your models with thumbnails and metadata
- 🛡️ Safe Operations - Validation and dry-run preview before making changes
- Download the latest release using the badge above
- Extract the ZIP file
- Run
VTS-Control-Panel.exe - Connect to VTube Studio (Settings tab)
- Create and animate parameters (VTS Parameters tab)
- Transfer settings between models (Model Manager tab)
The Model Manager automatically discovers your VTube Studio installation and all your models:
- Open the Model Manager tab
- Select source model (the model you want to copy settings from)
- Select target model (the model you want to copy settings to)
- Click "Transfer Settings →" to copy everything
- A backup is automatically created before any changes
When you transfer settings between models:
- ✅ All Hotkeys - Including keybinds and associated actions
- ✅ All Parameters - Input/output mappings and ranges
- ✅ Expression Files -
.exp3.jsonand.motion3.jsonfiles - ✅ Automatic UUID Generation - New hotkey IDs to avoid conflicts
- ✅ Automatic Backup -
.vtube.json.backup_[timestamp]created
- 🔒 Automatic Backups - Created before every modification
- ✅ Validation - Checks file integrity before and after transfer
- 🔄 Rollback Support - Can restore from backup if needed
⚠️ Confirmation Dialogs - Warns before making changes- 📝 Detailed Logs - All operations are logged for troubleshooting
The Node Editor provides a visual programming interface for creating complex parameter animations:
⚠️ Alpha/Beta Status:
- The Node Editor is currently in active development
- ✅ Basic nodes work reliably (Timer, Wave, Random, Math, Range, Output)
⚠️ Some complex nodes may be broken or unstable:
- Read VTS Parameter node (reading live VTS values)
- Twitch Chat React nodes (chat integration)
- Expect bugs and breaking changes as development continues
- Use at your own risk for production streams!
- Create a parameter in the VTS Parameters tab
- Click "⚙️ Advanced Mode" on the parameter card
- Add nodes from the toolbar (Timer, Wave, Random, Math, etc.)
- Connect nodes by dragging from output to input sockets
- Enable "Enable Advanced Mode" checkbox
- Close popup - your animation is now running!
Generators:
- ⏱️ Timer - Time-based values (count up, range, loop)
- 🌊 Wave - Wave patterns (sine, triangle, square, bounce)
- 🎲 Random - Random values at specified intervals
- 🔢 Number - Constant values
Processing:
- ➕ Math - Add, subtract, multiply, divide, average
- 📏 Range - Clamp values between min/max
- 🔄 Convert - Type conversion (float, int, bool)
- ⏸️ Sample & Hold - Update only at intervals
Logic:
- 🔀 If/Else - Conditional branching
- 🔣 Logic - AND, OR, NOT operations
- ⏰ Time Schedule - Time-based triggers
Output:
- 📤 Output - Send to VTube Studio (combines multiple inputs)
Load pre-built animations with one click:
- 🦊 Fox Ear Flick - Random quick ear movements
- 🐾 Wagging Tail - Natural wagging with speed variation
- 💨 Breathing Motion - Smooth breathing animation
- 👁️ Eye Blink - Natural occasional blinks
- ✨ Idle Sway - Multi-frequency natural sway
- 🎵 Music Bounce - Rhythmic up/down with variation
- And 9 more!
- 📊 Live Preview - See output in real-time graph
- 💾 Save/Load - Graphs persist across sessions
- 🎨 Visual Feedback - Color-coded sockets by data type
- 🔍 Cycle Detection - Warns about infinite loops
- ⚡ Optimized - Caching and thread-safe evaluation
Understanding what each control does will help you create amazing animations!
| Control | Description |
|---|---|
| Parameter Name | Unique identifier for the parameter in VTube Studio. Double-click to rename! |
| Enabled Checkbox | Enable/disable this parameter's animation |
| Min/Max Values | Range limits for the parameter (-10 to 10 for rotation, -1 to 1 for others) |
| Default Value | Starting value when parameter is created |
| Control | Description |
|---|---|
| Math Function | Choose animation type: • Sine Wave - Smooth oscillation • Cosine Wave - Sine wave offset by 90° • Triangle Wave - Linear up/down movement • Square Wave - Sharp on/off switching • Sawtooth Wave - Ramp up then instant drop • Random Wave - Natural random movement • Gaussian Wave - Bell curve oscillation • Perlin Noise - Smooth organic noise |
| Math Frequency | How fast the wave cycles (higher = faster oscillation) |
| Math Amplitude | Height of the wave (how far from center it moves) |
| Math Offset | Baseline shift (moves the whole wave up/down) |
| Generation Speed | Overall speed multiplier for value generation |
| Values Per Second | How many times per second to update this parameter |
Create breathing/idle patterns by adding pauses:
| Control | Description |
|---|---|
| Enable Pause | Toggle pause pattern on/off |
| Pause Duration | How long to hold the pause value (seconds) |
| Pause Interval | Time between pauses (seconds) |
| Pause Value | What value to hold during pause |
| Duration Random % | Add variance to pause length |
| Interval Random % | Add variance to pause timing |
| Amount Random % | Add variance to pause value |
Add natural variation to parameters:
| Control | Description |
|---|---|
| Enable Random | Toggle randomization on/off |
| Random Percent | How much to vary the value (±percentage) |
| Random Seed | Seed for reproducible randomness |
| Random Function | Distribution type (Uniform/Gaussian/etc.) |
Create subtle head movements when not talking:
- Add parameter
FaceAngleX(head tilt) - Set Math Function: Random Wave
- Set Min:
-5, Max:5 - Set Math Frequency:
0.3(slow) - Set Math Amplitude:
0.7(subtle) - Enable Pause: Duration
3s, Interval8s - Enable and start heartbeat
Add natural breathing movement:
- Add parameter
BreathAmount - Set Math Function: Sine Wave
- Set Math Frequency:
0.2(breathing rate) - Set Math Amplitude:
1.0 - Set Values Per Second:
10(smooth) - Enable and start heartbeat
Occasional random movements:
- Add parameter
EyeOpenLeft - Set Math Function: Random Wave
- Enable Pause: Duration
0.2s, Interval4s - Set Interval Random:
50%(varies 2-6s) - Enable and start heartbeat
Create a swaying tail movement:
- Add parameter
TailSwingorTailRotation - Set Math Function: Sine Wave (smooth back and forth)
- Set Min:
-15, Max:15(swing angle) - Set Math Frequency:
0.5(moderate speed) - Set Math Amplitude:
1.0 - Set Math Offset:
0(center position) - Optional: Add slight randomization (5-10%) for natural variation
- Enable and start heartbeat
Tip: For a more playful tail, use Random Wave instead with higher frequency!
Animate extra ears (fox, cat, bunny) independently:
- Add parameter
EarLeftRotationandEarRightRotation - Set Math Function: Cosine Wave (offset from each other)
- Set Min:
-10, Max:10 - Set Math Frequency:
0.4(gentle movement) - Set Math Amplitude:
0.6(subtle) - For the right ear, add Math Offset:
0.5(creates natural offset) - Enable Pause: Duration
2s, Interval5s(occasional twitches) - Enable and start heartbeat
Advanced Tip: Use different frequencies for left and right ears to create more organic movement!
Make a companion pet/mascot blink naturally:
- Add parameter
PetEyeOpenorCompanionBlink - Set Math Function: Square Wave (instant blink)
- Set Min:
0(closed), Max:1(open) - Set Default Value:
1(eyes open) - Enable Pause:
- Pause Value:
0(eyes closed) - Pause Duration:
0.15s(quick blink) - Pause Interval:
3s(blink every 3 seconds) - Interval Random:
60%(varies between 1.2-4.8s)
- Pause Value:
- Enable and start heartbeat
Make your pet/mascot look around curiously:
- Add parameter
PetHeadRotationorCompanionLookX - Set Math Function: Random Wave
- Set Min:
-20, Max:20(look left/right range) - Set Math Frequency:
0.2(slow, curious movement) - Set Math Amplitude:
0.8 - Enable Pause:
- Pause Duration:
2s(hold gaze) - Pause Interval:
4s(look around interval) - Duration Random:
40%(varied hold times)
- Pause Duration:
- Optional: Add second parameter
PetLookYfor vertical looking - Enable and start heartbeat
Pro Tip: Combine horizontal and vertical look parameters for more realistic scanning behavior!
- Windows 10/11
- VTube Studio (running and API enabled)
Note: The standalone executable includes all necessary dependencies!
-
Install VTube Studio
- Download from Steam or Official Website
- Launch VTube Studio and load a model
-
Enable VTube Studio API
- In VTube Studio, go to Settings
- Enable "API" in the settings
- Note the port number (default: 8001)
# Navigate to the vts-control-panel folder
cd vts-control-panel
# Run using the batch script
run.bat
# OR run directly with Python
..\venv_py311\Scripts\python.exe main.py# Navigate to the vts-control-panel folder
cd vts-control-panel
# Run the build script
build_exe.bat
# The executable will be in the dist folder
cd dist
VTS-Control-Panel.exe-
Launch the Application
- Run the downloaded
VTS-Control-Panel.exe
- Run the downloaded
-
Configure Connection
- Go to the Settings tab
- Enter the VTube Studio API URL (default:
ws://localhost:8001/) - Click Connect
- Approve the authentication request in VTube Studio when prompted
-
Start Using
- Go to the VTS Parameters tab
- Add parameters or load existing ones
- Enable parameters and click ▶ Start Heartbeat to animate your model
The main tab where you create and manage parameters.
- Filter Bar - Search/filter parameters by name (always visible at top)
- Clear Button - Clear the filter
- Parameter Cards - Each parameter has its own card with all controls
- Scroll through your parameters while keeping filter and buttons visible
- Add Parameter - Create a new parameter
- Save Parameters - Save current configuration to JSON
- Refresh - Reload parameters from JSON file
- Extract from VTube - Import parameters from currently loaded VTS model
- Disable All - Quickly disable all parameters at once
- ▶ Start Heartbeat - Begin real-time parameter animation
Configure your VTube Studio connection:
| Setting | Description |
|---|---|
| API URL | WebSocket address of VTube Studio (default: ws://localhost:8001/) |
| Auto-connect | Automatically connect on startup |
| Status | Current connection status (Connected ✓ / Not connected) |
| Connect Button | Manually connect/disconnect |
Stores application settings:
- VTS API URL and authentication token
- Window size and position
- Auto-connect preference
- Parameter JSON file path
Stores all your parameter configurations:
- Parameter names and ranges
- Math function settings
- Animation settings
- Pause patterns
- Randomization settings
Tip: You can share your custom_params.json file with other VTubers!
Solutions:
- Ensure VTube Studio is running
- Enable API in VTube Studio settings
- Check the port number matches (default: 8001)
- Check firewall isn't blocking the connection
- Try
ws://localhost:8001/orws://127.0.0.1:8001/
Solutions:
- Make sure you clicked Connect in Settings tab
- Wait for "Connected ✓" status
- Enable at least one parameter
- Click ▶ Start Heartbeat
- Check VTube Studio API logs for errors
Solutions:
- Verify parameters are Enabled (checkbox checked)
- Check parameter names match VTS parameter IDs
- Ensure min/max ranges are appropriate
- Try increasing Math Amplitude for more visible movement
- Check VTube Studio model has the parameters mapped
Solutions:
- Make sure you're using Python 3.11
- Run from the venv:
..\venv_py311\Scripts\python.exe main.py - Check
vts_control_panel.logfor error messages - Ensure all dependencies are installed in the venv
To create a standalone executable:
# 1. Navigate to vts-control-panel folder
cd vts-control-panel
# 2. Run build script (requires PyInstaller in venv)
build_exe.bat
# 3. Find executable in dist folder
cd distThe built executable will include:
- All Python dependencies
- Configuration files
- README and documentation
vts-control-panel/
├── main.py # Application entry point
├── config_manager.py # Configuration management
├── vts_service.py # VTS WebSocket communication
├── vts_api.py # VTS API implementation
├── vts_params_tab.py # Parameters UI tab
├── vts_settings_tab.py # Settings UI tab
├── config.ini # User configuration
├── custom_params.json # Parameter definitions
├── run.bat # Quick start script
└── build_exe.bat # Build executable script
The codebase uses AIKA's VTS implementation:
vts_api.py- Low-level WebSocket APIvts_service.py- High-level service with persistent event loopui/components/vts_params.py- Full parameter management UI (from AIKA)
- Built on AIKA's VTube Studio integration
- Uses VTube Studio API
- UI framework: PyQt6
This project is part of the AIKA VTuber Control Panel suite.
For issues, questions, or feature requests, please check:
- This README's troubleshooting section
- VTube Studio API documentation
- The
vts_control_panel.logfile for error details
Made with ❤️ for VTubers