Hi, While working on a scheme engraver for adding harpsichord ornementations to note heads, I'd like to be able to shift accidentals or dots attached to notes.
Is it OK to add this `lily/note-column-scheme.cc' file?
note-column-scheme.patch
Description: Binary data
It makes it possible to access dot-column and accidentals from a note column, so that one can modify their placement, like in this customized parenthesis engraver: \version "2.13.18" #(define (parenthesize-engraver-acknowledge-note-head engraver note-grob source-engraver) (let* ((note-event (ly:grob-property note-grob 'cause))) (if (eqv? #t (ly:event-property note-event 'parenthesize)) (let ((paren (ly:engraver-make-grob engraver 'ParenthesesItem note-grob))) (ly:pointer-group-interface::add-grob paren 'elements note-grob) (set! (ly:grob-parent paren Y) note-grob) (set! (ly:grob-property paren 'font-size) (+ (ly:grob-property paren 'font-size 0.0) (ly:grob-property note-grob 'font-size 0.0))) ;; shift accidentals or dots, so that they do not ;; collide with the parenthesis ;; TODO: compute width ;; TODO: account for directions and priorities (let* ((note-column (ly:grob-object note-grob 'axis-group-parent-X)) (acc (ly:note-column::accidentals note-column)) (dot-col (ly:note-column::dot-column note-column)) (width 0.5)) (if dot-col (set! (ly:grob-property dot-col 'positioning-done) (lambda (grob) (ly:dot-column::calc-positioning-done grob) (ly:grob-translate-axis! grob width X)))) (if acc (set! (ly:grob-property acc 'padding) width))))))) #(define parenthesize-engraver `((acknowledgers (note-head-interface . ,parenthesize-engraver-acknowledge-note-head)))) test = { \parenthesize cis'4. \parenthesize ceses'4. c'4 <\parenthesize cis' e' g'>4. } \score { \test \layout { \context { \Score \remove "Parenthesis_engraver" \consists #parenthesize-engraver } } } { \test }
<<inline: parenthesis.png>>
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel