One approach would be to use the StepSequencer. Let's say that you wanted a pattern of onsets that you gave in your example and that the total cycle time in beats is 8. Then in the Durations field, you could use:
| prevOnset |
prevOnset := 0.
#(1.5 2.5 3.618 4.382 8) collect: [:onset |
| dur |
dur := onset - prevOnset.
prevOnset := onset.
In the KeyDowns field, you would use:
and in this case you would set the endIndex to 4.
In the Rate field, you would use:
!BPM / 60
This is in terms of fractions of a beat, and you can change the duration of a beat by changing !BPM. Your Array could contain EventValues (mapped to OSC as you described) rather than those fixed values in the example. Just ensure that the final value in the Array is the "bar length" or the cycle length of the sequence so you can compute the final duration in the sequence.