%%%%%%%%%%%%%%%%%%%%%%%% \version "2.15.40" shapeTieColumn = #(define-music-function (parser location all-offsets) (list?) #{ \once \override TieColumn #'after-line-breaking = #(lambda (grob) (let ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) (for-each (lambda (tie offsets-for-broken-pair) (let* ((orig (ly:grob-original tie)) (siblings (ly:spanner-broken-into orig))) (for-each (lambda (piece offsets-for-piece) (if (pair? offsets-for-piece) (set! (ly:grob-property piece 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:tie::calc-control-points piece) offsets-for-piece)) )) (if (null? siblings) (list orig) siblings) offsets-for-broken-pair))) ties all-offsets))) #}) shapeLaissezVibrerTieColumn = #(define-music-function (parser location all-offsets) (list?) #{ \once \override LaissezVibrerTieColumn #'before-line-breaking = #(lambda (grob) (let ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) (for-each (lambda (tie offsets-for-piece) (if (pair? offsets-for-piece) (set! (ly:grob-property tie 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:tie::calc-control-points tie) offsets-for-piece)) )) ties all-offsets) #t )) #}) shapeRepeatTieColumn = #(define-music-function (parser location all-offsets) (list?) #{ \once \override RepeatTieColumn #'before-line-breaking = #(lambda (grob) (let ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) (for-each (lambda (tie offsets-for-piece) (if (pair? offsets-for-piece) (set! (ly:grob-property tie 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:tie::calc-control-points tie) offsets-for-piece)) )) ties all-offsets) #t )) #}) confShapeTieColumn = #(define-music-function (parser location conf all-offsets)(list? list?) (let ((alb-func (lambda (grob) (let ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) (for-each (lambda (tie offsets-for-broken-pair) (let* ((orig (ly:grob-original tie)) (siblings (ly:spanner-broken-into orig))) (for-each (lambda (piece offsets-for-piece) (if (pair? offsets-for-piece) (set! (ly:grob-property piece 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:tie::calc-control-points piece) offsets-for-piece)) )) (if (null? siblings) (list orig) siblings) offsets-for-broken-pair))) ties all-offsets))) )) (make-music 'SequentialMusic 'elements (list (make-music 'ContextSpeccedMusic 'context-type 'Bottom 'element (make-music 'OverrideProperty 'once #t 'pop-first #t 'grob-property-path '(tie-configuration) 'grob-value conf 'symbol 'TieColumn)) (make-music 'ContextSpeccedMusic 'context-type 'Bottom 'element (make-music 'OverrideProperty 'once #t 'pop-first #t 'grob-property-path '(after-line-breaking) 'grob-value alb-func 'symbol 'TieColumn)) )) )) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% { 1 ~ \confShapeTieColumn #'( (-6 . 1) (-4 . 1) (-2 . 1) (0 . 1) ) #'( ( ((0 . 0)(0 . 0)(0 . 0)(0 . 0)) ) ) q q ~ \shapeTieColumn #'( ( ((0 . 0) (0 . -1) (0 . -1) (0 . 0)) ) ; (bottom) first half only () ; or ( () () ) = skip ( ((0 . 0) (-0.25 . 0.5) (0.25 . 0.5) (0 . 0)) ((0 . 0) (-0.25 . 0.5) (0.25 . 0.5) (0 . 0)) ) ; both halves ( () ((0 . 0) (0 . 1) (0 . 1) (0 . 0)) ) ; (top) second half only ) \break q \shapeLaissezVibrerTieColumn #'( ((0 . 0)(2 . 0)(4 . 0)(6 . 0)) ((0 . 0)(2 . 0)(4 . 0)(6 . 0)) ((0 . 0)(2 . 0)(4 . 0)(6 . 0)) ((0 . 0)(2 . 0)(4 . 0)(6 . 0)) ) q\laissezVibrer \shapeRepeatTieColumn #'( ((-6 . 0)(-4 . 0)(-2 . 0)(0 . 0)) ((-6 . 0)(-4 . 0)(-2 . 0)(0 . 0)) ((-6 . 0)(-4 . 0)(-2 . 0)(0 . 0)) ((-6 . 0)(-4 . 0)(-2 . 0)(0 . 0)) ) q\repeatTie } \layout { ragged-right = ##t } %%%%%%%%%%%%%%%%%%%%%%%