• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Kiste um den Staff (Snippet modifizieren)

Begonnen von kilgore, Dienstag, 12. Mai 2015, 12:24

Vorheriges Thema - Nächstes Thema

kilgore

Liebe Lilys,

Ich versuche ein Snippet für meine Zwecke zu modifizieren. Dieses Snippet färbt ein System im Hintergrund, also eine gefüllte kiste hinter allem. Ich möchte die Kiste haben aber ungefüllt (und die dicke der Linie bestimmen können). Da wo "ly:round-filled-box" steht habe ich versucht zu modifizieren aber "unfilled" oder einfach "box" scheint keine Option zu sein. 

Im Prinzip möchte ich einfach eine Kiste um ein ganzes System haben um es in der Partitur hervorzuheben. Sieht jemand an diesem Snippet ein einfaches tweak?

Danke!
kil


\version "2.18.2"

bgcolor =
#(define-music-function (parser location color) (string?)
#{\override Staff.StaffSymbol $'stencil = $(lambda (grob)
    (let* ((staff (ly:staff-symbol::print grob))
           (X-ext (ly:stencil-extent staff X))
           (Y-ext (ly:stencil-extent staff Y)))
         (set! Y-ext (cons
            (- (car Y-ext) 2)
            (+ (cdr Y-ext) 2)))
         (ly:grob-set-property! grob 'layer -10)
         (ly:stencil-add
           (ly:make-stencil (list 'color (eval-string color)
               (ly:stencil-expr (ly:round-filled-box X-ext Y-ext 0))
               X-ext Y-ext))
           staff)))
#})


kiste = \relative c' { c c c c c c c c   }

<<
  \new Staff { \bgcolor "blue" \kiste }
>>


kilgore

Danke Pierre,

Bin noch bei 2.18, aber die Lösung sieht gut aus, wenn auch sehr kompliziert aufgebaut. In der Zwischenzeit habe ich einfach mit \draw-line etwas für mich gebaut.

Gruß
kil

harm6

Hallo kil :)

das folgende ist lange nicht so ausgearbeitet wie der boxEngraver von David Nalesnik, braucht auch manuelle Eingriffe, aber vielleicht trotzdem hilfreich:


\version "2.18.2"

boxed-staff =
#(define-music-function (parser location y) (pair?)
#{\override Staff.StaffSymbol $'stencil = $(lambda (grob)
    (let* ((staff (ly:staff-symbol::print grob))
           (X-ext (ly:stencil-extent staff X))
           (Y-ext (ly:stencil-extent staff Y)))
         (ly:grob-set-property! grob 'layer -10)
    (ly:stencil-add
      (rounded-box-stencil
        (ly:make-stencil
          (ly:stencil-expr staff)
          X-ext
          (offset-add y (interval-widen Y-ext 2)))
        0.1 ;; thickness
        2   ;; padding
        1)  ;; corner-radius
      staff)))
#})


kiste = \relative c' { c c c c, c' c c c   }

<<
  \new Staff { \boxed-staff #'(-3 . 0) \kiste }
>>



Gruß,
  Harm

Pusteblumi

Hallo kil,

vielleicht hilft dir auch das hier weiter:
http://lilypond.1069038.n5.nabble.com/Reading-a-property-td173954.html
...ist allerdings auch ein Haufen Code...

Viele Grüße,
Klaus

kilgore

danke Harm!!  Funktioniert super, ein bisschen selber einstellen können finde ich nicht schlecht sondern gut! Nun brauche ich nur einen ruhigen Moment um dein Scheme zu verstehen :)

Danke auch an Pusteblumi!

Pierre

Hallo Kilgore,

Interessant ist möglicherweise folgender Snippet: http://lsr.di.unimi.it/LSR/Item?id=1000

Gruß,
Pierre

kilgore

Danke Pierre! Tatsächlich! hatte ich nicht gefunden in den Snippets.