104 lines
1.5 KiB
Python
104 lines
1.5 KiB
Python
|
|
|
|
TouchOSCControl {
|
|
var <touchOSC, <url, apply, <value;
|
|
|
|
*new { | touchOSC, url, apply, value |
|
|
^super.newCopyArgs(touchOSC, url, apply, value)
|
|
}
|
|
|
|
init {
|
|
OSCdef.new(
|
|
'osc' ++ url,
|
|
{ | msg |
|
|
value = msg[1];
|
|
apply.value(value)
|
|
},
|
|
url
|
|
);
|
|
this.send();
|
|
}
|
|
|
|
value_ { |newval|
|
|
value = newval;
|
|
this.send();
|
|
}
|
|
|
|
send {
|
|
touchOSC.send(url, value);
|
|
}
|
|
}
|
|
|
|
TouchOSCControlScale : TouchOSCControl {
|
|
var scale;
|
|
|
|
*new { | touchOSC, url, apply, value, scale |
|
|
^super.newCopyArgs(touchOSC, url, apply, value, scale)
|
|
}
|
|
|
|
init {
|
|
OSCdef.new(
|
|
'osc' ++ url,
|
|
{ | msg |
|
|
value = scale.tovalue(msg[1]);
|
|
apply.value(value);
|
|
},
|
|
url
|
|
);
|
|
this.send();
|
|
}
|
|
|
|
}
|
|
|
|
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 |
|
|
value[0] = scale1.tovalue(msg[1]);
|
|
value[1] = scale2.tovalue(msg[2]);
|
|
apply.value(value);
|
|
},
|
|
url
|
|
);
|
|
this.send();
|
|
}
|
|
|
|
send {
|
|
touchOSC.send(url, value[0], value[1]);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
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) }
|
|
|
|
}
|
|
|