I took a look at your chunker code and examples. This is a good
example of the assumptions I alluded to before -- Nyquist expressions that
yield sounds are evaluated in an environment that includes the current time
and stretch factor, and it is assumed that the resulting sound starts at the
current time or in the future. Also the stretch factor must be non-negative.
If either assumption is false, time is essentially running backwards and
that's not allowed because Nyquist computes samples in time order.
Since your code has a spacing from -300% to +100%, I think you'll
have to treat everything below -100% as one case and everything above as a
different case. Below -100%, you should actually move early chunks forward
to avoid negative start times. Above -100%, you should move late chunks
PS I wrote some code to read Audacity-Nyquist plugins, simulating what
Audacity does, but within Nyquist, which means you can use the debugger when
errors occur, inspect globals after the plugin has run, and use print
statements for debugging. I'm not sure where to put the code -- it can go
into the next Nyquist release, but it should really be "advertised" to
people working with Audacity. Suggestions are welcome.
As for the debugger code you wrote, is it something like what's available
when I click on the 'debug' button in a plug-in in Audacity? I only last
night found, downloaded & have been using a DOS version of XLISP 2.1e, so
am at last getting my feet wet in an interactive XLISP environment.
And more good news - I recently got a speech card which (hopefully) I'll
be able to use with my DOS screen reader in the Windows DOS 'box', and use
an interactive version of Nyquist. :))