Re: bend before, increase disctance to accidental
Dear Aaron, thanks for Your reply. This works fine for me! On 2020-12-04 7:10 am, Stefan Thomas wrote: Dear Thomas, thanks for Your reply! Unfortunately the code doesn't work for me, I get the error message: Processing `/tmp/lyp/wrappers/bendbefore.ly' Parsing... Interpreting music... Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `/tmp/lilypond-TlFzo5'...: In expression (rmoveto 12.500042 -2.5 ...): : Unbound variable: rmoveto Is Your code written for 2.20.0? Newer than that, as it fails with 2.20.0. There was a change to stencil expressions > that removed an extra level of quoting. For 2.20.0 and earlier, you'll > need to add that back in: > > > (exp (list 'path thickness > `(quote >(rmoveto > ,(- left-x self-x) ,(- delta-y) > rcurveto > ,(/ dx 3) 0 > ,dx ,(* 0.66 delta-y) > ,dx ,delta-y) > > > > -- Aaron Hill > > > >
Re: bend before, increase disctance to accidental
On 2020-12-04 7:10 am, Stefan Thomas wrote: Dear Thomas, thanks for Your reply! Unfortunately the code doesn't work for me, I get the error message: Processing `/tmp/lyp/wrappers/bendbefore.ly' Parsing... Interpreting music... Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `/tmp/lilypond-TlFzo5'...: In expression (rmoveto 12.500042 -2.5 ...): : Unbound variable: rmoveto Is Your code written for 2.20.0? Newer than that, as it fails with 2.20.0. There was a change to stencil expressions that removed an extra level of quoting. For 2.20.0 and earlier, you'll need to add that back in: (exp (list 'path thickness `(quote (rmoveto ,(- left-x self-x) ,(- delta-y) rcurveto ,(/ dx 3) 0 ,dx ,(* 0.66 delta-y) ,dx ,delta-y) -- Aaron Hill
Re: bend before, increase disctance to accidental
Dear Thomas, thanks for Your reply! Unfortunately the code doesn't work for me, I get the error message: > Processing `/tmp/lyp/wrappers/bendbefore.ly' > > Parsing... > > Interpreting music... > > Preprocessing graphical objects... > > Finding the ideal number of pages... > > Fitting music on 1 page... > > Drawing systems... > > Layout output to `/tmp/lilypond-TlFzo5'...: In expression > (rmoveto 12.500042 -2.5 ...): > > : Unbound variable: rmoveto > Is Your code written for 2.20.0? Thanks, Stefan Am Do., 3. Dez. 2020 um 23:13 Uhr schrieb Thomas Morley < thomasmorle...@gmail.com>: > Am Mi., 2. Dez. 2020 um 17:10 Uhr schrieb Stefan Thomas > : > > > > Dear community, > > I found a working code for a bend-before command. I would like to know, > how I could increase the distance between the bending-sign and the > accidental. > > Thanks for your help. > > Stefan > > %% SNIPPPET % > > #(define (scp-stencil grob) > > (ly:stencil-combine-at-edge > > (ly:note-head::print grob) 0 -1 > > (grob-interpret-markup grob > > #{ > > \markup > > \with-dimensions-from \null > > \path #0.2 #'((moveto -2 -1.8)(curveto -1.2 -1.8 -.5 -1.28 -.3 > -.3)) > >#} ) 0 )) > > > > scp = \once \override NoteHead.stencil = #scp-stencil > > > > { > > \clef F > > \key g\major > > bes4 \scp a g fis > > \repeat unfold 4 { r8 \scp gis' } > > \repeat unfold 3 { \scp g'!4 } > > \scp g' fis'! > > } > > %%% END %% > > (copied from > https://lists.gnu.org/archive/html/lilypond-user/2020-06/msg0.html ) > > How about below? > It uses the logic of BendAfter.stencil in a modified way. > The argument of \bendBefore is the vertical start relative to the NoteHead. > The width is determined by left and right bound. > Both like for \bendAfter. > Here the _left_ bound is the previous (NonMusical)PaperColumn, _right_ > bound the NoteHead. > This causes 'minimum-length to be useless, to lengthen the bend-curve > move the NoteColumn of the target NoteHead. > > %% DISCLAIMER > %% This is a very fast first sketch, don't use it for serious work before > %% having tested it thoroughly > > %% c/p from output-lib.scm and modified > #(define-public (bend::print-harm spanner) > (define (close a b) > (< (abs (- a b)) 0.01)) > > (let* ((lb (ly:spanner-bound spanner LEFT)) > (left-col (ly:item-get-column lb)) > (left-neighbor (ly:grob-object left-col 'left-neighbor))) > (ly:spanner-set-bound! spanner LEFT left-neighbor) > (ly:spanner-set-bound! spanner RIGHT lb) > > (let* ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position))) >(left-span left-neighbor) >(right-span lb) >(thickness (* (ly:grob-property spanner 'thickness) > (ly:output-def-lookup (ly:grob-layout spanner) >'line-thickness))) >(padding (ly:grob-property spanner 'padding 0.5)) >(common > (ly:grob-common-refpoint >right-span >(ly:grob-common-refpoint spanner left-span X) >X)) >(common-y (ly:grob-common-refpoint spanner left-span Y)) >(minimum-length (ly:grob-property spanner 'minimum-length 0.5)) >(left-x > (+ padding > (interval-end > (ly:generic-bound-extent left-span common >(acc (ly:grob-object right-span 'accidental-grob)) >(right-x > (max (- (interval-start >(if (ly:grob? acc) >(ly:generic-bound-extent acc common) >(ly:generic-bound-extent right-span common))) > padding) > (+ left-x minimum-length))) >(self-x (ly:grob-relative-coordinate spanner common X)) >(dx (- right-x left-x)) >(exp (list 'path thickness > `(rmoveto > ,(- left-x self-x) ,(- delta-y) > rcurveto > ,(/ dx 3) 0 > ,dx ,(* 0.66 delta-y) > ,dx ,delta-y > > (ly:make-stencil >exp >(cons (- left-x self-x) (- right-x self-x)) >(ordered-cons 0 (- delta-y)) > > bendBefore = > -\tweak stencil #bend::print-harm > -\bendAfter \etc > > > %% EXAMPLES > > > %% DISADVANTAGE > %% Using minimum-length will lead to undesired results > %% Instead, move the NoteColumn > > > \relative c'' { > \omit Staff.TimeSignature > \key cis \major > \override Score.SpacingSpanner.shortest-duration-space = #4.0 > %\override BendAfter.padding = 1 > cis2-\bendBefore #5 > c2-\bendBefore #4 > | > %\break > \once \override NoteColumn.X-offset = 3 > ees2-\bendBefore #-4.75 >
Re: bend before, increase disctance to accidental
Am Mi., 2. Dez. 2020 um 17:10 Uhr schrieb Stefan Thomas : > > Dear community, > I found a working code for a bend-before command. I would like to know, how > I could increase the distance between the bending-sign and the accidental. > Thanks for your help. > Stefan > %% SNIPPPET % > #(define (scp-stencil grob) > (ly:stencil-combine-at-edge > (ly:note-head::print grob) 0 -1 > (grob-interpret-markup grob > #{ > \markup > \with-dimensions-from \null > \path #0.2 #'((moveto -2 -1.8)(curveto -1.2 -1.8 -.5 -1.28 -.3 -.3)) >#} ) 0 )) > > scp = \once \override NoteHead.stencil = #scp-stencil > > { > \clef F > \key g\major > bes4 \scp a g fis > \repeat unfold 4 { r8 \scp gis' } > \repeat unfold 3 { \scp g'!4 } > \scp g' fis'! > } > %%% END %% > (copied from > https://lists.gnu.org/archive/html/lilypond-user/2020-06/msg0.html ) How about below? It uses the logic of BendAfter.stencil in a modified way. The argument of \bendBefore is the vertical start relative to the NoteHead. The width is determined by left and right bound. Both like for \bendAfter. Here the _left_ bound is the previous (NonMusical)PaperColumn, _right_ bound the NoteHead. This causes 'minimum-length to be useless, to lengthen the bend-curve move the NoteColumn of the target NoteHead. %% DISCLAIMER %% This is a very fast first sketch, don't use it for serious work before %% having tested it thoroughly %% c/p from output-lib.scm and modified #(define-public (bend::print-harm spanner) (define (close a b) (< (abs (- a b)) 0.01)) (let* ((lb (ly:spanner-bound spanner LEFT)) (left-col (ly:item-get-column lb)) (left-neighbor (ly:grob-object left-col 'left-neighbor))) (ly:spanner-set-bound! spanner LEFT left-neighbor) (ly:spanner-set-bound! spanner RIGHT lb) (let* ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position))) (left-span left-neighbor) (right-span lb) (thickness (* (ly:grob-property spanner 'thickness) (ly:output-def-lookup (ly:grob-layout spanner) 'line-thickness))) (padding (ly:grob-property spanner 'padding 0.5)) (common (ly:grob-common-refpoint right-span (ly:grob-common-refpoint spanner left-span X) X)) (common-y (ly:grob-common-refpoint spanner left-span Y)) (minimum-length (ly:grob-property spanner 'minimum-length 0.5)) (left-x (+ padding (interval-end (ly:generic-bound-extent left-span common (acc (ly:grob-object right-span 'accidental-grob)) (right-x (max (- (interval-start (if (ly:grob? acc) (ly:generic-bound-extent acc common) (ly:generic-bound-extent right-span common))) padding) (+ left-x minimum-length))) (self-x (ly:grob-relative-coordinate spanner common X)) (dx (- right-x left-x)) (exp (list 'path thickness `(rmoveto ,(- left-x self-x) ,(- delta-y) rcurveto ,(/ dx 3) 0 ,dx ,(* 0.66 delta-y) ,dx ,delta-y (ly:make-stencil exp (cons (- left-x self-x) (- right-x self-x)) (ordered-cons 0 (- delta-y)) bendBefore = -\tweak stencil #bend::print-harm -\bendAfter \etc %% EXAMPLES %% DISADVANTAGE %% Using minimum-length will lead to undesired results %% Instead, move the NoteColumn \relative c'' { \omit Staff.TimeSignature \key cis \major \override Score.SpacingSpanner.shortest-duration-space = #4.0 %\override BendAfter.padding = 1 cis2-\bendBefore #5 c2-\bendBefore #4 | %\break \once \override NoteColumn.X-offset = 3 ees2-\bendBefore #-4.75 c2-\bendBefore #8.5 | \once \override NoteColumn.X-offset = 3 fis1-\bendBefore #-6 } HTH a bit, Harm