LyricText für Liederheft einstellen?

Begonnen von martinusbaum, Sonntag, 4. November 2018, 20:43

« vorheriges - nächstes »

martinusbaum

Hallo,
nach einer Titelseite und Inhaltsverzeichnis kommt u.a. eine Vielzahl von Texten mit \lyricmode, die mit \include eingebunden werden.
Die Schriftgröße der Texte im Bereich der Melodie habe ich mit
\override StanzaNumber.font-size = #3
    \override LyricText.font-size =#3
eingestellt. Jetzt stehe ich auf dem Schlauch, wo/wie ich die selbe Schriftgröße für die Strophen (\markup) einstellen muss...
Wäre dankbar um Hilfe.

barrios

Ein kleines Beispiel welches das Problem verdeutlicht wäre hilfreich um Dir zu helfen.
She said: "Eh, I know you and you can not sing."
I said: "That's nothing you should hear me play piano!"

martinusbaum

hallo,
danke für das Hilfsangebot!
Im Anhang die Dateistruktur (.ily für die Noten und die erste Strophe, .lyi für die weiteren Strophen, .ly für die Zusammenstellung).
Für alle mit \include eingebundenen .lyi-Dateien soll die Schriftgröße geändert werden.
Aller Strophen-Text, der aus .lyi angezeigt wird, soll so groß sein wie der Liedtext der ersten Strophe
Ich stelle mir vor, dass der Befehl an der eingerahmten Stelle in der Test.ly steht.  ( ??.font-size = #2)

Ich suche das Wort, das für die Fragezeichen steht...

Wahrscheinlich habe ich da noch ein Problem mit \bookpart, aber das ist gerade nachrangig...

Manuela

Soweit ich weiß, sind Markups unabhängig von Contexten und lassen sich daher nicht über diese steuern. Einen Befehl, wie du ihn dir vorstellst, gibt es daher afaik leider nicht. Harm, korrigiere mich bitte, wenn ich falsch liege.

Als Workaround könntest du eine Variable an zentraler Stelle definieren und diese überall verwenden, wo Liedstrophentext vorkommt. Zusätzliche Änderungen der Schriftgröße werden dann auf diese Schriftgröße bezogen, schau dir einfach das Beispiel an.

schrift = #1.5

\markup {
% \fill-line {
    \hspace #0.1
    \column {\line \fontsize #2 { "Standardgröße #2" }
        \line {   "2. "
          \column {
            "Standardgröße"
                  }
              }
          }
        }

\markup \fontsize #schrift {
% \fill-line {
    \hspace #0.1
    \column {\line \fontsize #2 { "fontsize+schrift #2" }
        \line {   "2. "
          \column {
            "Zweite Strophe"
                  }
              }
          }
        }
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

statt ändern auf "Zitat" geklickt und abgeschickt, sorry  :-[
Danke für eure Hilfe
viele Grüße
-- Manuela

martinusbaum


martinusbaum

Leider wirkt so die Schriftgrößenänderung nur auf die genannte Zeile, nicht jedoch für die ganze Strophe...

Manuela

Zitat von: martinusbaum am Montag,  5. November 2018, 16:42
Leider wirkt so die Schriftgrößenänderung nur auf die genannte Zeile, nicht jedoch für die ganze Strophe...

Mein Code ist viell verwirrend, probier mal folgendes

\version "2.19.80"

schrift = #4

\markup {
  % \fill-line {
  \hspace #0.1
  \column {
    \line { "Standardgröße" }
    \line {
      "2. "
      \column {
        "Standardgröße"
      }
    }
  }
}

\markup \fontsize #schrift {
  % \fill-line {
  \hspace #0.1
  \column {
    \line { "fontsize #2" }
    \line {
      "2. "
      \column {
        "Zweite Strophe"
      }
    }
  }
}


Hier sollte der Unterschied deutlich zu sehen sein
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

Zitat von: ManuelaSoweit ich weiß, sind Markups unabhängig von Contexten und lassen sich daher nicht über diese steuern. Einen Befehl, wie du ihn dir vorstellst, gibt es daher afaik leider nicht. Harm, korrigiere mich bitte, wenn ich falsch liege.

Eigentlich ist \markup sowas wie ein Eingabemodus für Text. So wie \notemode ein Eingabemodus (von mehreren) für Musik ist.

Wenn \markup innerhalb eines musikalischen Context verwendet wird, wird ein grob (mit-)initiert. Am ehesten einsichtig natürlich TextScript.
Aber \tempo \markup \italic "Furioso" führt zu einer MetronomeMark. Und natürlich kann man eigentlich den stencil eines jeglichen grobs mit Text, also unter Verwendung von markup überschreiben. Falls nicht anders angegeben holt sich das jeweilige markup seine Schriftgröße aus den properties des jeweiligen grobs (oder einem fall-back: text-font-size des aktuellen layouts, in seltenen Fällen auch aus dem $defaultpaper.) Ein \markup mit \fontsize ist soweit es die Schriftgröße angeht ein multiplikator bei dem der default (das fallback) mit einem bestimmten Wert multipliziert wird, afaiu.
Deshalb kann man die Schriftgröße eines solchen grobs mit einem override verändern. Wie zum Beispiel \override LyricText.font-size  aus dem initialen post dieses threads.

Bei toplevel-markup sieht die Sache anders aus. Es wird kein grob initiiert. Deshalb ist auch kein override möglich. Falls nicht anders angegeben kommt die gewählte Schriftgröße aus dem fallback.

Insoweit, Manuela, hast Du ganz recht.
Natürlich kann man das was ich fallback genannt habe verändern, aber dann hat man auch andere Schriftgrößen für den Text in musikalischen Contexten. Eine Differenzierung ist nicht möglich soweit ich weiß.

Um differenziert zu arbeiten empfehle ich Manuelas Vorschlag zu folgen.

In manchen Fällen könntest Du auch diesen Code verwenden, aber Vorsicht!, jedes toplevelmarkup (außer \header) wird verändert. Der Aufruf der Funktion muß am Ende eines files erfolgen und es funktioniert nicht falls Du \book und/oder \bookpart verwendest, da müßte man anders vorgehen.

Aber hier ist er:

\version "2.19.82"


setToplevelMarkupFontsize =
#(define-void-function (fs)(number?)
  (set! toplevel-scores
    (map
      (lambda (e)
        (if (markup-list? e)
            (map (lambda (m) (make-fontsize-markup fs m)) e)
            e))
      (ly:parser-lookup 'toplevel-scores))))

\header {
  title = "TITLE"
}

\markup  "some long markup"

\new Voice
{
   \tempo "Allegro"
   R1
   c'-"foo-bar-buzz"
}

\markup \fontsize #3 { "some other long markup" "bar" }

\new Voice
{
   \tempo "Allegro"
   R1
   c'-"foo-bar-buzz"
}

   
\setToplevelMarkupFontsize 4



Gruß,
  Harm