+ (define (previous-config vs)
+ (let* ((pvs (previous-voice-state vs))
+ (spi (if pvs (split-idx pvs) #f))
+ (prev-split (if spi (vector-ref result spi) #f))
+ )
+
+ (if prev-split
+ (configuration prev-split)
+ 'apart)
+
+ ))
+ (define (put-range x a b)
+ (do
+ ((i a (1+ i)))
+ ((> i b))
+ (set! (configuration (vector-ref result i) x))
+ ))
+ (define (put x)
+ (set! (configuration (vector-ref result ri)) x))
+
+ (define (try-solo type start-idx current-idx)
+ (if (< current-idx (vector-length result))
+ (let*
+ ((now-state (vector-ref result current-idx))
+ (solo-state ((if (equal? type 'solo1) car cdr) (voice-states now-state)))
+ (silent-state ((if (equal? type 'solo1) cdr car) (voice-states now-state)))
+ (silent-notes (note-events silent-state))
+ (solo-notes (note-events solo-state))
+ (soln (length solo-notes))
+ (siln (length silent-notes)))