X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fmusic-functions.scm;h=9790cbf1a3d145a8524b3e20b1b874c59c117de6;hb=be0d9095e87a8bb77492050b16c1dcac5877de9b;hp=25b223bbe9826016cf692c5e3c4f14624aa72176;hpb=8989740243130648ca6263c164fa01da9b819036;p=lilypond.git diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 25b223bbe9..9790cbf1a3 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -1004,18 +1004,12 @@ then revert skipTypesetting." (equal? laziness #t) (<= bar-number (+ (cadr alteration-def) laziness)))) -(define (accidental-voided? alteration-def) - "Checks an alteration entry for being voided. - -Non-key alterations are voided when tying into the next bar or when -there is a clef change, since neither repetition nor cancellation can -be omitted when the same note occurs again. - -Returns @code{#f} or the reason for the voiding, a symbol." +(define (is-tied? alteration-def) (let* ((def (if (pair? alteration-def) - (car alteration-def) - alteration-def))) - (and (symbol? def) def))) + (car alteration-def) + alteration-def))) + + (if (equal? def 'tied) #t #f))) (define (extract-alteration alteration-def) (cond ((number? alteration-def) @@ -1083,7 +1077,7 @@ specifies whether accidentals should be canceled in different octaves." (from-key-sig (set! previous-alteration from-key-sig))) - (if (accidental-voided? previous-alteration) + (if (is-tied? previous-alteration) (set! need-accidental #t) (let* ((prev-alt (extract-alteration previous-alteration)) @@ -1141,14 +1135,10 @@ immediately', that is, only look at key signature. @code{#t} is `forever'." (and (pair? (car entry)) (cdddr entry))) (define (key-entry-alteration entry) - "Return the alteration of an entry in localKeySignature. - -For convenience, returns @code{0} if entry is @code{#f}." - (if entry - (if (number? (car entry)) - (cdr entry) - (cadr entry)) - 0)) + "Return the alteration of an entry in localKeySignature." + (if (number? (car entry)) + (cdr entry) + (cadr entry))) (define-public (find-pitch-entry keysig pitch accept-global accept-local) "Return the first entry in @var{keysig} that matches @var{pitch}. @@ -1177,7 +1167,9 @@ look at bar lines nor different accidentals at the same note name." (if (not entry) (cons #f #f) (let* ((global-entry (find-pitch-entry keysig pitch #t #f)) - (key-acc (key-entry-alteration global-entry)) + (key-acc (if (equal? global-entry #f) + 0 + (key-entry-alteration global-entry))) (acc (ly:pitch-alteration pitch)) (entrymp (key-entry-measure-position entry)) (entrybn (key-entry-bar-number entry))) @@ -1193,7 +1185,9 @@ on the same staff line." (if (not entry) (cons #f #f) (let* ((global-entry (find-pitch-entry keysig pitch #f #f)) - (key-acc (key-entry-alteration global-entry)) + (key-acc (if (equal? global-entry #f) + 0 + (key-entry-alteration global-entry))) (acc (ly:pitch-alteration pitch)) (entrymp (key-entry-measure-position entry)) (entrybn (key-entry-bar-number entry))) @@ -1377,36 +1371,6 @@ as a context." (ly:warning (_ "unknown accidental style: ~S") style) (make-sequential-music '())))))) -(define-public (invalidate-alterations context) - "Invalidate alterations in @var{context}. - -Elements of @code{'localKeySignature} corresponding to local -alterations of the key signature have the form -@code{'((octave . notename) . (alter barnum . measurepos))}. -Replace them with a version where @code{alter} is set to @code{'clef} -to force a repetition of accidentals. - -Entries that conform with the current key signature are not invalidated." - (let* ((keysig (ly:context-property context 'keySignature))) - (set! (ly:context-property context 'localKeySignature) - (map-in-order - (lambda (entry) - (let* ((localalt (key-entry-alteration entry)) - (localoct (key-entry-octave entry))) - (if (or (accidental-voided? localalt) - (not localoct) - (= localalt - (key-entry-alteration - (find-pitch-entry - keysig - (ly:make-pitch localoct - (key-entry-notename entry) - 0) - #t #t)))) - entry - (cons (car entry) (cons 'clef (cddr entry)))))) - (ly:context-property context 'localKeySignature))))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-public (skip-of-length mus)