Re: TextSpanner custom line

2021-02-17 Thread Artur Wrona
Dnia 2021-02-17, o godz. 16:41:24
David Nalesnik  napisał(a):

> Don't forget to "reply all"
> 

Sorry...
I'll reply all. Write me, that well or wrong...

Well... thank you - very helpful people I prepared line spanner useful
to drum part. Bravura font is required because special symbol. I think,
that best will if I share this code for other users.

%%%

\version "2.21.5"
%%%
wiggleCircularChar = \markup {
  \concat
  {
\scale #'(1.5 . 1)
\override #'(font-name . "Bravura")  \char ##xEAC3
  }
}

#(define (wiggleCircular grob)
   (if (ly:stencil? (ly:line-spanner::print grob))
   (let* ((stencil (ly:line-spanner::print grob))
  ;(dot (ly:font-get-glyph (ly:grob-default-font grob)
"scripts.turn")) (X-ext (ly:stencil-extent stencil X))
  (Y-ext (ly:stencil-extent stencil Y))
  ;(width 0.1)
  (len (interval-length X-ext))
  (sym-stencil (grob-interpret-markup grob
wiggleCircularChar)) (sym-X-ext (ly:stencil-extent sym-stencil X))
  (sym-len (interval-length sym-X-ext)))
 (ly:stencil-translate
  (grob-interpret-markup grob
(markup
 (#:pattern (inexact->exact (round (/ len sym-len)))
   X 0
   (markup #:scale (cons 1 1) wiggleCircularChar
  (cons (interval-start X-ext) (interval-start Y-ext
   #f))

{
  \override Score.TextSpanner.stencil = #wiggleCircular
  \override Score.TextSpanner.to-barline = ##t
  c'1\startTextSpan
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'\stopTextSpan
}

%%%
\version "2.21.5"
%%%
wiggleCircularChar = \markup {
  \concat
  {
\scale #'(1.5 . 1)
\override #'(font-name . "Bravura")  \char ##xEAC3
  }
}

#(define (wiggleCircular grob)
   (if (ly:stencil? (ly:line-spanner::print grob))
   (let* ((stencil (ly:line-spanner::print grob))
  ;(dot (ly:font-get-glyph (ly:grob-default-font grob) "scripts.turn"))
  (X-ext (ly:stencil-extent stencil X))
  (Y-ext (ly:stencil-extent stencil Y))
  ;(width 0.1)
  (len (interval-length X-ext))
  (sym-stencil (grob-interpret-markup grob wiggleCircularChar))
  (sym-X-ext (ly:stencil-extent sym-stencil X))
  (sym-len (interval-length sym-X-ext)))
 (ly:stencil-translate
  (grob-interpret-markup grob
(markup
 (#:pattern (inexact->exact (round (/ len sym-len)))
   X 0
   (markup #:scale (cons 1 1) wiggleCircularChar
  (cons (interval-start X-ext) (interval-start Y-ext
   #f))

{
  \override Score.TextSpanner.stencil = #wiggleCircular
  \override Score.TextSpanner.to-barline = ##t
  c'1\startTextSpan
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'
 c'\stopTextSpan
}

Re: TextSpanner custom line

2021-02-17 Thread David Nalesnik
Hi again,

On Wed, Feb 17, 2021 at 11:16 AM Pierre Perol-Schneider
 wrote:
>
> Hi Artur,
> This is not exactly what you ask for but you could do something like:
>
> \version "2.22.0"
> {
>   c'1
>   -\tweak X-extent #'(0 . 0)
>   ^\markup\pattern #25 #X #0 \musicglyph #"scripts.turn"
>   1 1 1 1 1 1 1 1 1
> }
>
> Cheers,
> Pierre
>

I'm a little out of practice, but here's my attempt at automating:
\version "2.21.5"

#(define (patterned-markup glyph)
   (lambda (grob)
 (let* ((stil (ly:line-spanner::print grob))
(spanner-extent-X (ly:stencil-extent stil X))
(spanner-extent-Y (ly:stencil-extent stil Y))
(spanner-length-X (interval-length spanner-extent-X))
(spanner-angle (atan (/ (interval-length spanner-extent-Y)
   spanner-length-X)))
(spanner-angle (degrees->radians spanner-angle))
(glyph-stil (ly:font-get-glyph (ly:grob-default-font grob) glyph))
(glyph-stil (ly:stencil-rotate glyph-stil spanner-angle 0 0))
(glyph-extent-X (ly:stencil-extent glyph-stil X))
(glyph-length-X (interval-length glyph-extent-X))
(reps (round (/ spanner-length-X glyph-length-X
   (let loop ((x 0) (new-stil empty-stencil))
 (if (> x reps)
 (ly:grob-set-property! grob 'stencil new-stil)
 (loop
  (1+ x)
  (ly:stencil-combine-at-edge new-stil X RIGHT glyph-stil 0.0)))


{
  \override TextSpanner.after-line-breaking = #(patterned-markup "scripts.turn")
  c'1\startTextSpan
  e'1
  g'1
  c''1\stopTextSpan
  \override TextSpanner.rotation = #'(5 -1 0)
  c'1\startTextSpan
  e'1
  g'1
  c''1\stopTextSpan

}



Re: TextSpanner custom line

2021-02-17 Thread Pierre Perol-Schneider
Hi Artur,
This is not exactly what you ask for but you could do something like:

\version "2.22.0"
{
  c'1
  -\tweak X-extent #'(0 . 0)
  ^\markup\pattern #25 #X #0 \musicglyph #"scripts.turn"
  1 1 1 1 1 1 1 1 1
}

Cheers,
Pierre

Le mer. 17 févr. 2021 à 16:48, Artur Wrona  a
écrit :

> Hi, dear Lilypond users. I ask at forum very rarement, always first
> find at Google, DuckDuck.. but now I didn't found solution for one
> thing. So... Is anybody, who knows, how to creat own symbol for
> textspanner? I would like for example use chars pattern instead line. I
> know that I must use \override TextSpanner.stencil or \override
> TextSpanner.style . I didn't found, how to define own line style. In
> future I'm going to use segment symbols from Bravura font (I know how
> to input Unicode symbols - rather easy to find).
> Thanks in advance.
> Artur Wrona.
>
>


Re: TextSpanner custom line

2021-02-17 Thread David Nalesnik
Hi Artur,

On Wed, Feb 17, 2021 at 9:48 AM Artur Wrona  wrote:
>
> Hi, dear Lilypond users. I ask at forum very rarement, always first
> find at Google, DuckDuck.. but now I didn't found solution for one
> thing. So... Is anybody, who knows, how to creat own symbol for
> textspanner? I would like for example use chars pattern instead line. I
> know that I must use \override TextSpanner.stencil or \override
> TextSpanner.style . I didn't found, how to define own line style. In
> future I'm going to use segment symbols from Bravura font (I know how
> to input Unicode symbols - rather easy to find).
> Thanks in advance.
> Artur Wrona.
>

This topic came up recently at
https://www.mail-archive.com/lilypond-user@gnu.org/msg143436.html

Hope this gets you started!

Best,
David