I've implemented a new notation for envelopes that uses standard lists and novel strict pairs.
envelope1 :: IFloat -> GenKSig
envelope1 idur = expseg 0.01
[ 0.002 ::: 1.00
, idur - 0.002 ::: 0.01
]