2014-06-10 9:50 GMT+02:00 Pierre Perol-Schneider <pierre.schneider.pa...@gmail.com>: > 2014-06-09 22:42 GMT+02:00 Thomas Morley <thomasmorle...@gmail.com>: > > >> >> myHead = >> #(define-music-function (parser location music)(ly:music?) >> (if (music-is-of-type? music 'event-chord) >> #{ >> \override NoteHead.stencil = #(new-head "doThin") >> #music >> #} >> #{ >> \tweak NoteHead.stencil #(new-head "doThin") >> #music >> #})) > > > Hi Harm, > > I suspect you wanted to write : \once\override NoteHead.stencil = #(new-head > "doThin") > in myHead definition, didn't you ?
Yep, an oversight. Here the next version. Adding functionality for 'stem-attachment, extending general functionality, making it more robust, adding comments: \version "2.18.0" #(define (new-head type) ;; Returns a new stencil for NoteHead, specified via `type' ;; `type' is supposed to be a string containing two things: ;; the first letter after the dot and the actual type from the note-heads ;; listed in NR A.8 The Feta font ;; example: "noteheads.d1faThin" should be transformed to "dfaThin" as value for ;; `type' (lambda (grob) (if (or (not (string? type)) (string-null? type)) (ly:note-head::print grob) (let* (;; not every note-head has a glyph for whole or even longer notes ;; as a fall-back, use half note glyph (duration (max 1 (ly:grob-property grob 'duration-log))) (head (format #f "noteheads.~a~a~a" (string-take type 1) duration (string-drop type 1))) (stil (ly:font-get-glyph (ly:grob-default-font grob) head))) (if (ly:stencil-empty? stil) (begin (ly:warning "Unknown NoteHead: ~a, ignoring." head) (ly:note-head::print grob)) stil))))) %% adjusts stem-adjustment for note-heads of type doThin %% other note-head-glyphs may need different settings adjustStemAttachment = \once \override NoteHead.stem-attachment = #(lambda (grob) (let* ((stem (ly:grob-object grob 'stem)) (stem-dir (ly:grob-property stem 'direction))) (cons 1 (if (>= stem-dir 0) -1 0.75)))) my-head = #(define-scheme-function (parser location strg) (string?) (define-music-function (parser location music)(ly:music?) (if (music-is-of-type? music 'event-chord) #{ \once \override NoteHead.stencil = #(new-head strg) #music #} #{ \tweak NoteHead.stencil #(new-head strg) #music #}))) %% See comment in (new-head type) how to specify the type doThinHead = \my-head "ddoThin" faThinHead = \my-head "dfaThin" \relative c' { \adjustStemAttachment \doThinHead c'2 \adjustStemAttachment \doThinHead c,2 \adjustStemAttachment \doThinHead <c e g>4 < c \doThinHead e \doThinHead \tweak duration-log #1 g >4 \adjustStemAttachment < \faThinHead c e g >4 } Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user