VRChat OSC
Stream EEG band powers to VRChat via UDP OSC. Enable with --osc or from the dashboard.
pieeg-server --osc # defaults
pieeg-server --osc --osc-mode chatbox --osc-interval 0.5 # chatbox only, 2 HzModes
| Mode | Output |
|---|---|
chatbox | Band powers as text in VRChat chatbox |
parameters | Avatar parameter floats (normalized 0–1) |
both | Chatbox + avatar parameters (default) |
Configuration
| Flag | Default | Description |
|---|---|---|
--osc-host | 127.0.0.1 | VRChat receiver address |
--osc-port | 9000 | VRChat OSC port |
--osc-mode | both | chatbox, parameters, or both |
--osc-interval | 0.25 | Update rate in seconds |
--osc-regions-setup | — | Interactive wizard to define channel regions |
Channel Regions
By default, OSC sends band powers averaged across all channels. Use --osc-regions-setup to define custom channel groups (e.g., EEG vs EOG, frontal vs parietal):
pieeg-server --osc-regions-setupThis creates ~/.pieeg/lsl_groups.json with your region definitions. Both OSC and LSL integrations use this file for region-specific streaming.
WebSocket Control
{"cmd": "osc_start"}
{"cmd": "osc_stop"}
{"cmd": "osc_status"}
{"cmd": "osc_config", "config": {
"host": "127.0.0.1",
"port": 9000,
"mode": "both",
"interval": 0.25,
"channel": "avg"
}}The osc_config command allows hot-reloading configuration while the bridge is running.
Avatar Parameters
When in parameters or both mode, band powers are sent as normalized floats (0–1) with rolling normalization:
| Parameter | Band |
|---|---|
EEG_Delta | Delta (0.5–4 Hz) |
EEG_Theta | Theta (4–8 Hz) |
EEG_Alpha | Alpha (8–13 Hz) |
EEG_Beta | Beta (13–30 Hz) |
EEG_Gamma | Gamma (30–100 Hz) |
The VRChat OSC experience in the dashboard provides a visual configuration UI with live parameter preview.