I think it will look something like this:
minHold = .1;
maxHold = .75;
t1 = key(1).time;
t2 = key(2).time;
d = t2 - t1;
if (time >= t1){
t = tPrev = t1;
while (t <= time){
tPrev = t;
seedRandom(tPrev,true);
h1 = random(minHold,maxHold);
h2 = random(minHold,maxHold);
t += d*2 + h1 + h2;
}
tDiff = time - tPrev;
if (tDiff < d)
valueAtTime (t1 + tDiff)
else if (tDiff < d + h1)
key(2).value
else if (tDiff < 2*d + h1)
valueAtTime(t2 - (tDiff - (d + h1)))
else
key(1).value;
}else
value