Hello Carl,

my script is not intended for replacing the automatic handling of slurs. I
agree that the automatic handling should be the preferred way and the
development of the script is somewhat "off-topic" here (but I did not know
the right ml where to post it and I needed some other help for coding in
Scheme).
However, I think that the manual placement is necessary in two cases, even
with a "perfect" Lilypond:

1) for very complex scores (for example: contemporary classical music)
2) when the automatic placement is correct (no collisions), but not good to
see.

I think then that the two features can coexist. Consider that the few lines
of codes I wrote show another feature of Lilypond: it can generate svg for
easy-scripting too...

Best,
P

On Sat, Dec 14, 2019 at 3:49 AM Carl Sorensen <c_soren...@byu.edu> wrote:

> Paolo,
>
>
>
> I really appreciate your doing this.
>
>
>
> However, I would like to see us improve the **automatic** handling of
> slurs in LilyPond, so that \shape is almost never needed (much like
> extra-offset for standard music).  I’m not asking for you to do any work on
> improving the automatic slur handling, but I would love to have us have a
> collection of slurs automatically created by LilyPond along with the
> revised slurs created by \shape.  That would give us a test library to be
> able to test improvements in the LilyPond slur code.
>
>
>
> I’ve created issue #5638
>
> https://sourceforge.net/p/testlilyissues/issues/5638/
>
> as a place for users to place snippets that give bad automatic slurs and
> that show improved slurs by using \shape.   I’d invite everybody who finds
> ugly slurs to post both the ugly slur code and the improved slur code.
>
>
>
> Thanks,
>
>
>
> Carl
>
>
>
>
>
> *From: *Urs Liska <li...@openlilylib.org>
> *Date: *Friday, December 13, 2019 at 4:40 PM
> *To: *<lilypond-user@gnu.org>
> *Subject: *Re: A Javascript test code for modifying ties and slurs with
> mouse
>
>
>
> I have to second Elaine's comment.
> Due to a very heavy workload right now I didn't have the opportunity to
> have a look at your example earlier,  but now I *really* like what I see.
>
> I think that you a) probably should go forward implementing a standalone
> solution of your approach, but that b) this should also be integrated into
> Frescobaldi, because this would probably kick it off and make it even more
> widely known. Plus, Frescobaldi should make it easier to write the code
> back into the LilyPond file. There are 2-3 people who would be more than
> willing to help you with the integration of the functionality in
> Frescobaldi.
>
> Best
> Urs
>
> Am 13.12.19 um 23:49 schrieb Flaming Hakama by Elaine:
>
>
>
> ---------- Forwarded message ----------
> From: Paolo Pr <paolopr...@gmail.com>
> To: lilypond-user <lilypond-user@gnu.org>
> Cc:
> Bcc:
> Date: Thu, 12 Dec 2019 17:52:58 +0100
> Subject: A Javascript test code for modifying ties and slurs with mouse
>
> I just created a javascript script to change the slurs of the .svg file
> produced by Lilypond using the mouse, as I had announced. The coordinates
> of the control points of the associated Bezier curve can be reported in the
> corresponding .ly file and this completely avoids the time consuming trial
> and error process we were talking about. The script is 100% Javascript
> native, without any additional library and I tried it on the Firefox and
> Chromium browsers. Let's see how it works.
>
> 1) Create a score using the template that shows the control points,
> implemented by Aaron (please, re-indent it); I added a small change to set
> some attributes on the generated svg tags:
>
> http://lilybin.com/29lnbd/4
>
> 2) Generate with Lilypond the .svg file and add to it the Javascript
> script implemented by me. To test everything, let's use JsFiddle:
>
> https://jsfiddle.net/61pb9Le4/
>
> My script is in the lower left pane; in the upper left pane I pasted the
> .svg file generated by Lilypond. Note that, to make the script work, if you
> create a new JsFiddle, you need to select  "LOAD TYPE" option =  "No wrap -
> bottom of <body>".
>
> 3) Modify the slurs by moving the control points with the mouse
>
> 4) The coordinates of the modified slur can be displayed by right-clicking
> on one of the slur's control points. A string will appear in the form:
>
>  "shape # '((x1. y1) (x2. y2) (x1. y1) (x3. y3) (x4. y4)) PhrasingSlur"
>
> or
>
>  "shape # '((x1. y1) (x2. y2) (x1. y1) (x3. y3) (x4. y4)) Slur"
>
> or
>
> "shape # '((x1. y1) (x2. y2) (x1. y1) (x3. y3) (x4. y4)) Tie"
>
> This string must be copied to the .ly file, near the slur to be modified.
>
> .....................
>
> I wrote all this really in a hurry, and the code needs to be improved at
> various points. But the first tests seem to work. Now I'm trying to figure
> out what is the best (and portable) way to automatically include the
> Javascript script in the .svg file generated by Lilypond ...
>
> HTH
> P
>
>
>
> This is fantastic!
>
> I often leave mediocre slurs and ties as is, just because wrangling them
> in code is a pain.  This will make it much more likely that I'll have the
> bandwidth to improve them.
>
> This may help folks who want to try this out, here is how I understand the
> intended approach and how I was able to reproduce it locally.
>
>
> 1) Prepare the score for control point tweaking
>
> Include in your lilypond files this new definition
>
> showControlPoints = #(grob-transformer 'stencil (lambda (grob orig)
> ...
>
> As well as this layout context
>
> \layout {
> \context {
> \Voice
> \override PhrasingSlur.stencil = #showControlPoints
> \override PhrasingSlur.output-attributes = #'((class .
> "lilySlur")(slurtype . "PhrasingSlur"))
> \override Slur.stencil = #showControlPoints
> \override Slur.output-attributes = #'((class . "lilySlur")(slurtype .
> "Slur"))
> \override Tie.stencil = #showControlPoints
> \override Tie.output-attributes = #'((class . "lilySlur")(slurtype .
> "Tie"))
> }
> }
>
> 2) Create the SVG version.
>
> run lilypond with the option -dbackend=svg
>
>
> 3) Create an HTML page that allows editing
>
> Save the JavaScript code in a file, such as show-control-points.js.
>
> Create an HTML document like this:
>
> <html>
> <head><title>Editing Lilypond curves</title>
> </head>
> <body>
> <svg...>...</svg>
> <script src="show-control-points.js"></script>
> </body>
> </html>
>
>
> I tried to figure out how to include the SVG file by reference, but either
> using <img src=""> or <object src="">.  But that did not work, since it
> would produce objects that do not have width or height attributes
> accessible via JavaScript.  Seems like the SVG has to be inline in the HTML
> document for this approach to work.
>
> In terms of workflow, I would probably create this HTML document
> subsequent to creating the SVG using a script:
>
> #!/usr/local/bin/bash
> # Usage: create-html-for-svg.sh svgFileName htmlFileName
> SVG=$1
> HTML=$1
> echo "<html>" > $HTML
> echo "<head><title>Editing Lilypond curves</title>" >> $HTML
> echo "</head>" >> $HTML
> echo "<body>" >> $HTML
> echo "" >> $HTML
> cat $SVG >> $HTML
> echo "" >> $HTML
> echo "<script src="edit-control-points.js"></script>" >> $HTML
> echo "</body>" >> $HTML
> echo "</html>" >> $HTML
> echo "" >> $HTML
>
> Then invoke it like:
> $ create-html-for-svg.sh example.svg edit-curves.html
>
>
> 4) Open HTML page in a browser and edit curves
>
> move the points around, right click to get the \shape definition,
>
>
> 5) Update lilypond source
>
> For each curve you modify, apply that shape modification in your lilyond
> source.
>
> To generate the final document, remove the \layout section that we added
> in step 1.
>
>
>
> Thanks,
>
>
>
> Elaine Alt
>
> 415 . 341 .4954                                           "*Confusion is
> highly underrated*"
>
> ela...@flaminghakama.com
>
> Producer ~ Composer ~ Instrumentalist ~ Educator
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>
>
>
>

Reply via email to