Community:OSC Resources: Difference between revisions
From VRChat Wiki
smaller table width |
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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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: | ! 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=" | ! 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=" | ! 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=" | ! 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=" | ! 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=" | ! 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=" | ! 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=" | ! 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
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)
|
✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
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.0 1.1 1.2 Pair with a separate OSC library such as LucHeart.CoreOSC for UDP transport (see the example project).
- ↑ 2.0 2.1 2.2 2.3 Via bundled python-osc dependency; bundle support requires using python-osc's API directly.
- ↑ 3.0 3.1 3.2 OSC UDP encode/decode via bundled rosc.
- ↑ Receive fully supported including nested bundles; send requires low-level
OscWriterAPI. - ↑ 5.0 5.1 5.2 lossy type mapping to Python float.
- ↑ receive-only
- ↑ OSCQuery TYPE tag only; UDP encode/decode uses bundled rosc, which has no Symbol.
- ↑ Minimal VRChat-specific subset; only serves
/and/?HOST_INFO. - ↑ Returns
OSC_PORTonly; missingNAME,EXTENSIONS,OSC_IP,OSC_TRANSPORT. - ↑ 10.0 10.1 Hardcoded to
/avatarand/trackingpaths; not a dynamic OSC address tree. - ↑ 11.0 11.1 11.2 Advertised as supported in HOST_INFO extensions but not implemented at the node level.
- ↑ 12.0 12.1 12.2 12.3 Supported on the node level but not advertised in HOST_INFO extensions.