Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: kilgore am Dienstag, 12. Mai 2015, 12:24

Titel: Kiste um den Staff (Snippet modifizieren)
Beitrag von: kilgore 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 }
>>
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: Pierre am Dienstag, 12. Mai 2015, 17:42
Hallo,

Siehe hierzu: http://lilypond.1069038.n5.nabble.com/box-around-notes-td35581.html#a174172 (http://lilypond.1069038.n5.nabble.com/box-around-notes-td35581.html#a174172)

Gruß,
Pierre
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: kilgore 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
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: harm6 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
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: Pusteblumi 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
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: kilgore 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!
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: Pierre am Montag, 18. Mai 2015, 09:03
Hallo Kilgore,

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

Gruß,
Pierre
Titel: Re: Kiste um den Staff (Snippet modifizieren)
Beitrag von: kilgore am Sonntag, 24. Mai 2015, 12:09
Danke Pierre! Tatsächlich! hatte ich nicht gefunden in den Snippets.