Am 15.04.2017 um 18:02 schrieb Malte Meyn:
Am 15.04.2017 um 17:32 schrieb Marc Hohl:
Hi list,
I am working on a little piece that's played as written; after
that, the musician has to turn the page upside down and play the
resulting notes.
I managed to get the clef displayed at the beginning and the end of
each line, and I can flip the clef ;-)
Unfortunately, overriding the Clef.stencil at the end of the line
changes the apperance for the clef in the next line, too.
You need before-line-breaking here so you can use the function
ly:item-break-dir:
\override Clef.before-line-breaking = #(lambda (grob) (if (equal?
(ly:item-break-dir grob) LEFT) (ly:grob-set-property! grob 'stencil
(lambda (grobb) (grob-interpret-markup grobb #{ \markup \translate
#'(0 . 2) \flip \musicglyph #"clefs.G" #})))))
I tried to go one step further and include the key signature and time
signature in my example, see the attached code.
It works and looks quite ok (the spacing between the flipped sharp and
the 3/4 is a little too wide), but I get a lot of errors:
Programmierfehler: No spacing entry from Item to `clef'
Fortsetzung, die Daumen drücken
and one line like this:
Programmierfehler: No spacing entry from TimeSignature to `key-signature'
Fortsetzung, die Daumen drücken
I searched in the sources and assume that I have to enhance the
space-alist entries in the concerning grobs, but I do not have a clue
about the first error message, so any help is highly apprechiated.
Happy Easter!
Marc
\version "2.19.0"
#(define-markup-command (flip layout props arg)
(markup?)
(interpret-markup layout props
(markup #:concat (#:null #:scale (cons -1 -1) #:line (arg)))))
global = {
\time 3/4
\key g \major
\repeat unfold 4 {
s2. * 4 | \break
}
\time 3/4
}
melody = {
\repeat unfold 16 { c'4 4 4 }
}
\layout {
\context {
\Score
\override BreakAlignment.break-align-orders =
##((left-edge ambitus breathing-sign time-signature
key-cancellation key-signature clef staff-bar custos)
(left-edge ambitus breathing-sign clef key-cancellation
key-signature staff-bar time-signature custos)
(left-edge ambitus breathing-sign clef key-cancellation
key-signature staff-bar time-signature custos))
}
\context {
\Staff
explicitKeySignatureVisibility = ##(#t #f #t)
explicitClefVisibility = ##(#t #f #t)
\override Clef.break-visibility = ##(#t #f #t)
\override KeySignature.break-visibility = ##(#t #f #t)
\override Clef.after-line-breaking =
#(lambda (grob)
(if (equal? (ly:item-break-dir grob) LEFT)
(ly:grob-set-property! grob 'stencil
(lambda (grobb)
(grob-interpret-markup grobb
#{ \markup \translate #'(0 . 2) \flip \musicglyph #"clefs.G" #})))))
\override KeySignature.after-line-breaking =
#(lambda (grob)
(if (equal? (ly:item-break-dir grob) LEFT)
(ly:grob-set-property! grob 'stencil
(lambda (grobb)
(ly:stencil-translate-axis
(ly:key-signature-interface::print grobb) -4 Y)))))
\override TimeSignature.after-line-breaking =
#(lambda (grob)
(if (equal? (ly:item-break-dir grob) LEFT)
(ly:grob-set-property! grob 'stencil
(lambda (grobb)
(ly:stencil-scale
(ly:time-signature::print grobb) -1 -1)))))
}
}
\score {
\new Staff << \global \melody >>
}
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user