What is OSC?
Open Sound Control (OSC) is a lightweight networking protocol originally designed for music and multimedia. VRChat adopted OSC as its primary interface for external applications to read and write avatar parameters, send chatbox messages, and monitor player state.
VMSC uses OSC to bridge your TikTok LIVE stream and VRChat. When a viewer sends a gift, follows, or triggers any event, VMSC can instantly change your avatar's expression, toggle props, display chatbox messages, and more — all without any VRChat mods.
OSC is a built-in VRChat feature. You do not need to install any third-party mods or plugins in VRChat to use VMSC's OSC integration.
Enabling OSC in VRChat
Before VMSC can communicate with VRChat, you need to enable OSC in the game:
-
Open the Action Menu
In VRChat, open your Action Menu (hold R on desktop or press the menu button on your VR controller).
-
Navigate to Options
Go to Options > OSC in the radial menu.
-
Enable OSC
Toggle the Enabled switch to on. VRChat will begin listening for OSC messages and sending parameter updates.
-
Reset Config (if needed)
If you have changed avatars and parameters are not responding, use Reset Config in the same menu. This forces VRChat to regenerate its OSC configuration files for your current avatar.
VMSC Connection Settings
Navigate to Settings > Outputs > VRChat OSC to configure the connection. By default, the settings work out of the box when VRChat and VMSC are running on the same computer.
| Setting | Default | Description |
|---|---|---|
| Host | 127.0.0.1 |
IP address where VRChat is running. Use 127.0.0.1 for the same machine. |
| Send Port | 9000 |
Port that VRChat listens on for incoming OSC messages. This is VRChat's default and rarely needs changing. |
| Receive Port | 9001 |
Port that VMSC listens on for outgoing OSC data from VRChat (avatar parameters, input state). |
If another OSC application (VRCFaceTracking, PiMax, etc.) is already using port 9000 or 9001, you will need to configure non-conflicting ports. Make sure to change the matching port in VRChat's OSC settings as well.
Sending Parameters
The most common use of VRChat OSC is sending parameter values to your avatar. When you create a rule action of type VRChat OSC > Send Parameter, you specify three things:
| Field | Description | Example |
|---|---|---|
| Parameter Name | The avatar parameter path. Must match your avatar's parameter name exactly (case-sensitive). | EarWiggle |
| Value | The value to send. Can be a literal or a template variable like {{giftCount}}. |
true, 0.75, 3 |
| Type | The data type of the parameter. Must match your avatar's parameter type. | Bool, Int, Float |
The full OSC address sent to VRChat follows the format:
/avatar/parameters/<ParameterName>
VMSC builds this address automatically — you only need to enter the parameter name without the prefix.
If you send a Float value to a parameter defined as Bool in your avatar, VRChat will silently ignore the message. Always verify the type matches your avatar's parameter definition.
Chatbox Messages
VMSC can display text above your VRChat avatar using the chatbox. This is useful for showing viewer names, gift alerts, or custom messages triggered by stream events.
When you create a VRChat OSC > Send Chatbox action, you can configure:
- Message — The text to display. Supports template variables like
{{username}},{{giftName}}, and{{comment}}. - Send Immediately — When enabled, the message bypasses the typing indicator and appears instantly. When disabled, VRChat simulates a typing animation before showing the text.
- Play Sound — Plays the chatbox notification sound in VRChat when the message appears.
Example chatbox message template:
{{username}} sent {{giftName}} x{{giftCount}}!
VRChat limits chatbox updates to roughly once every 1.5 seconds. If multiple messages are sent in quick succession, only the most recent one will be displayed. VMSC does not queue chatbox messages — high-frequency events may overwrite each other.
Avatar Scanning
Instead of manually typing parameter names, VMSC can auto-detect all available parameters on your current VRChat avatar by scanning the OSC cache files.
To use avatar scanning:
- Make sure OSC is enabled in VRChat and you have loaded at least one avatar since enabling it.
- In VMSC, go to Outputs > VRChat OSC and click Scan Avatar Parameters.
- VMSC reads VRChat's OSC config files from
%LOCALAPPDATA%Low\VRChat\VRChat\OSC\and extracts every parameter with its name, type, and address. - Scanned parameters appear in a searchable dropdown when configuring OSC actions, so you can select them instead of typing manually.
VRChat writes OSC config files when you first load an avatar with OSC enabled. If you upload a new version of your avatar, use Reset Config in VRChat's OSC menu, then re-scan in VMSC to pick up the new parameters.
OSC Listener (Monitor)
The OSC Monitor widget displays a live feed of all OSC messages being sent from VRChat to VMSC. This is invaluable for debugging and understanding what data your avatar is broadcasting.
The monitor shows:
- Address — The full OSC path (e.g.,
/avatar/parameters/VelocityX) - Value — The current value being sent
- Type — The data type (Bool, Int, Float)
- Timestamp — When the message was received
You can access the OSC Monitor from the dashboard widget panel or from Outputs > VRChat OSC > Open Monitor.
Parameters like VelocityX, VelocityY, and VelocityZ update many times per second. The monitor throttles the display to keep the UI responsive, but all values are received internally.
Testing Your Setup
VMSC includes a built-in test tool to verify your OSC connection without needing to trigger real stream events.
-
Open the Test Panel
Go to Outputs > VRChat OSC and find the Send Test Parameter section.
-
Enter a Parameter
Type a parameter name (e.g.,
EarWiggle), select the type (Bool), and set the value (true). -
Click Send
Click Send Test Parameter. If everything is configured correctly, your avatar should respond immediately in VRChat.
You can also test chatbox messages using the Send Test Chatbox button, which sends a sample message to your VRChat chatbox.
Common VRChat Parameters
VRChat exposes several built-in parameters on every avatar. These are useful for reading player state via the OSC listener:
| Parameter | Type | Description |
|---|---|---|
VelocityX |
Float | Lateral movement speed (-1 to 1) |
VelocityY |
Float | Vertical movement speed (-1 to 1) |
VelocityZ |
Float | Forward/backward movement speed (-1 to 1) |
Grounded |
Bool | Whether the player is on the ground |
Seated |
Bool | Whether the player is in a seat/station |
AFK |
Bool | Whether the player's headset is off (VR) or the window is unfocused (desktop) |
MuteSelf |
Bool | Whether the player's microphone is muted |
InStation |
Bool | Whether the player is in a station |
Viseme |
Int | Current viseme index for lip sync (0–14) |
GestureLeft |
Int | Left hand gesture index (0–7) |
GestureRight |
Int | Right hand gesture index (0–7) |
Custom parameters defined in your avatar's Expression Parameters asset also appear via OSC. Use the avatar scanner to discover them automatically.