Handling time in a ms-agnostic way could work well as long as the basic time unit is not arbitrary.
In that case it would be useful to have an operator to define this time unit.
An easy to understand way would be to have some sort of tap tempo operator. The simplest version could take the interval between two TAPs as the time unit. A slightly more advanced version could use an average over more than two TAPs (but might require a reset option).
The simplest syntax for this could be :
WS.TAP
But then the non-obvious thing in terms of user understanding is that you need to do that twice to get a relevant result.
I also think that being able to specify this unit in ms could be useful for the more mathematically inclined of us so having that option would be nice. For that, there could be an optional parameter in TAP that, when specified, would set the time unit in ms.
WS.TAP 100
-> set the time unit to 100ms
After this, this basic time unit could be used for the CUE operator or other similar things.
WS.TAP 100
WS.CUE
WS.CUE 20
–> set the time unit to 100ms, create a cue at the current position, create a cue 2 seconds (20*100ms) after the current position
A different syntax would probably be better to be able to use TAP as an accessor too, and CUE defined just like that is probably quite confusing. This is obviously just a very rough first idea…