[LAD] OSC: Divide & Conquer, or build a Stronghold?

nescivi nescivi at gmail.com
Fri Dec 18 14:53:00 UTC 2009


On Thursday 17 December 2009 18:41:31 Harry Van Haaren wrote:
> Hey all,
> 
> I've been keeping myself busy lately, mostly with Python and OSC,
> and I'm using multiple clients/controllers to send messages to a
> sampler with an OSC interface.
> 
> From this experience it seems to me a good idea, to have a kind of
>  "central"
> 
> place where all Audio programs "Announce" thier OSC port & program name &
> version,
> so the linux-audio-desktop can be a little more "coherent" for lack of a
> better word.. ;-)
> 
> We could create a kind of "Master OSC Host" which would keep track of
> which clients are running, and which ports they are using. This would be
> easiest
> to do if EACH client, would "register" itself on an agreed port.
> 
> So if a client wants to read some information, they could query the
> "Master OSC Host" with a standardised set of questions about the current
> state of QTractor/Ardour/<Any OSC capable program>.


I think the OSC protocol in and of itself is too general for this to make 
sense on a global level.

It seems you have already in mind a specific subset of kinds of data to 
exchange between programs.


There have already been several approaches for this on specific topics.

Such as the Digital Orchestra Toolkit Mapping tools, 
http://idmil.org/software/mappingtools, for mapping data between digital 
instruments/controllers, and software synths. There they define how to 
announce your controller and how to announce your synth, and then you can 
create arbitrary mappings.

Personally, I have worked on an osc-based data-exchange framework for 
exchanging data (such as sensor data, but basically any data) between 
different collaborators, creating light, sound, video or other media with 
their programs, that work on interactive performances or installations.
See http://sensestage.hexagram.ca

In the WONDER software (http://swonder.sourceforge.net) we created a central 
control host which transfers and translates OSC data between the different 
components of the software. Some of that concept could be generalized for 
programs to share any kind of osc messages with each other.

There are also some attempts amongst livecoders to share clocks for playing 
together...


To summarise, it could be an interesting project, but be aware that, since the 
OSC standard is so open - in principle it doesn't even specify the method of 
transport, though most often UDP (in most cases) or TCP/IP (fewer cases) is 
used, but there are also implementations that use a serial port transmission 
(very few cases) - (getting back to my sentence) and the implementation and 
use of it in various programs varies a lot, some are only taking incoming 
transmissions and don't send messages, if based on UDP and TCP/IP, some send 
from a fixed port, some don't, some can listen to multicast messages, others 
don't. You have to consider whether you want to require them to adhere to a 
specific namespace, or whether you want to work with their existing 
namespaces.

That being said... a general purpose osc-mapping program could be really 
useful... something you can put between two programs (one sending, one 
receiving), that translates from one namespace to another, and possibly does 
the required translations.

sincerely,
Marije



More information about the Linux-audio-dev mailing list