Hi all, here is another example document for \compoundSlur. With the additionally implemented annotation features
* Grid for finding values for the inflection points * Control points and handles for judging the angles * Dashed handle extensions for judging the length of the handles These tools are shown in the first line. With them it is shockingly simple to tweak that slur to one's liking, even without any graphical tweaking assistance yet. The other lines show what happens when one of the ending points is shifted: the overall shape of the slur is more or less intact. That means when the horizontal spacing changes (through changed content or changed line breaks) chances are that the slur has to be adjusted only minimally, it doesn't mess up completely. This is due to the use of polar coordinates that have first been realized by Janek WarchoĊ in his \shapeII functions but that can now be done *much* easier thanks to new functions ly:angle, ly:length and ly:directed (thanks again for the pointer, David). What is left to be done is support for broken slurs and (possibly) support for spline shapes that keep full width thorughout the inflections. Have fun (I had) Urs PS: If you want to play around with it the current code is still available on the compound-slur branch of openlilylib/snippets.
compound-slur-weird-example.pdf
Description: Adobe PDF document
\version "2.19.48" % This has to be available \include "notation-snippets/shaping-bezier-curves/compound-slurs.ily" \paper { indent = 0 ragged-last = ##f markup-system-spacing.minimum-distance = 15 score-markup-spacing.minimum-distance = 12 page-count = 1 } \header { title = "Compound Slurs" subtitle = "Using openLilyLib/snippets" } weird= #(define-event-function (ann? end-x end-y)((boolean?) number? number?) #{ ^\compoundSlur \with { annotate = #ann? show-grid = #ann? start-ratio = 0.6 end-point = #`(,end-x . ,end-y) inflection = #'((X-ratio . .25) (Y-offset . 8) ) inflection = #'((X-ratio . .15) (label . "A") ) inflection = #'((X-ratio . .5) (Y-offset . 11) ) inflection = #'((X-ratio . .65) (Y-offset . 8) (angle . -30) (ratio-left . .6) (label . "B") ) inflection = #'((X-ratio . .25) (Y-offset . -5) (angle . 45) ) } #}) example = #(define-scheme-function (ann? end-x end-y)((boolean?) number? number?) #{ \score { \new Staff \relative c''' { c -\weird #ann? #end-x #end-y b a g f e d c b a g f e d c d e f g a b c d e f g a b ) } } #}) \markup \vspace #9 \markup "Default" \example ##t 0 0 \markup \vspace #7 \markup "Raise by 5" \example 0 5 \markup "Raise by 15 and left by 30" \example #-30 15 \markup "Lower by 10" \example 0 #-10
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user