Community:OSC Resources: Difference between revisions

From VRChat Wiki
Hackebein (talk | contribs)
smaller table width
Hackebein (talk | contribs)
added vrchat_osc, and collapsible table
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:


==Libraries==
==Libraries==
{| class="wikitable" style="text-align:center"
{| class="wikitable" style="text-align:center; table-layout:fixed; width:100%"
|-
|-
!
!
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/radarsat1/liblo liblo]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/radarsat1/liblo liblo]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/stella3d/OscCore OscCore]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/LucHeart/CoreOSC-UTF8-ASYNC CoreOSC]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/vrchat-community/vrc-oscquery-lib vrc-oscquery-lib]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/stella3d/OscCore OscCore]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/hypebeast/go-osc go-osc]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/Natsumi-sama/OscQueryLibrary OscQueryLibrary]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/hoijui/JavaOSC JavaOSC]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/vrchat-community/vrc-oscquery-lib vrc-oscquery-lib]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/colinbdclark/osc.js osc.js]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/hypebeast/go-osc go-osc]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/jangxx/node-oscquery node-oscquery]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/hoijui/JavaOSC JavaOSC]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/attwad/python-osc python-osc]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/colinbdclark/osc.js osc.js]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/theepicsnail/vrchat_oscquery vrchat_oscquery]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/jangxx/node-oscquery node-oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/fraklein/python-oscquery python-oscquery]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/attwad/python-osc python-osc]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/cyberkitsune/tinyoscquery tinyoscquery]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/theepicsnail/vrchat_oscquery vrchat_oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/klingtnet/rosc rosc]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/fraklein/python-oscquery python-oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://lib.rs/crates/oscquery oscquery]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/cyberkitsune/tinyoscquery tinyoscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/orchetect/OSCKit OSCKit]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/klingtnet/rosc rosc]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://lib.rs/crates/oscquery oscquery]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/minetake01/vrchat_osc vrchat_osc]
! style="width: 3%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 0.35em 0.1em;" | [https://github.com/orchetect/OSCKit OSCKit]
|-
|-
! style="text-align:left" | Language
! style="text-align:left" | Language
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
Line 38: Line 43:
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
Line 44: Line 50:
! style="text-align:left" | License
! style="text-align:left" | License
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | LGPL-2.1+
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | LGPL-2.1+
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
Line 54: Line 62:
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSC transport
! colspan="18" style="text-align:left; background:#9AA0AA; color:#fff" | OSC transport
|-
|-
! style="text-align:left" | Send messages
! style="text-align:left" | Send messages
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗<ref name="oscquerylib-osc">Pair with a separate OSC library such as [https://www.nuget.org/packages/LucHeart.CoreOSC LucHeart.CoreOSC] for UDP transport (see the [https://github.com/Natsumi-sama/OscQueryLibrary/tree/main/OscQueryExample example project]).</ref>
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 74: Line 85:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓<ref name="vrchat-osc-rosc">OSC UDP encode/decode via bundled [https://github.com/klingtnet/rosc rosc].</ref>
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
|-
Line 79: Line 91:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗<ref name="oscquerylib-osc" />
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 90: Line 104:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓<ref name="vrchat-osc-rosc" />
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
|-
! style="text-align:left" | Bundle support
! style="text-align:left" | Bundle support
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#D4890B; color:#fff" | ~<ref name="osccore-bundle">Receive fully supported including nested bundles; send requires low-level <code>OscWriter</code> API.</ref>
| style="background:#D4890B; color:#fff" | ~<ref name="osccore-bundle">Receive fully supported including nested bundles; send requires low-level <code>OscWriter</code> API.</ref>
| style="background:#C03030; color:#fff" | ✗<ref name="oscquerylib-osc" />
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 106: Line 123:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓<ref name="vrchat-osc-rosc" />
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | VRChat types
! colspan="18" style="text-align:left; background:#9AA0AA; color:#fff" | VRChat types
|-
|-
! style="text-align:left" | <code>i</code> (int32)
! style="text-align:left" | <code>i</code> (int32)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 120: Line 140:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓<ref name="python-osc-dep" />
| style="background:#22A84A; color:#fff" | ✓<ref name="python-osc-dep" />
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 127: Line 148:
|-
|-
! style="text-align:left" | <code>f</code> (float32)
! style="text-align:left" | <code>f</code> (float32)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 143: Line 167:
|-
|-
! style="text-align:left" | <code>s</code> (string)
! style="text-align:left" | <code>s</code> (string)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 159: Line 186:
|-
|-
! style="text-align:left" | <code>T</code> (True)
! style="text-align:left" | <code>T</code> (True)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 175: Line 205:
|-
|-
! style="text-align:left" | <code>F</code> (False)
! style="text-align:left" | <code>F</code> (False)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 185: Line 217:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 190: Line 223:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | Optional types
! colspan="18" class="mw-customtoggle-ot-b-blob mw-customtoggle-ot-h-int64 mw-customtoggle-ot-d-float64 mw-customtoggle-ot-t-timetag mw-customtoggle-ot-s-symbol mw-customtoggle-ot-c-char mw-customtoggle-ot-r-rgba-color mw-customtoggle-ot-u mw-customtoggle-ot-m-midi-message mw-customtoggle-ot-n-nil mw-customtoggle-ot-i-infinitum mw-customtoggle-ot-array" style="text-align:left; background:#9AA0AA; color:#fff; cursor:pointer" | Optional types
|-
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-b-blob"
! style="text-align:left" | <code>b</code> (blob)
! style="text-align:left" | <code>b</code> (blob)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 207: Line 242:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-h-int64"
! style="text-align:left" | <code>h</code> (int64)
! style="text-align:left" | <code>h</code> (int64)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 223: Line 261:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-d-float64"
! style="text-align:left" | <code>d</code> (float64)
! style="text-align:left" | <code>d</code> (float64)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 239: Line 280:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-t-timetag"
! style="text-align:left" | <code>t</code> (timetag)
! style="text-align:left" | <code>t</code> (timetag)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 255: Line 299:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-s-symbol"
! style="text-align:left" | <code>S</code> (symbol)
! style="text-align:left" | <code>S</code> (symbol)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 270: Line 317:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#D4890B; color:#fff" | ~<ref name="vrchat-osc-symbol">OSCQuery TYPE tag only; UDP encode/decode uses bundled [https://crates.io/crates/rosc rosc], which has no Symbol.</ref>
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-c-char"
! style="text-align:left" | <code>c</code> (char)
! style="text-align:left" | <code>c</code> (char)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 287: Line 337:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-r-rgba-color"
! style="text-align:left" | <code>r</code> (RGBA color)
! style="text-align:left" | <code>r</code> (RGBA color)
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 300: Line 353:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-u"
! style="text-align:left" | <code>u</code>
! style="text-align:left" | <code>u</code>
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 319: Line 375:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
| style="background:#C03030; color:#fff" | ✗
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-m-midi-message"
! style="text-align:left" | <code>m</code> (MIDI message)
! style="text-align:left" | <code>m</code> (MIDI message)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 335: Line 394:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-n-nil"
! style="text-align:left" | <code>N</code> (Nil)
! style="text-align:left" | <code>N</code> (Nil)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 351: Line 413:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-i-infinitum"
! style="text-align:left" | <code>I</code> (Infinitum)
! style="text-align:left" | <code>I</code> (Infinitum)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 367: Line 432:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
| style="background:#22A84A; color:#fff" | ✓
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-ot-array"
! style="text-align:left" | <code>[]</code> (array)
! style="text-align:left" | <code>[]</code> (array)
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
Line 380: Line 448:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — VRChat attributes
! colspan="18" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — VRChat attributes
|-
|-
! style="text-align:left" | HTTP server
! style="text-align:left" | HTTP server
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 399: Line 470:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|-
! style="text-align:left" | HOST_INFO
! style="text-align:left" | HOST_INFO
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 415: Line 489:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 421: Line 496:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 431: Line 508:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 437: Line 515:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 447: Line 527:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 453: Line 534:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 463: Line 546:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 469: Line 553:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 479: Line 565:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 485: Line 572:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 495: Line 584:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|-
! style="text-align:left" | RANGE
! style="text-align:left" | RANGE
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv">Advertised as supported in HOST_INFO extensions but not implemented at the node level.</ref>
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv">Advertised as supported in HOST_INFO extensions but not implemented at the node level.</ref>
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv" />
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 511: Line 603:
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv" />
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv" />
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 517: Line 610:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv">Supported on the node level but not advertised in HOST_INFO extensions.</ref>
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv">Supported on the node level but not advertised in HOST_INFO extensions.</ref>
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv">Supported on the node level but not advertised in HOST_INFO extensions.</ref>
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 528: Line 623:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv" />
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — additional OSCQuery attributes
! colspan="18" class="mw-customtoggle-oe-tags mw-customtoggle-oe-extended-type mw-customtoggle-oe-unit mw-customtoggle-oe-critical mw-customtoggle-oe-clipmode mw-customtoggle-oe-overloads" style="text-align:left; background:#9AA0AA; color:#fff; cursor:pointer" | OSCQuery server — additional OSCQuery attributes
|-
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-oe-tags"
! style="text-align:left" | TAGS
! style="text-align:left" | TAGS
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 547: Line 645:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
| style="background:#C03030; color:#fff" | ✗
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-oe-extended-type"
! style="text-align:left" | EXTENDED_TYPE
! style="text-align:left" | EXTENDED_TYPE
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 563: Line 664:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
| style="background:#C03030; color:#fff" | ✗
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-oe-unit"
! style="text-align:left" | UNIT
! style="text-align:left" | UNIT
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 579: Line 683:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
| style="background:#C03030; color:#fff" | ✗
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-oe-critical"
! style="text-align:left" | CRITICAL
! style="text-align:left" | CRITICAL
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 595: Line 702:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
| style="background:#C03030; color:#fff" | ✗
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-oe-clipmode"
! style="text-align:left" | CLIPMODE
! style="text-align:left" | CLIPMODE
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 611: Line 721:
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
| style="background:#C03030; color:#fff" | ✗
|- class="mw-collapsible mw-collapsed" id="mw-customcollapsible-oe-overloads"
! style="text-align:left" | OVERLOADS
! style="text-align:left" | OVERLOADS
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 626: Line 739:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery client
! colspan="18" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery client
|-
|-
! style="text-align:left" | HTTP client
! style="text-align:left" | HTTP client
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 644: Line 760:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | Service discovery
! colspan="18" style="text-align:left; background:#9AA0AA; color:#fff" | Service discovery
|-
|-
! style="text-align:left" | mDNS advertisement
! style="text-align:left" | mDNS advertisement
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 662: Line 781:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
|-
Line 667: Line 787:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
Line 678: Line 800:
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|}
|}

Latest revision as of 02:39, 14 August 2026

V · ECommunity-written content
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 CoreOSC OscCore OscQueryLibrary vrc-oscquery-lib go-osc JavaOSC osc.js node-oscquery python-osc vrchat_oscquery python-oscquery tinyoscquery rosc oscquery vrchat_osc OSCKit
Language C C# C# C# C# Go Java JavaScript TypeScript Python Python Python Python Rust Rust Rust Swift
License LGPL-2.1+ MIT MIT MIT MIT MIT BSD-3-Clause MIT / GPL-2.0 MIT Unlicense None MIT MIT MIT / Apache-2.0 MIT / Apache-2.0 MIT / Apache-2.0 MIT
OSC transport
Send messages [1] [2] [3]
Receive messages [1] [2] [3]
Bundle support ~[4] [1] [2] [3]
VRChat types
i (int32) [2]
f (float32)
s (string)
T (True)
F (False)
Optional types
b (blob)
h (int64) ~[5]
d (float64) ~[5]
t (timetag) ~[6] ~[5]
S (symbol) ~[7]
c (char)
r (RGBA color)
u
m (MIDI message)
N (Nil)
I (Infinitum)
[] (array)
OSCQuery server — VRChat attributes
HTTP server ~[8]
HOST_INFO ~[9]
FULL_PATH ~[10]
CONTENTS ~[10]
TYPE
ACCESS
VALUE
RANGE ~[11] ~[11] ~[11]
DESCRIPTION ~[12] ~[12] ~[12] ~[12]
OSCQuery server — additional OSCQuery attributes
TAGS
EXTENDED_TYPE
UNIT
CRITICAL
CLIPMODE
OVERLOADS
OSCQuery client
HTTP client
Service discovery
mDNS advertisement
mDNS discovery
  1. 1.0 1.1 1.2 Pair with a separate OSC library such as LucHeart.CoreOSC for UDP transport (see the example project).
  2. 2.0 2.1 2.2 2.3 Via bundled python-osc dependency; bundle support requires using python-osc's API directly.
  3. 3.0 3.1 3.2 OSC UDP encode/decode via bundled rosc.
  4. Receive fully supported including nested bundles; send requires low-level OscWriter API.
  5. 5.0 5.1 5.2 lossy type mapping to Python float.
  6. receive-only
  7. OSCQuery TYPE tag only; UDP encode/decode uses bundled rosc, which has no Symbol.
  8. Minimal VRChat-specific subset; only serves / and /?HOST_INFO.
  9. Returns OSC_PORT only; missing NAME, EXTENSIONS, OSC_IP, OSC_TRANSPORT.
  10. 10.0 10.1 Hardcoded to /avatar and /tracking paths; not a dynamic OSC address tree.
  11. 11.0 11.1 11.2 Advertised as supported in HOST_INFO extensions but not implemented at the node level.
  12. 12.0 12.1 12.2 12.3 Supported on the node level but not advertised in HOST_INFO extensions.

See Also