Allgemein > Fragen zu Funktionen
Automatische Textmarker-Markierungen
Thomas:
Hallo,
kann man einzelne Notenelemente automatisch farbig hinterlegen, wie zum Beispiel Wiederholungen, Tonartwechsel, Versetzungszeichen, ...?
--- Code: ---\version "2.18.2"
\relative c' {
c1
\repeat volta 2 {
c1
cis1
}
\key g \major
c1
}
--- Ende Code ---
fugenkomponist:
Kurze Antwort: Ja, kann man, ist halt evtl. relativ aufwendig (zumindest bis man ne erste Lösung hat, dann kann mans in ne Funktion packen und gut ist).
Lange Antwort: Man kann auf jeden Fall mit \markup etc. rumspielen; ich könnt mir sogar vorstellen, daß man das direkt im stencil der farbig zu hinterlegenden Grobs unterbringen kann. Bevor ich das aber probiere: Ist dir vielleicht schon damit geholfen, die einzelnen Grobs farbig zu drucken statt schwarz auf farbigem Hintergrund? Dann würde es reichen, das per (\once) \override zu ändern:
--- Code: ---\override Staff.KeySignature.color = #green
--- Ende Code ---
Und noch ein paar Detailfragen:
• Soll die Färbung alle Grobs des Typs betreffen (z. B. alle Tonartwechsel immer grün)? Davon hängt ab, wo der \override plaziert werden sollte.
• Sollen die Wiederholungen solche Klammern haben wie in rot angedeutet? Dafür gibt es startRepeatType und endRepeatType, die auf "[|:" und ":|]" statt ".|:" und ":|." gesetzt werden.
• Falls ein einfaches Färben nicht ausreicht: farbig umkringeln oder hinterlegen?
--- Code: ---\version "2.18.2"
\relative c' {
c1
\once \override Staff.BarLine.color = #red
\repeat volta 2 {
c1
\once \override Accidental.color = #darkyellow
cis1
}
\once \override Staff.BarLine.color = #red
\once \override Staff.KeySignature.color = #darkgreen
\key g \major
c1
}
--- Ende Code ---
harm6:
--- Zitat von: fugenkomponist ---ich könnt mir sogar vorstellen, daß man das direkt im stencil der farbig zu hinterlegenden Grobs unterbringen kann.
--- Ende Zitat ---
Yup, z.B.:
--- Code: ---\version "2.19.56"
#(define* (emphasize-in-color color padding #:optional (y-padding 0))
(lambda (grob)
(let* ((stil (ly:grob-property grob 'stencil))
(x-ext (ly:stencil-extent stil X))
(y-ext (ly:stencil-extent stil Y)))
(ly:grob-set-property! grob 'layer -100)
(ly:grob-set-property! grob 'stencil
(ly:stencil-add
(stencil-with-color
(make-filled-box-stencil
(interval-widen x-ext padding)
(interval-widen y-ext (+ y-padding padding)))
color)
stil)))))
\relative c' {
c1
\once \override Staff.BarLine.after-line-breaking =
#(emphasize-in-color red 0.2 1)
\repeat volta 2 {
c1
\once \override Accidental.after-line-breaking =
#(emphasize-in-color yellow 0.2)
cis1
\once \override Staff.BarLine.after-line-breaking =
#(emphasize-in-color red 0.2 1)
}
\once \override Staff.KeySignature.after-line-breaking =
#(emphasize-in-color green 0.2)
\key g \major
c1
}
--- Ende Code ---
Könnte man jetzt auch als Funktion kodieren ...
Gruß,
Harm
fugenkomponist:
Das war so das Vorgehen, was mir vorgeschwebt ist von der Idee her, aber daß es in der Umsetzung tatsächlich so gut und übersichtlich geht, hätte ich nicht gedacht ;) Und selbst hätt ich wahrscheinlich ne ganze Weile gebraucht, um Dinge wie stencil-with-color oder interval-widen zu finden (oder letzteres auch selbst zu schreiben …).
harm6:
--- Zitat ---[...]
daß es in der Umsetzung tatsächlich so gut und übersichtlich geht, hätte ich nicht gedacht
--- Ende Zitat ---
Nun ja, komplizierter wird es wenn man items am Zeilenumbruch nur am Zeilenende oder -anfang farbig unterlegt haben möchte.
Aber da warte ich mal wie Thomas sich äußert. ;)
--- Zitat ---stencil-with-color oder interval-widen
--- Ende Zitat ---
Dokumentiert ist:
--- Zitat von: IR ---Function: ly:stencil-in-color stc r g b
Put stc in a different color.
--- Ende Zitat ---
stencil-with-color ist aber häufig handlicher da eine vordefinierte Farbe übergeben werden kann.
Allerdings ist stencil-with-color definiert in stencil.scm, interval-widen in lily-library.scm. Im Gegensatz zu den in C++ definierten scheme-Funktionen werden die dortigen Definitionen nicht in die IR aufgenommen. Aber selbst die nur kursorische Lektüre dieser Dateien ist empfehlenswert.
Gruß,
Harm
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln