Autor Thema: quoteDuring-Zitate in Farbe  (Gelesen 1531 mal)

gbehrendt

  • Member
quoteDuring-Zitate in Farbe
« am: Montag, 27. Juli 2015, 19:08 »
Hej.
Für die Arbeitsphase möchte ich gern alle zitierten Motive – also alles, was über \quoteDuring ".." {..} eingefügt ist – in einer Farbe darstellen. Dabei sollte sich die Farbdefinition möglichst auf alle zitierten Elemente (Notenkopf, Hals, Fähnchen, Vorzeichen, Tremolostriche, Dynamik etc.) beziehen und v.a. an einer einzigen Stelle vorgenommen werden können, damit ich die Hervorhebung zentral an- und abschalten kann.

Meine bisherigen Versuche mit \tweak color #.. und \override ... direkt in der \addQuote-Definition bewirken leider gar nichts.

Besten Dank für einen Hinweis, wie es gehen könnte.
– Gereon


\version "2.18.2"

zitat = { \override NoteHead.color = #red }

music = { R1 c'8 c' d'4 a':16\> ais'\! }
\addQuote "m" { \zitat \music }

<<
{ \music }
{ a'4 g' f' e'  \quoteDuring "m" {s1} }
>>

Pusteblumi

  • Member
Re: quoteDuring-Zitate in Farbe
« Antwort #1 am: Montag, 27. Juli 2015, 19:45 »
Hallo Gereon,

versuchs mal damit:

\version "2.18.2"

colorQuoteDuring =
#(define-music-function (parser location what main-music ) (string? ly:music?)
   #{ 
     \override NoteHead.color = #red % kann später auskommentiert werden
     \quoteDuring $what $main-music
     \revert NoteHead.color % kann später auskommentiert werden
   #})

music = { R1 c'8 c' d'4 a':16\> ais'\! }
\addQuote "m" { \music }

<<
  \new Staff { \music }
  \new Staff {
    a'4 g' f' e' 
    \colorQuoteDuring "m" {s1}
    a'4 g' f' e' }
>>

Das ist eine Funktion, die \quoteDuring ersetzt. Zuvor wird die Farbe für die Notenköpfe gesetzt, und später auch wieder zurückgesetzt, damit nachfolgende (nicht-zitierte) Noten wieder normal dargestellt werden.

Ich hab mal jedes Staff explizit mit \new Staff begonnen, weil sie bei mir sonst in einer anderen Reihenfolge erscheinen. Weiß auch nicht, warum...

Viele Grüße,
Klaus

fugenkomponist

  • Member
Re: quoteDuring-Zitate in Farbe
« Antwort #2 am: Montag, 27. Juli 2015, 21:21 »
Ich mache etwas ähnliches:quoteDuring =
#(define-music-function
  (what main-music)
  (string? ly:music?)
  (if
   (ly:get-option 'point-and-click)
   #{ 
     \temporary \override NoteHead.color = #grey
     #(make-music 'QuoteMusic
        'element main-music
        'quoted-music-name what)
     \revert NoteHead.color
   #} 
   (make-music 'QuoteMusic
     'element main-music
     'quoted-music-name what)))
Wenn -dno-point-and-click gesetzt ist (also übersetzt wird mit lilypond -dno-point-and-click meinemusik.ly bzw. das, was Frescobaldi „Publikation“ (Strg+Umschalt+P) nennt), dann verhält sich dieses neue \quoteDuring ganz normal. Wenn aber point-and-click an ist (LilyPonds Standardverhalten), dann sind die Zitate grau.

Anders als bei Pusteblumis Lösung: Du musst die Definition des \quoteDuring-Befehls nie wieder ändern und auch nicht diese durch eine andere Funktion ersetzen, sondern du kannst bei jedem Übersetzen der Datei spontan entscheiden, ob du die Noten gerade bunt oder schwarz haben willst.

Gleich wie bei Pusteblumis Lösung: Nur die Notenköpfe werden gefärbt. Man könnte aber schauen, dass man das mit dem Snippet 443 verbindet.

Edit: Statt (ly:get-option 'point-and-click) geht auch (ly:get-option 'ich-faerbe-die-notenkoepfe), wenn ich das recht erinnere. Dann halt entsprechend mit lilypond -dich-faerbe-die-notenkoepfe übersetzen (das kann man Frescobaldi auch beibringen das automatisch zu setzen unter LilyPond→Notensatz (eigene Einstellungen), aufgerufen wird das dann per Strg+Umschalt+M).
« Letzte Änderung: Montag, 27. Juli 2015, 21:36 von fugenkomponist »

gbehrendt

  • Member
Re: quoteDuring-Zitate in Farbe
« Antwort #3 am: Montag, 27. Juli 2015, 21:42 »
Ganz vielen Dank, euch beiden!
Da ich mich mit der Point-and-click-Option bisher noch nicht beschäftigt habe (und auch bereit bin, mich um die Farbe noch selbst zu kümmern, zumal auch ein Ausdruck in dieser Variante möglich sein sollte), halte ich mich doch erst einmal an die Lösung von Klaus (Pusteblumi), allerdings in der Tat um die Funktionalität aus Snippet 443 erweitert, sodass alles blau wird, außer den Notenzeilen und -schlüsseln. Rückgängig mach ich das danach durch die explizite Einstellung auf schwarz, weil ich nicht wusste, ob/wie es mit \revert geht...

– Gereon


\version "2.18.2"

#(define (override-color-for-all-grobs color)
  (lambda (context)
   (let loop ((x all-grob-descriptions))
    (if (not (null? x))
     (let ((grob-name (caar x)))
      (ly:context-pushpop-property context grob-name 'color color)
      (loop (cdr x)))))))


cQuoteDuring =
#(define-music-function (parser location what main-music ) (string? ly:music?)
   #{ 
\applyContext #(override-color-for-all-grobs (x11-color "MediumBlue"))
    \quoteDuring $what $main-music
\applyContext #(override-color-for-all-grobs black)
   #})

music = { R1 c'8 c' d'4 a':16\> ais'\! }
\addQuote "m" { \music }

<<
{ \music }
{ a'4 g' f' e'  \cQuoteDuring "m" {s1} }
>>

harm6

  • Member
Re: quoteDuring-Zitate in Farbe
« Antwort #4 am: Dienstag, 28. Juli 2015, 22:03 »
Nur eine kleine Anmerkung für die Korinthenkacker ;)

Zitat
Rückgängig mach ich das danach durch die explizite Einstellung auf schwarz

Das 'color-property ist für gewöhnlich überhaupt nicht gesetzt. Der korrekte Weg eine Farbe wieder zurückzunehmen wäre hier also:

\applyContext #(override-color-for-all-grobs '())

Macht zwar keinen Unterschied in den aller-aller-meisten Fällen, aber ...

Gruß,
  Harm