Re: bend before, increase disctance to accidental

2020-12-04 Thread Stefan Thomas
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

2020-12-04 Thread Aaron Hill

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

2020-12-04 Thread Stefan Thomas
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

2020-12-03 Thread Thomas Morley
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



bend before, increase disctance to accidental

2020-12-02 Thread 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 )