Am Fr., 22. Juli 2022 um 13:04 Uhr schrieb Ya Gloops <yaglo...@yahoo.fr>: > > > Hello ! I try to keep the proportion of the "dashed-stem" but I can't... If > someone can help me. > Gilles > > \version "2.23.10" > > > %#(set-global-staff-size 30) > > > #(define (make-round-filled-box x1 x2 y1 y2 blot-diameter) > (ly:make-stencil (list 'round-filled-box (- x1) x2 (- y1) y2 blot-diameter) > (cons x1 x2) > (cons y1 y2))) > > > #(define (build-pos-list len on off) > (let ((lst '(0))) > > (define (helper) > (let ((bottom (+ (car lst) on))) > (if (< bottom len) > (begin > (set! lst (cons bottom lst)) > (let ((top (+ (car lst) off))) > (if (< top len) > (begin > (set! lst (cons top lst)) > (helper)) > (set! lst (cons len lst))))) > (set! lst (cons len lst))))) > (helper) > (reverse lst))) > > > #(define (dashed-stem on off) > (lambda (grob) > (let* ((blot (ly:output-def-lookup (ly:grob-layout grob) 'blot-diameter)) > (stencil (ly:stem::print grob)) > (X-ext (ly:stencil-extent stencil X)) > (thickness (interval-length X-ext)) > (Y-ext (ly:stencil-extent stencil Y)) > (len (interval-length Y-ext)) > (new-stencil empty-stencil) > (factors (build-pos-list len on off))) > > (define (helper args) > (if (<= 2 (length args)) > (begin > (set! new-stencil > (ly:stencil-add > new-stencil > (ly:stencil-translate-axis > (make-round-filled-box (/ thickness -2) (/ thickness 2) > (car args) (cadr args) > blot) > (interval-start Y-ext) > Y))) > (helper (cddr args))) > new-stencil)) > > > (if (or (zero? on) (zero? off)) > stencil > (helper factors))))) > > > dashedStems = > #(define-music-function (on off) (number? number?) > #{ > \override Stem.stencil = #(dashed-stem on off) > #}) > > > > > \relative c'' { > \dashedStems #0.5 #0.4 > c4 > } > > > \score > { > \relative c'' { \magnifyStaff #(magstep 10) > \dashedStems #0.5 #0.4 > c4 > } > } >
Scale on/off with staff-space, (ly:staff-symbol-staff-space grob). HTH, Harm