[LAU] open hw soundcard

fons at kokkinizita.net fons at kokkinizita.net
Sun Nov 15 06:14:02 EST 2009


On Sun, Nov 15, 2009 at 10:03:24AM +0100, Karl Hammar wrote:
> fons at kokkinizita.net:
> ...
> > OSC does two things:
> > 
> > 1. It encodes packet type in textual strings, which 
> >    can be structured in the same way as pathnames in
> >    file system are.
> > 
> > 2. It defines a way to describe and encode the data that
> >    follows, so you are not limited to a set of predefined
> >    formats.
> > 
> > Both are done in a way that make the conversion from/to
> > a textual representation very simple, which is some 
> > cases is a desirable feature. 
> 
> As an unix guy, I'd skip the encoding and send the whole thing as
> space separaed text, since then you could simply do a telnet to the
> other host and run it by hand. Compare e.g. to smtp.
> The performance loss of printf() and scanf() at sending/receiving
> sides are minimal, and plain text is much easier to debug.
> But, this is of cause moot, since OSC is already there.

This 'telnet style' has existed for almost as long unix has,
and clearly there was a need for something more efficient in
some types of application.

A typical use for OSC is as an the interface between a
composition language and a real-time sysnthesis engine.
For example SuperCollider works this way. If you send 1000
messages per second to 25 granular synthesis channels each
(i.e. 25k messages/s) then the printf(),scanf() overhead
is not trivial at all. And you certainly don't want to
read all of them.  

In many cases (if only a limited set of commands is required,
no wildcards, no timed commands) OSC encoding/decoding can be
done almost 'zero-copy' and using just a few lines of very
simple code. The biggest error you can make in such cases, if
efficienty is an issue, is to use a general purpose 'full'
implementation such as e.g. liblo.

Ciao,

-- 
FA

Io lo dico sempre: l'Italia è troppo stretta e lunga.




More information about the Linux-audio-user mailing list