Hi everyone
No. In fact I realized that it's not necessary anymore. I'm currently using
> the "class" attribute, set by Lilypond on the svg element, and I set it to
> the same value for all the slurs I want to modify.
Paolo, I see you wrote this while I was drafting a snippet. Here it is in
case you find it useful somehow:
\version "2.19.83"
> \language "english"
> \score {
> <<
> \new Staff \relative { c''4( d) e( f) }
> \new PianoStaff <<
> \new Staff \relative { <g' e>2( <c g>) }
> \new Staff \relative { \clef F c'2( c,) }
> >>
> >>
> \layout {
> \context {
> \Score
> \override Slur.after-line-breaking =
> #(lambda (grob)
> (let* ((cps (ly:grob-property grob 'control-points))
> (id "slur_1")) ;need to find how to enumerate slurs
> (ly:grob-set-nested-property! grob '(output-attributes id) id)
> (for-each
> (lambda (cp num)
> (let* ((prefix (string-append "data-cp_" (number->string
> num)))
> (pfx (string->symbol (string-append prefix "_x")))
> (pfy (string->symbol (string-append prefix "_y"))))
> (ly:grob-set-nested-property! grob `(output-attributes
> ,pfx) (car cp))
> (ly:grob-set-nested-property! grob `(output-attributes
> ,pfy) (cdr cp))
> ))
> cps
> '(1 2 3 4))))
> }
> }
> }
It's not the most elegant but it saves the metadata in the svg file. I
couldn't figure out quickly how to enumerate the slurs but I know it can be
done, I just have to research a bit.
Let me know if I can be of use, shaping slurs is currently the most tedious
aspect of Lilypond for me, and the feature you are working on would be a
great help, so I would love to help in any way I can! Integrating it in
Frescobaldi would be even better.
El mié., 11 dic. 2019 a las 17:33, Paolo Pr (<[email protected]>)
escribió:
>
>
> On Wed, Dec 11, 2019 at 9:13 PM Urs Liska <[email protected]> wrote:
>
>> Hi Paolo,
>> Am 11.12.19 um 20:36 schrieb Paolo Pr:
>>
>> Hi Urs,
>>
>> I had another idea meanwhile, which is much easier and it's 100%
>> Javascript (generated by Lilypond) inside the SVG file (then, only a common
>> browser is required, no Inkscape, Frescobaldi etc.). I'm implementing it
>> and I'll share the code with the community in the next days.
>>
>>
>> Please go ahead with whatever brings the ecosystem forward!
>>
>> However, let me state that using Frescobaldi as a framework for that
>> functionality was not a "generous offer" but rather a question. We would
>> *very* much appreciate adding such graphic curve shaping in Frescobaldi.
>> There you'd basically work in a browser too, with the added benefit of
>> having Frescobaldi's knowledge of the LilyPond language to write the tweak
>> back to the original file.
>>
>
> This is true, but given that the code is 100% Javascript I don't want to
> couple it to Frescobaldi *for now*. When the code wil be completed (and
> working), we'll see how to integrate it in that editor.
>
>
>> Just two comments on your original post:
>>
>> 1)
>> Do you really need the IDs of the curve's control points? wouldn't they
>> somehow be available from the SVG curve object somehow?
>>
>
> No. In fact I realized that it's not necessary anymore. I'm currently
> using the "class" attribute, set by Lilypond on the svg element, and I set
> it to the same value for all the slurs I want to modify.
>
> 2)
>> For the modification please use the \shape function that is built into
>> LilyPond itself, not an LSR snippet. From the calculation perspective it's
>> probably identical to what you suggested but the input syntax is different.
>> Please have a look at
>> http://lilypond.org/doc/v2.19/Documentation/notation/modifying-shapes.en.html#modifying-ties-and-slurs
>>
>>
> Thanks. This makes the template shorter to write/test
>
> Best,
>
>