SETOMTServer

2008

Till Bovermann

Neuroinformatics Group, Bielefeld University, Germany

a server fullfilling the TUIO-Specs.

Uses the proprietary OSC protocol for the Mutlitouch surface implemented by mayan.

Format has to be the following:

/mt "set" <numItems> <id> <x> <y> <id> <x> <y> ...

the used format String (explained in SETObject) is then

'_ixy'

*new(netaddr, setoClass)

netaddr a netaddr, default nil; listening to all.

setoClass the Class of the created objects.

Must be a subclass of SETObject, defaults to SETObject.

start

starts listening

stop

stops litening

gui

creates a gui representing recognized objects (2D for now and no rotation)

(

t = SETOMTServer(nil, SETOdump); // listen to all messages from anywhere

t.start;

g = t.gui;

// send it messages

n = NetAddr.localAddr;

n.sendMsg('/mt', \set, 1, 400, 400);

i.update

)

t.stop;

///////////////////////

o = OSCresponder(NetAddr("192.168.0.20", nil), "/client", {|time, resp, msg| msg.postln})

o.add

o.remove

------------------

basic tonal example

SynthDef(\testTUIO, {|freq = 400, out = 0, amp = 0, vol = 0.25, famp=1|

Out.ar([out, out+1], SinOsc.ar(freq, 0, (amp.lag(0.01)*vol*famp)))

}).send(s);

q = ();

(

q.synths = IdentityDictionary.new; // a storage for synths

JITseto.action = {|me|

s.bind{

// make sure there is a synth

q.synths[me].isNil.if{

q.synths[me] = Synth(\testTUIO, [\vol, 0.2, \amp, 0])

};

s.sync;

me.visible.if({

q.synths[me].set(

\freq, me.pos[0].linexp(0, 1, 300, 800),

\amp, me.pos[1]

)

}, {

q.synths[me].set(

\amp, 0

)

})

}

}

)

// instantiate SETOServer

t = SETOMTServer(nil, JITseto); // listen to all messages from anywhere

t.gui;

t.start;

t.stop;