The core data structure that powers Gest is what I call a "ramp tree". This provides rhythmic subdivisions of a beat.
How it works is: a phasor (periodic ramp signal) goes into the tree, and then this phasor signal is dynamically resynthesized and sped up / slowed down based on the structure of the tree. What comes out the other side is a series of 0-1 ramps of varying length relative to the input phasor.
Normally, the output of the ramp tree is used to interpolate between to values like you would a line segment. However, if you skip that step and just use the ramp tree output, you can use this as an envelope signal!