Compare commits

..

No commits in common. "2df49cdac806fdfe30fa2f47e3373685553a87dd" and "902fb3359955418fec52fef2eab9d40db4f0c212" have entirely different histories.

2 changed files with 8 additions and 198 deletions

View File

@ -1,71 +1,19 @@
// Class for binding to a TouchOSC interface
//
// I don't feel well enough to actually code this today so here are some notes.
// - bind a /url to a function
// - provide builtins for linear and exponential controls
// - provide builtins for X-Y and modal/radio buttons
//
//
TouchOSC {
var <net, <controls;
var <>ip, <>port;
*new { | ip, port |
^super.new.init(ip, port)
}
init { | ip, port |
net = NetAddr(ip, port);
controls = Dictionary();
}
send { | url ... oargs |
net.sendMsg(url, *oargs)
}
label { | url, default |
var ctrl = TouchOSCLabel(this, url, default);
ctrl.init();
controls.put(url, ctrl);
^ctrl;
}
button { | url, default, apply |
var ctrl = TouchOSCControl(this, url, apply, default);
ctrl.init();
controls.put(url, ctrl);
^ctrl;
}
slider { | url, default, scale, apply |
var ctrl = TouchOSCControlScale(this, url, apply, default, scale);
ctrl.init();
controls.put(url, ctrl);
^ctrl;
}
xy { | url, default, scale1, scale2, apply |
var ctrl = TouchOSCControlXY(this, url, apply, default, scale1, scale2);
ctrl.init();
controls.put(url, ctrl);
^ctrl;
}
v { | url |
^if( controls.at(url).isNil.not,
{ controls.at(url).value },
{ ("v: No control with url" + url).postln }
);
}
v_ { | url, v |
^if( controls.at(url).isNil.not,
{ controls.at(url).value_(v) },
{ ("v_: No control with url" + url).postln }
);
}
s_ { | url, v |
^if( controls.at(url).isNil.not,
{ controls.at(url).send_(v) },
{ ("s_: No control with url" + url).postln }
);
}
}

View File

@ -1,138 +0,0 @@
TouchOSCControl {
var <touchOSC, <url, apply, <value;
*new { | touchOSC, url, apply, value |
^super.newCopyArgs(touchOSC, url, apply, value)
}
init {
OSCdef.new(
'osc' ++ url,
{ | msg, time |
value = msg[1];
apply.value(value, time)
},
url
);
apply.value(value, 0);
this.send();
}
value_ { |newval|
value = newval;
apply.value(value, 0);
this.send();
}
send {
touchOSC.send(url, value);
}
send_ { |newval|
value = newval;
this.send();
}
}
TouchOSCControlScale : TouchOSCControl {
var scale;
*new { | touchOSC, url, apply, value, scale |
^super.newCopyArgs(touchOSC, url, apply, value, scale)
}
init {
OSCdef.new(
'osc' ++ url,
{ | msg, time |
value = scale.tovalue(msg[1]);
apply.value(value, time);
},
url
);
apply.value(value, 0);
this.send();
}
send {
touchOSC.send(url, scale.toctrl(value));
}
}
TouchOSCControlXY : TouchOSCControl {
var scale1, scale2;
*new { | touchOSC, url, apply, value, scale1, scale2 |
^super.newCopyArgs(touchOSC, url, apply, value, scale1, scale2)
}
init {
OSCdef.new(
'osc' ++ url,
{ | msg, time |
value[0] = scale1.tovalue(msg[1]);
value[1] = scale2.tovalue(msg[2]);
apply.value(value, time);
},
url
);
apply.value(value, 0);
this.send();
}
send {
touchOSC.send(url, scale1.toctrl(value[0]), scale2.toctrl(value[1]));
}
}
TouchOSCLabel {
var <touchOSC, <url, <value;
*new { | touchOSC, url, value |
^super.newCopyArgs(touchOSC, url, value)
}
init {
this.send();
}
value_ { |newval|
value = newval;
this.send();
}
send {
touchOSC.send(url, value);
}
}
TouchOSCScale {
var <min, <max;
*new { | min, max |
^super.newCopyArgs(min, max)
}
tovalue { | c | ^c.linlin(0, 1, min, max) }
toctrl { | v | ^v.linlin(min, max, 0, 1) }
}
// todo - better validation so that you can't set min as 0
TouchOSCScaleExp : TouchOSCScale {
tovalue { | c | ^c.linexp(0, 1, min, max) }
toctrl { | v | ^v.explin(min, max, 0, 1) }
}