This class groups together a transmitter and receiver, allowing bidirectional OSC communication from the perspective of a client.
XXX TODO -- this transport has not yet been implemented.
A packet codec defines how the translation between Java objects and OSC atoms is accomplished.
A packet codec defines how the translation between Java objects
and OSC atoms is accomplished. For example, by default, when
an OSC message is assembled for transmission, the encoder will
translate ajava.lang.Integer
argument into
a four byte integer with typetag 'i'
. Or when
a received message is being decoded, finding an atom typetagged
'f'
, the decoder will create a java.lang.Float
out of it.
This example sounds trivial, but the codec is also able to handle
type conversions. For instance, in the strict OSC 1.0 specification,
only 32bit numeric atoms are defined ('i'
and 'f'
).
A codec with mode MODE_STRICT_V1
will reject a
java.lang.Double
in the encoding process and not be
able to decode a typetag 'd'
. A codec with mode
MODE_MODEST
automatically breaks down everything the 32bit,
so a java.lang.Double
gets encoded as 32bit 'f'
and a received atom tagged 'd'
becomes a
java.lang.Float
. Other configurations exist.
Another important function of the codec is to specify the charset encoding
of strings, something that was overseen in the OSC 1.0 spec. By default,
UTF-8
is used so all special characters can be safely encoded.
Last but not least, using the putDecoder
and putEncoder
methods, the codec can be extended to support additional Java classes or
OSC typetags, without the need to subclass PacketCodec
.
TCP
as a transport for OSC.
TCP
as a transport for OSC. At the moment, packets
are encoded in the OSC 1.0 format, regardless of
of the configuration's packet codec. That means
the 32-bit Int size followed by the actual plain packet is
encoded. The OSC 1.1 draft suggests SLIP
(cf. http://www.faqs.org/rfcs/rfc1055.html).
This may be configurable in the future.
This class groups together a transmitter and receiver, allowing bidirectional OSC communication from the perspective of a client. It simplifies the need to use several objects by uniting their functionality. </P><P> In the following example, a client for UDP to SuperCollider server (scsynth) on the local machine is created. The client starts a synth by sending a
/s_new
message, and stops the synth by sending a delayed a/n_set
message. It waits for the synth to die which is recognized by an incoming/n_end
message from scsynth after we've registered using a/notify
command.OSCServer
Receiver
Transmitter