lilypond-user
[Top][All Lists]
Advanced

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

Re: Ottava mark: edge dashed line


From: Thomas Morley
Subject: Re: Ottava mark: edge dashed line
Date: Tue, 17 Apr 2018 00:16:21 +0200

2018-04-16 23:45 GMT+02:00 Carl Sorensen <address@hidden>:
> On 4/16/18, 3:31 PM, "foxfanfare" <address@hidden> wrote:
>
>     Noeck wrote
>     > As I said, I think it’s a question where the line starts: on the left or
>     > on the right and then it’s kind of luck how they meet in the corner.
>
>     I see what your means. But even if the line started on right, you'll get 
> the
>     same problem at the left then no? The distance from the "8" text will 
> vary.
>     But maybe it is something you accomodate better.
>
>     Could not it be more easy to just change the dash period a bit in order to
>     get it done?
>
> The slur dash code does just that, IIRC.  It goes from 0 to 1 on the t-value 
> of the Bezier, and makes sure that the end of the slur is always a full solid 
> part.
>
> I haven't looked at the ottava bracket code, but it seems like it ought to be 
> able to do the same, since it's a spanner like the slur is.
>
> Carl



Hi Carl,

you are right with the default-stencil for OttavaBracket.

But in this thread ly:line-spanner::print was used to get more
tweaking-possibilities. For this stencil I could verify the issue.

Below some test-code using box-stencil to make dimensions visible.
All for 2.19.81

(1) All fine for the default, i.e. ly:ottava-bracket::print

$@(map
    (lambda (val)
      #{
        \new Staff
          \with {
            \override OttavaBracket.stencil =
              #(lambda (grob) (box-stencil (ly:ottava-bracket::print grob) 0 0))
          }
          {
            \ottava #1
            c''4
            \override NoteColumn.X-offset = $val
            d''
          }
      #})
    (iota 10 0 2))

(2) Using ly:line-spanner::print and dotted-style returns sometimes a
gap at line-end.

with-ottava-line-spanner =
\with {
    \override OttavaBracket.stencil =
      #(lambda (grob) (box-stencil (ly:line-spanner::print grob) 0 0))
    \override OttavaBracket.bound-details =
      #`((left . ((Y . 0)
                  (attach-dir . ,LEFT)
                  (padding . 0)
                  (stencil-align-dir-y . ,UP)))
         (right . ((Y . 0)
                   (padding . 0)
                   (attach-dir . ,RIGHT))))

    \override OttavaBracket.style = #'dotted-line
    \override OttavaBracket.thickness = #4
    \override OttavaBracket.left-bound-info =
       #ly:line-spanner::calc-left-bound-info-and-text
    \override OttavaBracket.right-bound-info =
       #ly:line-spanner::calc-right-bound-info
}

$@(map
    (lambda (val)
      #{
        \new Staff \with \with-ottava-line-spanner
          {
            \ottava #1
            c''4
            \override NoteColumn.X-offset = $val
            d''
          }
      #})
    (iota 10 0 2))


Would be nice the default would offer more tweaking-possibilities to
avoid such messing around.
Also, ly:line-spanner::print should have at least the option to cover
the whole specified length, _avoiding_ space at start/end.


Best,
  Harm



reply via email to

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