I can see why there is a problem with your original code, but I think that the fact that it causes Nyquist to crash is a bug. "Asserts" are put into code by programmers to flag if something happens that should never happen, as opposed to putting in an "Error" to handle incorrect use.
The Nyquist manual states (
http://www.cs.cmu.edu/~rbd/doc/nyquist/ ... l#index135)
*stop*
Stop time of clipping region. By analogy to *start*, no sound should be generated after this time. *start* and *stop* allow a composer to preview a small section of a work without computing it from beginning to end. You can read *stop* directly, but use extract or extract-abs to modify it. Note: Due to some internal confusion between the specified starting time and the actual starting time of a signal after clipping, *stop* is not fully implemented.
EXTRACT does not simply set two parameters for the sound that it is applied to, it sets
*start* and
*stop* which are elements of the global transformation environment.
In your code "stop* is being set to two conflicting values.
In defining x-trimmed you have set *stop* to 0.25, but you are then trying to run past *stop* time, which is illegal.
In the revised code the
AT transformation handles the conflict properly by shifting the *warp* component of the environment, thus x-trimmed and y-trimmed are individually computed and then shifted according to AT.
Perhaps SEQ should handle this better, but that's going a bit too deep for me
