LSR/859

< LSR
Zur Navigation springen Zur Suche springen
PD Der Inhalt dieser Seite wurde aus dem LilyPond Snippet Repository übernommen und steht unter folgender Lizenz: CC0.
See Public Domain Help Pages for more info.
PD
Making noteheads look handwritten

LSR Snippet Nr. 859

Beschreibung

Just for fun, here's a way of making hand-written noteheads in LilyPond. Points on a markup path are randomly jittered to form the notehead shapes.
auto
%%http://lsr.di.unimi.it/LSR/Item?id=859


#(define rng (seed->random-state 1337))

#(define (make-circle-path r dev)
   (let ((k (* r 0.5522847498))
         (o (lambda () (* r dev (random:normal rng)))))
     (list
       (list 'moveto 0 r)
       (list 'curveto k r r k r (o))
       (list 'curveto r (- k) k (- r) (o) (- r))
       (list 'curveto (- k) (- r) (- r) (- k) (- r) (o))
       (list 'curveto (- r) k (- k) r 0 r))))

\new Staff \relative c' {
  \override NoteHead.stencil =
    #(lambda (grob)
       (let ((fill (> (ly:grob-property grob 'duration-log) 1)))
         (grob-interpret-markup grob
           (markup #:rotate 45
                   #:scale '(1.3 . 0.7)
                   #:override `(filled . ,fill)
                   #:path 0.25 (make-circle-path 0.5 0.2)))))
  \override NoteHead.stem-attachment = #'(0.8 . 0.1)
  | c8 d8 e8 f8 g2
  \revert NoteHead.stencil
  \revert NoteHead.stem-attachment
  | c,8 d8 e8 f8 g2
}
%%http://lsr.di.unimi.it/LSR/Item?id=859


#(define rng (seed->random-state 1337))

#(define (make-circle-path r dev)
   (let ((k (* r 0.5522847498))
         (o (lambda () (* r dev (random:normal rng)))))
     (list
       (list 'moveto 0 r)
       (list 'curveto k r r k r (o))
       (list 'curveto r (- k) k (- r) (o) (- r))
       (list 'curveto (- k) (- r) (- r) (- k) (- r) (o))
       (list 'curveto (- r) k (- k) r 0 r))))

\new Staff \relative c' {
  \override NoteHead.stencil =
    #(lambda (grob)
       (let ((fill (> (ly:grob-property grob 'duration-log) 1)))
         (grob-interpret-markup grob
           (markup #:rotate 45
                   #:scale '(1.3 . 0.7)
                   #:override `(filled . ,fill)
                   #:path 0.25 (make-circle-path 0.5 0.2)))))
  \override NoteHead.stem-attachment = #'(0.8 . 0.1)
  | c8 d8 e8 f8 g2
  \revert NoteHead.stencil
  \revert NoteHead.stem-attachment
  | c,8 d8 e8 f8 g2
}

Unterseiten