diff --git a/lib-src/libnyquist/nyquist/nyqsrc/samples.c b/lib-src/libnyquist/nyquist/nyqsrc/samples.c index 3fc97883d..d25e86665 100644 --- a/lib-src/libnyquist/nyquist/nyqsrc/samples.c +++ b/lib-src/libnyquist/nyquist/nyqsrc/samples.c @@ -13,6 +13,7 @@ #include "sound.h" #include "falloc.h" #include "samples.h" +#include LVAL s_next = NULL; @@ -115,10 +116,16 @@ LVAL snd_samples(sound_type s, int64_t len) long vx = 0; int blocklen; register double scale_factor = s->scale; - len = (long) snd_length(s, len); + len = snd_length(s, len); s = sound_copy(s); xlsave1(v); + + // xlisp's maximum vector size is limited. If we exceed the limit, + // we'll return a shorter array of samples than requested. + if (len > INT_MAX / sizeof(LVAL)) { + len = INT_MAX / sizeof(LVAL); + } v = newvector(len); while (len > 0) { diff --git a/lib-src/libnyquist/nyquist/nyqsrc/trigger.c b/lib-src/libnyquist/nyquist/nyqsrc/trigger.c index e7bbb2bd1..0d0fe24b8 100644 --- a/lib-src/libnyquist/nyquist/nyqsrc/trigger.c +++ b/lib-src/libnyquist/nyquist/nyqsrc/trigger.c @@ -48,7 +48,7 @@ the previous value so re-reading will not re-trigger.) #include "cext.h" #include "assert.h" -#define TRIGGERDBG 1 +#define TRIGGERDBG 0 #define D if (TRIGGERDBG) /* Note: this structure is identical to an add_susp structure up diff --git a/nyquist/nyquist.lsp b/nyquist/nyquist.lsp index 6d60e06cc..12ec235c2 100644 --- a/nyquist/nyquist.lsp +++ b/nyquist/nyquist.lsp @@ -668,7 +668,7 @@ loop (ny:error "SAMPLER" 2 '((SOUND) "modulation") modulation)) (ny:assert-sample "SAMPLER" 3 "table" sample) (ny:typecheck (not (integerp npoints)) - (ny:error "BUZZ" 3 '((INTEGER) "npoints") npoints)) + (ny:error "SAMPLER" 3 '((INTEGER) "npoints") npoints)) (let ((samp (car sample)) (samp-pitch (cadr sample)) (samp-loop-start (caddr sample)) diff --git a/nyquist/seq.lsp b/nyquist/seq.lsp index 03c336a19..ea9172bae 100644 --- a/nyquist/seq.lsp +++ b/nyquist/seq.lsp @@ -199,9 +199,8 @@ ;; a more helpful stack trace for SAL. (defmacro trigger (input beh) `(let* ((nyq%environment (nyq:the-environment)) - (gate%signal (force-srate *sound-srate* ,input)) - (s%rate (snd-srate gate%signal))) - (snd-trigger gate%signal + (s%rate *sound-srate*)) + (snd-trigger (force-srate *sound-srate* ,input) #'(lambda (t0) (eval-seq-behavior ,beh "TRIGGER")))))