Autor Thema: Kiste um den Staff (Snippet modifizieren)  (Gelesen 2480 mal)

kilgore

  • Member
Kiste um den Staff (Snippet modifizieren)
« am: Dienstag, 12. Mai 2015, 12:24 »
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 }
>>

Pierre

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #1 am: Dienstag, 12. Mai 2015, 17:42 »

kilgore

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #2 am: Mittwoch, 13. Mai 2015, 09:21 »
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

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #3 am: Mittwoch, 13. Mai 2015, 23:36 »
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

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #4 am: Donnerstag, 14. Mai 2015, 23:58 »
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

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #5 am: Montag, 18. Mai 2015, 07:09 »
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

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #6 am: Montag, 18. Mai 2015, 09:03 »
Hallo Kilgore,

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

Gruß,
Pierre

kilgore

  • Member
Re: Kiste um den Staff (Snippet modifizieren)
« Antwort #7 am: Sonntag, 24. Mai 2015, 12:09 »
Danke Pierre! Tatsächlich! hatte ich nicht gefunden in den Snippets.