lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: can bendAfter be made to skip over notes?


From: 98123981293 1293812397123
Subject: Re: can bendAfter be made to skip over notes?
Date: Tue, 27 Oct 2020 12:21:01 -0400

Hi Aaron,

I tried all three of your solutions and get the same error:

Unsupported SCM value for format: (rmoveto 2.777338 1/2 rcurveto 1.81180552352106 0 5.43541657056318 -1 5.43541657056318 -3/2)

Converting to `document.pdf'...

warning: `(gs -q -dNODISPLAY -dNOSAFER -dNOPAUSE -dBATCH -dAutoRotatePages=/None -dPrinted=false ./tmp--tmp-1982250)' failed (1)


I appreciate the attempt though. Will keep this in the back of my mind for future learning; for now will probably just use regular glissando.

-Kyle


On Tue, Oct 27, 2020 at 4:58 AM <lilypond-user-request@gnu.org> wrote:
Send lilypond-user mailing list submissions to
        lilypond-user@gnu.org

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.gnu.org/mailman/listinfo/lilypond-user
or, via email, send a message with subject or body 'help' to
        lilypond-user-request@gnu.org

You can reach the person managing the list at
        lilypond-user-owner@gnu.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of lilypond-user digest..."
Today's Topics:

   1. Re: can bendAfter be made to skip over notes? (Aaron Hill)
   2. Re: can bendAfter be made to skip over notes? (Aaron Hill)
   3. Re: can bendAfter be made to skip over notes? (Aaron Hill)
   4. Problems with Barré (sir.teddy.the.first@gmail.com)



---------- Forwarded message ----------
From: Aaron Hill <lilypond@hillvisions.com>
To: lilypond-user@gnu.org
Cc: 
Bcc: 
Date: Mon, 26 Oct 2020 22:54:31 -0700
Subject: Re: can bendAfter be made to skip over notes?
On 2020-10-26 7:37 pm, 98123981293 1293812397123 wrote:
> Hi list,
>
> I usually use the following snippet to handle glissandi across hidden
> noteheads:
>
> glissandoSkipOn = {
>   \override NoteColumn.glissando-skip = ##t
>   \hide NoteHead
>   \override Accidental.transparent = ##t
>   \override NoteHead.no-ledgers = ##t
> }
>
> is it possible to implement something similar for bendAfter? A quick
> check
> of the archives did not reveal anything relevant but please link me if
> this
> has already been covered. Pic attached with the line as I want it to
> look
> in green.
>
> Thank you,
> Kyle

The Glissando_engraver knows to look for glissando-skip, however no such
logic exists for Bend_engraver.  It would be possible to re-write the
engraver and introduce a new bend-skip context property, however a
perhaps simpler option is to change the stencil for a glissando to look
like a bend:

%%%%
\version "2.20.0"

bend-glissando-print =
#(lambda (grob)
   (let* ((lnh (ly:spanner-bound grob LEFT))
          (rnh (ly:spanner-bound grob RIGHT))
          (lsp (ly:grob-staff-position lnh))
          (rsp (ly:grob-staff-position rnh))
          (dy (/ (- rsp lsp) 2))
          (dot (ly:grob-object lnh 'dot))
          (acc (ly:grob-object rnh 'accidental-grob))
          (th (* (ly:grob-property grob 'thickness 1)
                 (ly:output-def-lookup (ly:grob-layout grob)
                                       'line-thickness)))
          (pad (ly:grob-property grob 'padding 0.5))
          (cmx (ly:grob-common-refpoint
                 (ly:grob-common-refpoint grob lnh X) rnh X))
          (cmy (ly:grob-common-refpoint grob lnh Y))
          (lx (+ pad (max (interval-end (ly:generic-bound-extent lnh
cmx))
                          (if dot
                              (interval-end
                               (ly:grob-robust-relative-extent dot cmx
X))
                              (- INFINITY-INT)))))
          (rx (- (min (interval-start (ly:generic-bound-extent rnh cmx))
                      (if acc
                          (interval-start
                           (ly:grob-robust-relative-extent acc cmx X))
                          INFINITY-INT))
                 pad))
          (dx (- rx lx))
          (sx (ly:grob-relative-coordinate grob cmx X)))
     (ly:make-stencil
       (list 'path th
         `(quote
           (rmoveto ,(- lx sx) 0.5
            rcurveto ,(/ dx 3) 0 ,dx ,(* dy 2/3) ,dx ,dy)))
       (cons (- lx sx) (- rx sx))
       (cons (+ 0.5 (min 0 dy)) (+ 0.5 (max 0 dy))))))

bendGlissando =
   \tweak thickness #2
   \tweak stencil #bend-glissando-print
   \glissando

{ c''2. \bendGlissando
   \once \override NoteColumn.glissando-skip = ##t
   e'4 gis'1 }
%%%%


-- Aaron Hill


---------- Forwarded message ----------
From: Aaron Hill <lilypond@hillvisions.com>
To: lilypond-user@gnu.org
Cc: 
Bcc: 
Date: Mon, 26 Oct 2020 22:56:41 -0700
Subject: Re: can bendAfter be made to skip over notes?
On 2020-10-26 10:54 pm, Aaron Hill wrote:
> On 2020-10-26 7:37 pm, 98123981293 1293812397123 wrote:
>> Hi list,
>>
>> I usually use the following snippet to handle glissandi across hidden
>> noteheads:
>>
>> glissandoSkipOn = {
>>   \override NoteColumn.glissando-skip = ##t
>>   \hide NoteHead
>>   \override Accidental.transparent = ##t
>>   \override NoteHead.no-ledgers = ##t
>> }
>>
>> is it possible to implement something similar for bendAfter? A quick
>> check
>> of the archives did not reveal anything relevant but please link me if
>> this
>> has already been covered. Pic attached with the line as I want it to
>> look
>> in green.
>>
>> Thank you,
>> Kyle
>
> The Glissando_engraver knows to look for glissando-skip, however no
> such logic exists for Bend_engraver.  It would be possible to re-write
> the engraver and introduce a new bend-skip context property, however a
> perhaps simpler option is to change the stencil for a glissando to
> look like a bend:
>
> [...]

Sorry, I pasted an old version of the code that did not handle the
vertical alignment properly:

%%%%
\version "2.20.0"

bend-glissando-print =
#(lambda (grob)
   (let* ((lnh (ly:spanner-bound grob LEFT))
          (rnh (ly:spanner-bound grob RIGHT))
          (lsp (ly:grob-staff-position lnh))
          (rsp (ly:grob-staff-position rnh))
          (dy (/ (- rsp lsp) 2))
          (dot (ly:grob-object lnh 'dot))
          (acc (ly:grob-object rnh 'accidental-grob))
          (th (* (ly:grob-property grob 'thickness 1)
                 (ly:output-def-lookup (ly:grob-layout grob)
                                       'line-thickness)))
          (pad (ly:grob-property grob 'padding 0.5))
          (cmx (ly:grob-common-refpoint
                 (ly:grob-common-refpoint grob lnh X) rnh X))
          (cmy (ly:grob-common-refpoint grob lnh Y))
          (lx (+ pad (max (interval-end (ly:generic-bound-extent lnh
cmx))
                          (if dot
                              (interval-end
                               (ly:grob-robust-relative-extent dot cmx
X))
                              (- INFINITY-INT)))))
          (rx (- (min (interval-start (ly:generic-bound-extent rnh cmx))
                      (if acc
                          (interval-start
                           (ly:grob-robust-relative-extent acc cmx X))
                          INFINITY-INT))
                 pad))
          (dx (- rx lx))
          (sx (ly:grob-relative-coordinate grob cmx X)))
     (ly:make-stencil
       (list 'path th
         `(quote
           (rmoveto ,(- lx sx) ,(/ lsp 2)
            rcurveto ,(/ dx 3) 0 ,dx ,(* dy 2/3) ,dx ,dy)))
       (cons (- lx sx) (- rx sx))
       (cons (+ (/ lsp 2) (min 0 dy)) (+ 0.5 (max 0 dy))))))

bendGlissando =
   \tweak thickness #2
   \tweak stencil #bend-glissando-print
   \glissando

{ c''2. \bendGlissando
   \once \override NoteColumn.glissando-skip = ##t
   e'4 gis'1 }
%%%%

-- Aaron Hill





---------- Forwarded message ----------
From: Aaron Hill <lilypond@hillvisions.com>
To: lilypond-user@gnu.org
Cc: 
Bcc: 
Date: Mon, 26 Oct 2020 23:01:20 -0700
Subject: Re: can bendAfter be made to skip over notes?
On 2020-10-26 10:56 pm, Aaron Hill wrote:
> On 2020-10-26 10:54 pm, Aaron Hill wrote:
>> On 2020-10-26 7:37 pm, 98123981293 1293812397123 wrote:
>>> Hi list,
>>>
>>> I usually use the following snippet to handle glissandi across hidden
>>> noteheads:
>>>
>>> glissandoSkipOn = {
>>>   \override NoteColumn.glissando-skip = ##t
>>>   \hide NoteHead
>>>   \override Accidental.transparent = ##t
>>>   \override NoteHead.no-ledgers = ##t
>>> }
>>>
>>> is it possible to implement something similar for bendAfter? A quick
>>> check
>>> of the archives did not reveal anything relevant but please link me
>>> if this
>>> has already been covered. Pic attached with the line as I want it to
>>> look
>>> in green.
>>>
>>> Thank you,
>>> Kyle
>>
>> The Glissando_engraver knows to look for glissando-skip, however no
>> such logic exists for Bend_engraver.  It would be possible to re-write
>> the engraver and introduce a new bend-skip context property, however a
>> perhaps simpler option is to change the stencil for a glissando to
>> look like a bend:
>>
>> [...]
>
> Sorry, I pasted an old version of the code that did not handle the
> vertical alignment properly:
>
> [...]

Grr.  I must be getting really tired.  One more attempt and then I give
up:

%%%%
\version "2.20.0"

bend-glissando-print =
#(lambda (grob)
   (let* ((lnh (ly:spanner-bound grob LEFT))
          (rnh (ly:spanner-bound grob RIGHT))
          (lsp (ly:grob-staff-position lnh))
          (rsp (ly:grob-staff-position rnh))
          (dy (/ (- rsp lsp) 2))
          (dot (ly:grob-object lnh 'dot))
          (acc (ly:grob-object rnh 'accidental-grob))
          (th (* (ly:grob-property grob 'thickness 1)
                 (ly:output-def-lookup (ly:grob-layout grob)
                                       'line-thickness)))
          (pad (ly:grob-property grob 'padding 0.5))
          (cmx (ly:grob-common-refpoint
                 (ly:grob-common-refpoint grob lnh X) rnh X))
          (cmy (ly:grob-common-refpoint grob lnh Y))
          (lx (+ pad (max (interval-end (ly:generic-bound-extent lnh
cmx))
                          (if dot
                              (interval-end
                               (ly:grob-robust-relative-extent dot cmx
X))
                              (- INFINITY-INT)))))
          (rx (- (min (interval-start (ly:generic-bound-extent rnh cmx))
                      (if acc
                          (interval-start
                           (ly:grob-robust-relative-extent acc cmx X))
                          INFINITY-INT))
                 pad))
          (dx (- rx lx))
          (sx (ly:grob-relative-coordinate grob cmx X)))
     (ly:make-stencil
       (list 'path th
         `(quote
           (rmoveto ,(- lx sx) ,(/ lsp 2)
            rcurveto ,(/ dx 3) 0 ,dx ,(* dy 2/3) ,dx ,dy)))
       (cons (- lx sx) (- rx sx))
       (cons (+ (/ lsp 2) (min 0 dy)) (+ (/ lsp 2) (max 0 dy))))))

bendGlissando =
   \tweak thickness #2
   \tweak stencil #bend-glissando-print
   \glissando

{ c''2. \bendGlissando
   \once \override NoteColumn.glissando-skip = ##t
   e'4 gis'1 }
%%%%


-- Aaron Hill





---------- Forwarded message ----------
From: <sir.teddy.the.first@gmail.com>
To: <lilypond-user@gnu.org>
Cc: 
Bcc: 
Date: Tue, 27 Oct 2020 09:58:43 +0100
Subject: Problems with Barré

Hi all,

I’m using this barré-function from the LSR and I’m trying to make it work when the first note (or the last one) is a rest.

 

Here’s the code:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\version "2.20.0"

guitbarre =

#(define-music-function (barre location str music) (string? ly:music?)

  (let ((elts (extract-named-music music '(NoteEvent EventChord))))

        (if (pair? elts)

            (let ((first-element (first elts))

                  (last-element (last elts)))

              (set! (ly:music-property first-element 'articulations)

                    (cons (make-music 'TextSpanEvent 'span-direction -1)

                          (ly:music-property first-element 'articulations)))

              (set! (ly:music-property last-element 'articulations)

                    (cons (make-music 'TextSpanEvent 'span-direction 1)

                          (ly:music-property last-element 'articulations))))))

      #{

          \once \override TextSpanner.font-shape = #'upright

          \once \override TextSpanner.staff-padding = #3

          \once \override TextSpanner.style = #'line

          \once \override TextSpanner.to-barline = ##f

          \once \override TextSpanner.bound-details =

               #`((left

                   (text . ,#{ \markup { \raise #-.5 \concat { \bold { #str " " }}} #})

                   (Y . 0)

                   (padding . .25)

                   (attach-dir . -2))

                  (right

                   (text . ,#{ \markup { \draw-line #'( 0 . -1) } #})

                   (Y . 0)

                   (padding . 0.25)

                   (attach-dir . 2)))

         $music

      #})

 

\relative c' {

  %1       <-- This one works

  \guitbarre #"VI" { g4 g4 g4 g4 }

 

  %2 <-- This one does not

  <<

    \new Voice \guitbarre #"I" {\voiceOne r4 <f' a c>4  4 4}

    \new Voice {\voiceTwo f,1}

  >>

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

What do I have to change or is there some other trick to make it work?

 

Thanks In Advance

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

reply via email to

[Prev in Thread] Current Thread [Next in Thread]