Autor Thema: Tempobezeichnung im Pianostaff  (Gelesen 942 mal)

oiseau

  • Gast
Tempobezeichnung im Pianostaff
« am: Mittwoch, 25. Januar 2017, 23:47 »
Ich möchte mehrere kurze Stücke auf einer Blattseite abbilden, was soweit auch super funkioniert. Dazu habe ich die jeweilige Tempobezeichnung dynamisch in Variablen abgelegt, da die Formatierung eine Spezielle sein soll. In einer vorigen Lilypond-Version hat das wunderbar geklappt. Nun jedoch gibt er mir jedesmal einen Notenschlüssel in der Höhe der Tempobezeichnung mit aus.

Wie kann ich das umgehen? Ich möchte das Tempo nachträglich, wie unten, also nicht direkt zu den Notendaten angeben.

Danke im Voraus für Eure Hilfe.

\new PianoStaff <<
  \tempo "Allegretto"
\new Staff \rechteHand
\new Staff \linkeHand
 >>

fugenkomponist

  • Gast
Re: Tempobezeichnung im Pianostaff
« Antwort #1 am: Donnerstag, 26. Januar 2017, 01:22 »
Hallo oiseau,

willkommen zurück (nach zwei Beiträgen im Jahr 2010) im Forum! Bitte gib bei deinen Fragen immer deine verwendete LilyPond-Version und möglichst ein kompilierbares Minimalbeispiel an, damit potentielle Helfer schnell selbst deinen Code ausprobieren können. Bei diesem einfachen Problem komme ich tatsächlich ohne Minimalbeispiel aus, aber in der Regel wärs gut, die Definition von \rechteHand und \linkeHand noch dabeizuhaben.

In deinem PianoStaff stehen drei Dinge:

1. ein Tempo-Befehl
2. ein neuer Staff
3. ein weiterer neuer Staff

Der Tempo-Befehl steht in keinem der beiden Staffs. Nun legt LilyPond im Zweifelsfall implizit Kontexte an. Man kann so z. B. in eine Datei nichts weiter als
{ c }schreiben und LilyPond macht daraus quasi
\new Score {
    \new Staff {
        \new Voice {
            c
        }
    }
}
In deinem Fall wird um den PianoStaff implizit ein Score erzeugt und um den \tempo-Befehl ein Voice und darum ein Staff. Das erkennst du an dem zusätzlichen Notenschlüssel: Der gehört zu dem neuen Staff; es sind nur (vermutlich) keine Notenlinien da, weil keine Musik da drin steht, die Zeit verbraucht (\tempo verbraucht keine).

Die Lösung sieht folgendermaßen aus: Verhindere den neuen Staff, indem du den \tempo-Befehl in einen der beiden Staffs mit reinpackst. In welchen genau ist tatsächlich egal, weil MetronomeMarks (die Grobs, die dieser Befehl erzeugt) immer über dem obersten System stehen:
\new PianoStaff <<
    \new Staff { \tempo "Allegretto" \rechteHand }
    \new Staff \linkeHand
>>

oiseau

  • Gast
Re: Tempobezeichnung im Pianostaff
« Antwort #2 am: Donnerstag, 26. Januar 2017, 11:23 »
Vielen Dank! Das hat hervorragend geklappt.  :)

Ich hätte noch zwei zusätzliche Fragen:

1. Wie kann ich den vertikalen Abstand zwischen dem Titel und der ersten Systemgruppe vergrößern?
2. Ich möchte mehrere Stücke auf einer Seite unterbringen. Leider lässt Lilypond nur einen Titel am Blattanfang zu. Ich habe gelesen, dass PIECE in jedem SCORE angegeben werden kann. Ist es vielleicht möglich, die Eigenschaft von PIECE so anzupassen, dass sie, wie der TITEL, fett und zentriert dargestellt wird?

Zu meinem System: Ich nutze die Version 2.18.2


fugenkomponist

  • Gast
Re: Tempobezeichnung im Pianostaff
« Antwort #3 am: Donnerstag, 26. Januar 2017, 12:43 »
Das ist beides im \paper-Block machbar:
\paper {
  markup-system-spacing.basic-distance = 20
  scoreTitleMarkup = \markup {
    \column {
      \on-the-fly \print-all-headers { \bookTitleMarkup \hspace #1 }
      \huge \bold \fill-line {
        \fromproperty #'header:piece
      }
    }
  }
}
markup-system-spacing hat auch noch andere Eigenschaften minimum-distance und stretchability. Dazu und zu weiteren Abständen gibts eine schöne Zusammenfassung hier.

scoreTitleMarkup ist in titling-init.ly definiert, diese Definition hab ich genommen und abgeändert.

oiseau

  • Gast
Re: Tempobezeichnung im Pianostaff
« Antwort #4 am: Donnerstag, 26. Januar 2017, 17:16 »
Das half mir sehr weiter. Vielen Dank.  :)