Post by Andy W. SchmederPost by Kaspar BumkeJust been wondering about the state and plans for OSC 1.1. The paper
outlining it is from 2009 and in the description of additional types for
instance it says "These may be found in the specification and are
omitted here in the interests of brevity". But there seems to be no page
with the full specification. I understand the finalization has been put
on hold due to budget cuts but is there any sort of plan for it?
I am especially interested in the SLIP USB-Serial specification and
would find it really great if it would actually be started to be used by
soft-synth and DAW developers. This would allow for a whole range of new
OSC devices that are USB only.
The plan for OSC 1.1 was never more than to patch up some of the most glaring problems.
I think that to have OSC devices working well with a broad range of
applications and connectivity methods requires a lot more effort and
probably some improvements to the core format, in particular better type
support and the functional "glue layers", i.e., discovery, enumeration and
control. Possibly the main issue is implementing and testing all that
which is considerable...
About a year ago I started drafting an OSC 2.0 document, similar format to
1.0 but not 100% backwards compatible, ABNF grammar-based, and having a
type system and type meta-data descriptors based on ISO/IEC 11404:2007.
void (N)
bit int 1 (0)
signed bit S1 (1)
int S7 (c)
int S15 (u)
int S23 (a)
int S31 (i)
int S63 (h)
int S127 (j)
unsigned int 8 (C)
unsigned int 16 (U)
unsigned int 24 (A)
unsigned int 32 (I)
unsigned int 64 (H)
unsigned int 128 (J)
fixed-point S7.8 (p)
fixed-point S15.16 (v)
fixed-point S23.24 (w)
fixed-point S31.32 (x)
fixed-point S63.64 (y)
fixed-point S127.128 (z)
unsigned fixed-point 8.8 (P)
unsigned fixed-point 16.16 (V)
unsigned fixed-point 24.24 (W)
unsigned fixed-point 32.32 (X)
unsigned fixed-point 64.64 (Y)
unsigned fixed-point 128.128 (Z)
float 16 (e)
float 32 (f)
float 64 (d)
float 128 (q)
Fixed-length composite type modifiers
dyad (2)
quad (4)
octet (8)
16-tet (E)
32-tet (F)
64-tet (D)
128-tet (Q)
interval pair (-)
complex pair (+)
complex circular interval (*)
utf-8 string (s)
binary section (b)
dense vector (|)
sparse vector (:)
dense matrix (%)
unlimited unbounded int n (_)
unlimited unbounded fixed-point n.n (.)
list ([])
object ({})
---
Andy W. Schmeder
email: andy [at] cnmat.berkeley.edu
skype: andy.schmeder
Programmer/Analyst II
Research Group
Center for New Music and Audio Technologies
University of California at Berkeley
http://cnmat.berkeley.edu
_______________________________________________
OSC_dev mailing list
http://lists.create.ucsb.edu/mailman/listinfo/osc_dev
Andy, if I might just say - that looks great from a user point of view,
but having to implement all of those types would be a nightmare from a
developer point of view. Why the need for so many different integer
lengths, and so many different fixed point values ? I would stick to fewer
types as a developer, e.g.
(i) int32 (for backwards compatibility)
(I) int64
(f) float32
(F) float64 (?)
(s) NULL terminated string (for backwards compatibility)
(b) binary data (int64 length followed by length bytes of data)
I would say all we really need are F and b ! Maybe not even F, we could
represent numbers in atol() format.
So a message would be just:
/msg/foo\0<data0_len><data0><data1_len><data1>....<datan_len><datan>\0
Then implement typetags as meta-data, something like:
/msg/foo/.typetags/get
returns a string of typetags.
The advantage of doing it this way:
- client gets to define parameters of message at runtime (discovery)
- client/host can ignore any formats they dont understand (just send 0
length data)
- message format is simplified
Regards,
Salsaman.
Salsaman.
http://lives.sourceforge.net