The convention for calls is that there is a function c_something which
is type NoteCall or ControlCall or whatever. It then extracts what is
needed from the PassedArgs and passes those values to a function
something which is of type NoteDeriver or ControlDeriver or whatever.
The idea is that PassedArgs is a large dependency and it should be reduced
immediately to what is needed.

random

Get an infinite list of random numbers. These are deterministic in that
they depend only on the random seed, but the random seed is hashed with
each stack entry. So if you fix the random seed at a certain point, you
should get consistent results below it.

It's a class because both Doubles and Ints are useful and I'd like to use
the same function name for both.

time

Get the real duration of time val at the given point in time. RealTime is
linear, so 1 second is always 1 second no matter where it is, but ScoreTime
will map to different amounts of RealTime depending on where it is.

Like real_duration, but get the duration in ScoreTime. If you are
manipulating deriver abstractly instead of directly emitting events then you
will place them via Internal.at and family, which are in ScoreTime.

Get the timestep duration from the given point. This tries first to
step forward, and then back. This is because typically you use this to
configure duration for a call, and it's confusing when the call stops
working at the end of the block.