[LAU] OSC howto

Patrick Shirkey pshirkey at boosthardware.com
Fri Feb 8 02:45:32 UTC 2013


On Fri, February 8, 2013 12:48 pm, Joel Roth wrote:
> On Fri, Feb 08, 2013 at 07:58:02AM +1100, Patrick Shirkey wrote:
>>
>> On Fri, February 8, 2013 7:01 am, Bill Gribble wrote:
>> > On Fri, 2013-02-08 at 06:46 +1100, Patrick Shirkey wrote:
>> >> > It was quite a nice feeling to click "Learn", wiggle a fader on my
>> >> > iphone TouchOSC app, and watch the fader in my Linux app start to
>> >> move!
>> >> >
>> >>
>> >> How does one achieve that set of steps with Linux software? Is there
>> a
>> >> generic OSC control app for Linux that will communicate with any OSC
>> >> enabled app?
>> >
>> > Liblo comes with "oscsend", a command line tool to send an OSC message
>> > to a specified listener.  That's good for testing.  Also "oscdump", a
>> > server that just echoes incoming OSC requests to stdout.  A very
>> useful
>> > pair.
>> >
>> > The way I implemented learning is to add a default handler to my
>> created
>> > OSC server, take the next incoming message, pick the "path" out of it,
>> > and then add a handler for THAT in place of the default.  It's
>> possible
>> > to get in a race if you are trying to learn with lots of OSC data
>> flying
>> > around but that's the user's issue :)
>> >
>> > I think OSC was designed with the idea that the servers would define
>> the
>> > "name space" of paths and you would build a client map to send
>> controls
>> > to the proper destination.  It looks more like it's really working the
>> > other direction, where the clients/controllers define the paths they
>> are
>> > going to send, and the server is responsible for learning the
>> mappings.
>> >
>>
>> The reason I'm asking is for controlling jamin remotely. JAMin already
>> has
>> OSC functionality after all Steve Harris wrote liblo ;-)
>
> tl; dr: Can't you run it with ssh -X?
>

Requires a persistent connection which may not always be possible.

> Otherwise you have to write a little user interface that dispatches
> the OSC commands with arguments to tickle the corresponding functions
> in JAMin.
>
> If you want a bit of a GUI you'll make up creating
> a bunch of widgets for each type of control.
> In other words, sounds to me like duplicating a lot of what Jamin
> already does.
>
> I'm also considering adding OSC control to Nama although I'm
> a little peevish as Nama users already has a protocol for
> remote control: ssh!  With ssh -X I even had the Tk GUI
> running remotely. I recall there is a protocol to compress X
> network traffic as well.
>
> If I do implement OSC control for Nama, it should map fairly
> directly to Nama's existing command language, so the
> language parser will to dispatch the command inputs I get in
> the OSC format over the socket. It might be nice if
> something could be made to work with a short hack. :-)
>
>
>> My problem is figuring out how to test JAMin to make sure I haven't
>> broken
>> anything with any of my recent updates. Specifically I added a "Daemon"
>> or
>> "Headless" mode and I would like to check that the controls are all
>> still
>> working.  In addition it would be nice to be able to control the JAMin
>> daemon from a remote machine. So the the two issues are how to connect
>> to
>> a server app and also how to do that from a  remote machine.
>>
>> it looks like oscsend is going to be the way to go for now.
>>
>> I'm tempted to spend some time on a python/clutter generic osc
>> controller
>> app but if you have already started on that it might not be necessary.
>> I'm
>> also thinking of adding support for OSC send to JAMin (if it is not
>> already there) so it can be a remote controller for the JAMin daemon.
>> Call
>> it "controller" mode...
>
> I'll be interested to see how generic your solution is.
>

A generic solution would be a slider/knob and button that could be
arranged in any order/number and associated with any control value.

Then users can build their own control modules.

I'll have to check out the python module Bill mentioned first to see how
much effort is required on my part before committing to it though.

I'm not sure how to get a remote JAMin controller to find the daemon
server. If it is just a case of assigning the ip address and port number
then that should be pretty easy to implement. Just a case of adding send
commands to each control widget then.



--
Patrick Shirkey
Boost Hardware Ltd


More information about the Linux-audio-user mailing list