Thanks Thomas Morley and Pierre Perol-Schneider,
I have implemented this technique and it looks like it's working very well.
Much appreciated!
Nick Didkovsky
On 6/10/2014 7:51 AM, Thomas Morley wrote:
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