Am Fr., 27. Mai 2022 um 12:05 Uhr schrieb Jean Abou Samra <j...@abou-samra.fr>: > > > > Le 27/05/2022 à 11:54, Thomas Morley a écrit : > > Thanks Jean! > > After further thinking and testing I'll not reset the 'control-points: > > It would trash a user-tweak for \shape and ua ser-override for \shape > > returns a more serious ERROR: > > > > #(define (variable-bow-thickness-harm min-l max-l min-t max-t) > > (lambda (grob) > > (let* ((cpt (ly:grob-property grob 'control-points)) > > (cp0 (car cpt)) > > (cp3 (cadddr cpt)) > > (dx (- (car cp3) (car cp0))) > > (dy (- (cdr cp3) (cdr cp0))) > > (len (magnitude (make-rectangular dx dy))) > > (thickness > > (cond ((< len min-l) min-t) > > ((> len max-l) max-t) > > (else > > (+ min-t > > (* (- len min-l) > > (/ (- max-t min-t) > > (- max-l min-l)))))))) > > (ly:grob-set-property! grob 'thickness thickness) > > ;; DELETE-ME: > > (ly:grob-set-property! grob 'control-points > > ((assoc-get 'control-points (ly:grob-basic-properties grob)) > > grob)) > > ))) > > > > { > > \override Slur.after-line-breaking = #(variable-bow-thickness-harm 1 2 1 > > 33) > > > > %% \shape as override errors, if overruled by the 'thickness-override > > \shape #'((10 . 0) (0 . 0) (0 . 0) (0 . 0) ) Slur > > b1( b') > > > > %% \shape as tweak works, if not overruled by the 'thickness-override > > %b1-\shape #'((10 . 0) (0 . 0) (0 . 0) (0 . 0)) ( b') > > } > > > > => > > ERROR: Wrong type to apply: #<unpure-pure-container #<procedure > > 560c1a58a580 at ice-9/eval.scm:333:13 (a)> #<procedure 560c1a58a560 at > > ice-9/eval.scm:386:13 (a . rest)> > > > > \shape puts an unpure-pure container in the result of > ly:grob-basic-properties, you can't call that as if it > were a function. Rather: > > > \version "2.23.9" > > #(define (variable-bow-thickness-harm min-l max-l min-t max-t) > (lambda (grob) > (let* ((cpt-computer > (ly:grob-property-data grob 'control-points)) > (cpt (ly:grob-property grob 'control-points)) > (cp0 (car cpt)) > (cp3 (cadddr cpt)) > (dx (- (car cp3) (car cp0))) > (dy (- (cdr cp3) (cdr cp0))) > (len (magnitude (make-rectangular dx dy))) > (thickness > (cond ((< len min-l) min-t) > ((> len max-l) max-t) > (else > (+ min-t > (* (- len min-l) > (/ (- max-t min-t) > (- max-l min-l)))))))) > (ly:grob-set-property! grob 'thickness thickness) > (ly:grob-set-property! grob 'control-points (ly:unpure-call > cpt-computer grob))))) > > { > \override Slur.after-line-breaking = #(variable-bow-thickness-harm 1 > 2 1 33) > > b1( b') > > \shape #'((10 . 0) (0 . 0) (0 . 0) (0 . 0) ) Slur > b1( b') > > b1-\shape #'((10 . 0) (0 . 0) (0 . 0) (0 . 0)) ( b') > } > > > Best, > Jean >
Works nicely. Again, thanks a lot, Harm