Score \with und passender Header

Begonnen von martin, Montag, 17. Juni 2024, 10:51

« vorheriges - nächstes »

martin

Hallo,

ich habe gestern angefangen, mich in Lilypond einzuarbeiten und bin bisher ganz angetan.
Die benutzte Version ist: 2.24.3

Nun stehe ich vor dem Problem, dass ich in einer Datei mehrere Blöcke mit \new Score erstellen und diesen mit \with Eigenschaften mitgebe (brauche ich wegen fehlenden Notenhälsen). Wie bekomme ich es hin, diese Blöcke noch mit einem header zu versehen?
Hier ein passender Auszug:
\new Score \with {
  timing = ##f
  barAlways = ##t
  defaultBarType = ""
  \omit TimeSignature
  \omit Stem
}

<< \relative {
  \key f \major
 g'4 g g f g a a c\bar "||"
}

Ich habe versucht, \header in die with-Klammer zu nehmen oder auch so an passender Stelle in den Code einzufügen, das führt entweder zu Fehlern oder der Header wird für alle Score-Blöcke übernommen. Das möchte ich so aber nicht, sondern nur für jeden Block extra.

Hat jemand eine Idee? Danke...
Martin

Rudi Guggt

Hallo,
und willkommen im Forum!

dein Konstrukt \new Score ... scheint die Lage zu verkomplizieren...

Üblicher ist einfach \score zu nehmen, dann kann man auch jedem Score einen Header zuweisen:

\version "2.25.17"

\score {
  \new Staff \with {

    \omit TimeSignature
    \omit Stem
  }

  \relative {
    \key f \major
    \omit Score.BarLine
    g'4 g g
    f g a a
    \undo \omit Score.BarLine
    c
    \bar "||"
  }
  \header {
    piece = "g"
  }
}


Gruß,
Rudi

harm6

Hallo,

noch ein paar Worte zu
\new Score
vs
\score

score (klein geschrieben) ist der Name einer Funktion, die eine Teil-Partitur aus einem musikalischen Ausdruck, einem eventuell vorhandenen score-header und einer eventuell vorhandenen output-Definition, layout (der default) und/oder midi, erstellt.
Ich schrieb Teil-Partitur, denn ein file kann mehrere \score-Blöcke enthalten, sowie einen book-header, page-header/footer, sonstigen Text (als stand-alone markup), die dann eine vollständige Partitur ergeben.

Score (groß geschrieben) ist eine context-Definition, d.h. es werden diverse engraver und context-properties als default verwendet bzw gesetzt. Ganz allgemein gesprochen können einzelne default context-Definitionen mittels \with verändert werden, für den Score-context ist das aber idR nicht sinnvoll.
\new Score wendet diese Setzungen dann auf den musikalischen Inhalt an.
Ein header oder layout kann nicht Teil eines context sein.
Auch ist das Ergebnis von \new Score { ... } erstmal keine Teil-Partitur. Vielmehr umschließt LilyPond das ganze automatisch noch mittels \score ..., falls der user es nicht bereits getan hat.
In der Praxis ist es außer in Sonderfällen völlig unnötig \new Score ... zu verwenden.
Sinnvoll ist die Verwendung von Score nur dann, wenn man die default-Setzungen von Score anpassen möchte, z.B.
\set Score.<context-definition> = <value>
\context Score \applyContext ...
\layout {
  \context {
    \Score
    ...
  }
}
wobei diese Befehle/Setzungen jeweils ihre eigenen Anwendungsbedingungen mit sich bringen.


Also, verwende \score { ... }, wie Rudi schon schrieb.
Setzungen die grobs verändern, wie
  \omit TimeSignature
  \omit Stem
können in der Musik (mit richtig addressiertem context), in \with oder im \layout gesetzt werden.
Für context-properties, wie
  timing = ##f
  barAlways = ##t
  defaultBarType = ""
gilt das gleiche.
Wobei es barAlways in 2.24.3 nicht mehr gibt, verwende stattdessen forbidBreakBetweenBarLines.
Das gleiche gilt für defaultBarType. Heißt jetzt measureBarType.
Ist Dein file zuerst mit einer älteren Version geschrieben? Dann nutze convert-ly.
Oder verwendest Du eine Dokumentation, die nicht zu 2.24.3 passt?

Dein Beispiel könnte also so aussehen:
\version "2.24.3"

\score {
  \relative {
    \key f \major
    g'4 g g f g a a c\bar "||"
  }
  \layout {
    \context {
      \Score
      timing = ##f
      forbidBreakBetweenBarLines = ##f
      measureBarType = ""
    }
    \context {
      \Staff
      \omit TimeSignature
    }
    \context {
      \Voice
      \omit Stem
    }
  }
}
Du hast jetzt eine Teil-Partitur (meistens sprechen wir hier von einem score im LilyPond-Sinn) mit angewendeten Veränderungen von grob- und context-properties (noch ohne header).
Wie aus dem was ich oben schrieb vielleicht ersichtlich wird so können diese grob- und context-properties auch mit anderen Mitteln erreicht werden, wie man am vorteilhaftesten vorgeht hängt von der konkreten Situation ab, ist zu einem kleinen Teil aber auch Geschmackssache.
Z.B., falls Du dieselben grob- und context-properties in allen \score eines files haben willst, so platziere das layout nicht in \score sondern toplevel:
\version ...
\layout { ... }
\score { ... }
\score { ... }
...
Kombinationen sind dabei möglich.

Zum \header
LilyPond hat default-Setzungen für book- bzw score-header.
Beide werden mittels \header { ... } initialisiert, wobei der book-header toplevel zu platzieren ist der score-header in \score { ... } gehört.
Per default werden so einige Setzungen für den score andere fürs ganze verwendet, siehe Doku.
Hier ein Beispiel:
\version "2.24.3"

\header {
  title = "Meine Meisterwerke"
  composer = "Composer: MiniMe"
}

\layout {
  \context {
    \Score
    timing = ##f
    forbidBreakBetweenBarLines = ##f
    measureBarType = ""
  }
  \context {
    \Staff
    \omit TimeSignature
  }
  \context {
    \Voice
    \omit Stem
  }
}

\score {
  \relative { \key f \major g'4 g g g \break g g g g \bar "||" }
  \header { piece = "Mein erstes Meisterwerk" opus = "opus 1" }
}

\score {
  \relative { \key f \major a'4 a a a \break a a a a \bar "||" }
  \header { piece = "Mein zweites Meisterwerk" opus = "opus 2" }
}

Erfahrungsgemäss gibt es immer wieder Probleme mit der Aufteilung von book- und score-header.
Frag erneut falls Du mit Doku dazu nicht weiter kommst.
Ich selber verwende für größere Projekte z.B. nie den default sondern definiere eigene book- bzw score-header.


Natürlich gibt es noch viel mehr zu sagen.

Aber für den Moment solls reichen...

HTH,
  Harm

martin

Hallo,

habt herzlichen Dank für die schnellen Antworten und auch für die sehr ausführlichen Hinweise. Ich werde dann mal sehen, dass ich es damit hinbekomme und weiter lesen...  :)

Viele Grüße
Martin