Nah, that’s about as clean as it gets. AFAIK we don’t have a doForTime
method, so the while is fine.
Could tighten up the while just slightly – it’s legal to do assignments within the condition function:
(
Tdef(\sliderPlayer, {
var durs = [3, 2, 1];
var updateRate = 0.05; // 'resolution'
durs.do { |dur|
var startTime = Main.elapsedTime;
var v;
while({
v = Main.elapsedTime - startTime;
v < dur
}, {
defer { a.value = v / dur };
updateRate.wait;
});
};
defer { a.value = 0 }; //optionally set slider to 0 when done
}).play;
hjh