[CM] [SND] Explicit access to find-channel in reverse

Bill Schottstaedt bil@ccrma.Stanford.EDU
Tue, 3 Apr 2007 04:50:01 -0700

> How, in Snd, is it possible to do the equivalent of C-r, i.e. do backward searches in the channel using 
> Scheme? Do I set up a sample-reader, or... 

Here's one way:

(define* (find-channel-in-reverse proc :optional beg snd chn edpos)
  (let* ((sample (or beg (1- (frames snd chn)))) ; or cursor?
         (reader (make-sample-reader sample snd chn -1 edpos))
         (result #f))
    (do ((i sample (1- i)))
        ((or result (< i 0)) 
         (and result
             (list result i)))
      (set! result (proc (reader))))))