OpenSoundControl.org: /pages /contents /spec/1.0 /spec/1.1 /implementations /publications /about
(contents of this file: links to each section)


The Context of Open Sound Control as an Encoding

Adrian Freed August 2025

Although OSC is often compared with MIDI, they are mostly incommensurable. OSC is primarily a self-describing data encoding. MIDI is a protocol with a tacit schema and hardware specification. So to understand OSC’s technical and historical context it is useful to consider the attributes of encodings which share its key features: self-describing with named, typed data with a core set of primitive types. This table of representative encodings is ordered chronologically. This reminds us that OSC (and some precursor encodings I developed) and JSON owe much to Lisp’s S-Expr’s and property lists.

Self-Describing Data Encodings (Names + Types In-Band, Chronological)
Attribute S-Expr. (1960s) ASN.1 BER/DER (1980s) OSC 1.0 (1997) JSON (2001) YAML (~2001) BSON (2009) SMILE (2009) MessagePack (2011) EDN (2011) CBOR (2012) OSC 1.1 draft (2009 pub. 2012) OSC Ext. (libs) (2010s) UBJSON (2013) JSON5 (2013) Amazon Ion (2016)
32-bit aligned?
Zero-copy friendly? ~ ~ ~ ~ ~ ~
Timestamp resolution Parser-dep. Fractional 2−32 s ms-num ms+ ISO ms ms ns Arbitrary Fractional Same Same ms/ISO ms ns+tz
Framing / Msg boundaries ⬜ (no msg boundary) ✅ (TLV) ✅ (packet) ⬜ (needs delim/len) ✅ (doc len)
Concise (binary)
Names Symbols Tagged Addr. patterns Keys Keys Field names Back-refs Map keys Keywords Keys/tags Addr.+tags Addr.+libs Keys Keys Keys+annot.
Integers Text Tagged widths 32-bit Text num Text i32/i64/dec128 Varints i8–i64 Arbitrary Arbitrary+big +i64 Unsigned i8–i64 Text i32/i64/big
Floats Text f32/f64 f32 Text Text f64/dec128 f32/f64 f32/f64 Arbitrary f16/f32/f64 +f64 f32/f64 f32/f64/HP Text f32/f64/dec
Timestamps Symbolic Tagged NTP 64-bit Str/num ISO Date, ts Date Ext. ts (ns) Tagged Tag 0 Type t Arg t Str/num Str/num Rich ts
Booleans / Null Atoms ✅ (T/F/N/I)
Other special types Lists Telecom/crypto Anchors/sets OID/regex/bin Back-refs Ext types Keywords/tags Tags (URI,big) MIDI/char Lib extras Relaxed JSON Annot./blob
Stability Very stable Decades Frozen Very stable Stable Stable Stable Stable Stable Stable (RFC 8949) Draft Ad hoc Frozen draft Informal Active
Primary apps Lisp data Telecom, X.509 Media ctrl Web APIs Configs MongoDB JSON alt Perf RPC Clojure IoT, COSE Multimedia Multimedia libs Binary JSON niche Human configs AWS/DBs

This page of OpenSoundControl website updated Mon Aug 18 14:05:03 PDT 2025 by matt (license: CC BY).

AltStyle によって変換されたページ (->オリジナル) /