(define (analyse-tie-start active ev)
(if (equal? (ly:music-property ev 'name) 'TieEvent)
- (acons 'tie index active)
+ (acons 'tie (split-index (vector-ref voice-state-vec index))
+ active)
active))
(define (analyse-tie-end active ev)
(if (and (= (length pitches1) (length pitches2)))
(if (and (pair? pitches1)
(pair? pitches2)
- (< chord-threshold (ly:pitch-steps
- (ly:pitch-diff (car pitches1) (car pitches2)))))
+ (or
+ (< chord-threshold (ly:pitch-steps
+ (ly:pitch-diff (car pitches1)
+ (car pitches2))))
+
+ ;; voice crossings:
+ (> 0 (ly:pitch-steps (ly:pitch-diff (car pitches1)
+ (car pitches2))))
+ ))
(put 'apart)
;; copy previous split state from spanner state
(begin
(let* ((now-state (vector-ref result ri))
(vs1 (car (voice-states now-state)))
(vs2 (cdr (voice-states now-state))))
+
+
(cond ((not vs1) (put 'apart))
((not vs2) (put 'apart))
(else