Community:OSC Resources
From VRChat Wiki
The following was created by the community. It may contain material not directly endorsed by the VRChat team. To learn more, consider reading Contributing to the VRChat Wiki.
Open Sound Control enables users to read and write data in VRChat. There are plenty of helpful community made tools and libraries, that use OSC, and makes developing OSC tools easier.
Tools
Libraries
| liblo | OscCore | vrc-oscquery-lib | go-osc | JavaOSC | osc.js | node-oscquery | python-osc | vrchat_oscquery | python-oscquery | tinyoscquery | rosc | oscquery | OSCKit | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Language | C | C# | C# | Go | Java | JavaScript | TypeScript | Python | Python | Python | Python | Rust | Rust | Swift |
| License | LGPL-2.1+ | MIT | MIT | MIT | BSD-3-Clause | MIT / GPL-2.0 | MIT | Unlicense | None | MIT | MIT | MIT / Apache-2.0 | MIT / Apache-2.0 | MIT |
| OSC transport | ||||||||||||||
| Send messages | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓[1] | ✗ | ✗ | ✓ | ✗ | ✓ |
| Receive messages | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓[1] | ✗ | ✗ | ✓ | ✗ | ✓ |
| Bundle support | ✓ | ~[2] | ✗ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓[1] | ✗ | ✗ | ✓ | ✗ | ✓ |
| VRChat types | ||||||||||||||
i (int32)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓[1] | ✓ | ✓ | ✓ | ✓ | ✓ |
f (float32)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
s (string)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
T (True)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
F (False)
|
✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ |
| Optional types | ||||||||||||||
b (blob)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ |
h (int64)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ~[3] | ✓ | ✓ | ✓ |
d (float64)
|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ~[3] | ✓ | ✓ | ✓ |
t (timetag)
|
✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ~[4] | ✓ | ✗ | ~[3] | ✓ | ✓ | ✓ |
S (symbol)
|
✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
c (char)
|
✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
r (RGBA color)
|
✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ |
u
|
✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
m (MIDI message)
|
✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ |
N (Nil)
|
✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ |
I (Infinitum)
|
✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
[] (array)
|
✗ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ |
| OSCQuery server — VRChat attributes | ||||||||||||||
| HTTP server | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ~[5] | ✓ | ✓ | ✗ | ✓ | ✗ |
| HOST_INFO | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ~[6] | ✓ | ✓ | ✗ | ✓ | ✗ |
| FULL_PATH | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ~[7] | ✓ | ✓ | ✗ | ✓ | ✗ |
| CONTENTS | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ~[7] | ✓ | ✓ | ✗ | ✓ | ✗ |
| TYPE | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ |
| ACCESS | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ |
| VALUE | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ |
| RANGE | ✗ | ✗ | ~[8] | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ~[8] | ✗ | ✓ | ✗ |
| DESCRIPTION | ✗ | ✗ | ~[9] | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ~[9] | ✗ | ✓ | ✗ |
| OSCQuery server — additional OSCQuery attributes | ||||||||||||||
| TAGS | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| EXTENDED_TYPE | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| UNIT | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| CRITICAL | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| CLIPMODE | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| OVERLOADS | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| OSCQuery client | ||||||||||||||
| HTTP client | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✗ | ✗ |
| Service discovery | ||||||||||||||
| mDNS advertisement | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
| mDNS discovery | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✗ | ✗ |
- ↑ 1.0 1.1 1.2 1.3 Via bundled python-osc dependency; bundle support requires using python-osc's API directly.
- ↑ Receive fully supported including nested bundles; send requires low-level
OscWriterAPI. - ↑ 3.0 3.1 3.2 lossy type mapping to Python float.
- ↑ receive-only
- ↑ Minimal VRChat-specific subset; only serves
/and/?HOST_INFO. - ↑ Returns
OSC_PORTonly; missingNAME,EXTENSIONS,OSC_IP,OSC_TRANSPORT. - ↑ 7.0 7.1 Hardcoded to
/avatarand/trackingpaths; not a dynamic OSC address tree. - ↑ 8.0 8.1 Advertised as supported in HOST_INFO extensions but not implemented at the node level.
- ↑ 9.0 9.1 Supported on the node level but not advertised in HOST_INFO extensions.