Lilypond - vertikale Abstände?

  • Ersteller walking gills
  • Erstellt am
W
walking gills
Registrierter Benutzer
Zuletzt hier
13.08.21
Registriert
10.05.06
Beiträge
217
Kekse
2.222
Hallo zusammen!

Ich habe mehrere Staff-Groups und möchte manuell die Abstände zwischen diesen Gruppen einstellen können. Also so in etwa:
Code:
<<
Staff1
Staff2
>>

[B]<hier soll der Abstand hin>[/B]

<<
Staff3
Staff4
>>

Die Dokumentation erscheint mir sehr kompliziert. Mir wäre ein simpler Befehl am liebsten, der an einer beliebigen Stelle einen frei wählbaren vertikalen Abstand einfügt. Kennt jemand so einen Befehl?

Bisher habe ich das über ein leeres markup bei der ersten Note des entsprechenden Staffs gemacht, aber das geht seit dem update auf Lilypond 2.14.2 irgendwie nicht mehr.

Danke schon mal
wg
 
Eigenschaft
 
Hallo wg,

tja, es stimmt schon, vertikale Abstände sind so eine Sache...
Wenn Du generell zwischen StaffGroups den Abstand vergrößern willst, läßt sich das z. B. zentral außerhalb festlegen:

Code:
\layout {
  \context {
    \StaffGroup
    \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #15 
  }
}

<<
  \new StaffGroup  <<
    \new Staff  { s1 }
    \new Staff  { s1 }
  >>
  \new StaffGroup <<
    \new Staff { s1 }
    \new Staff { s1 }
  >>
>>

... oder eventuell individuell, auch für Einzelne Staffs mit \with {...}-Konstruktion innerhalb des \score-Blocks.
Bei Fragen - einfach fragen!

Viele Grüße
Torsten
 
Danke für deine Antwort Torsten!

Ich glaube ich habe oben die Terminologie falsch benutzt. Ein staff ist eine Zeile mit Noten und eine staff group eine Gruppe aus Notenzeilen (z.B. Bass- und Melodiespur), oder? Wie nennt man denn die Gesamtheit der Spuren, die zu einem Zeitpunkt erklingen? Also alles zwischen dem ersten << und dem letzten >>?

Dein Beispiel vergrößert die Abstände zwischen Zeilen, die gleichzeitig erklingen, während ich die Abstände zwischen Teilen des Stücks vergrößern möchte, die nacheinander erklingen. Und das eben am besten so, dass ich unterschiedliche Abstände an unterschiedlichen Stellen wählen kann. Fällt dir dazu auch was ein?

Viele Grüße
wg
 
Dein Beispiel vergrößert die Abstände zwischen Zeilen, die gleichzeitig erklingen, während ich die Abstände zwischen Teilen des Stücks vergrößern möchte, die nacheinander erklingen. Und das eben am besten so, dass ich unterschiedliche Abstände an unterschiedlichen Stellen wählen kann. Fällt dir dazu auch was ein?

Hallo wg,

die Terminologie ist tatsächlich nicht so eideutig, deshalb ist es oft von Vorteil, die (unmißverständlichen) Lilypond-Befehle/Variablen zu benutzen.
Eine "StaffGroup" wird üblicherweise verwendet, um zusammengehörige Instrumente zu gruppieren (z. B. Flöte I und II, Horn I bis IV, Streicher usw.). Diese werden dann mit einer "Akkoladenklammer" zusammengefaßt. Manchmal wird mit "Akkolade" aber auch das gesamte System bezeichnet usw. usf. - es ist also alles oft mißverständlich.

Wie dem auch sei: jetzt weiß ich ja, wie Du's gemeint hast. Deshalb nun mehrere Lösungsansätze hierfür (zuerst allgemeine Änderungen, dann Anpassungen in Einzelfällen).

Vorab noch ein vielleicht nützlicher Hinweis: Wenn man sich unsicher ist, welche der vielen Abstandsvariablen (basic-distance, minimum-distance, padding, stretchability usw.) welche Auswirkungen hat, kann man sich anzeigen lassen, wenn man im \paper-Block annontate-spacing setzt:
Code:
\paper {
  annotate-spacing = ##t
}
Dann bekommt man (unübersichtlich, aber sehr hilfreich) eine "Bemaßung" eingezeichnet.


1a) Grundsätzlich den Abstand zwischen Systemen ändern

Für den Abstand der Systeme voneinander ist system-system-spacing (also der Abstand von System zu System) zuständig. Wenn Du beispielsweise hier die basic-distance auf 20 erhöhst, stehen die Systeme generell weiter auseinander:

Code:
\version "2.14.2"

\paper {
  system-system-spacing #'basic-distance = #20
  %annotate-spacing = ##t      % bei Bedarf "Bemaßung" anzeigen
}

<<
    \new Staff  { \repeat unfold 3 { \repeat unfold 6 { s1 } \break } }
    \new Staff  { \repeat unfold 3 { \repeat unfold 6 { s1 } \break } }
>>

1b) Seitenanzahl explizit vorgeben

Man kann Lilypond zwingen, die Partitur auf eine vorgegebene Seitenanzahl zu verteilen. Wenn man diese Zahl erhöht, vergrößert sich notgedrungen auch der Abstand zwischen den Systemen:

Code:
\paper {
  page-count = #2
}


2) In Einzelfällen Systemabstand individuell vergrößern

Dein "Trick" mit dem leeren Markup funktioniert eigentlich immer noch (auch noch heute in Version 2.16).
Leider schreibst Du nicht konkret, was Du eingegeben hast. Ich kann da nur raten, und der Unterschied im Verhalten ab Version 2.14.2, der mir auffällt, ist, daß ein tatsächlich "leeres" Markup im Gegensatz zu "früher" völlig ignoriert wird. Das läßt sich aber leicht beheben, indem man statt \null oder "" ein Leerzeichen " " einsetzt. :D

Ich habe für solche Fälle eine Funktion \openUp definiert, der ich einfach den gewünschten Abstand übergeben kann.
Das Beispiel zeigt fünf Systeme, von denen ich zwischen dem zweiten und dritten einen stark vergrößerten und zwischen drittem und viertem einen weniger stark vergrößerten Abstand möchte. Dazu genügt es, an den entprechenden Stellen "\openUp #25" und "\openUp #15" einzufügen:

Code:
\version "2.16.0"

openUp = #(define-music-function
            (parser location padding)
            (number?)
              #{ \tweak TextScript #'padding $padding _\markup { " " } #})

<<
    \new Staff  { \repeat unfold 5 { \repeat unfold 6 { s1 } \break } }
    \new Staff  { 
      \repeat unfold 6 { s1 } 
      \openUp #25 \repeat unfold 6 { s1 } 
      \openUp #15 \repeat unfold 18 { s1 } 
    }
>>

systemspacing.PNG

Natürlich ist das Beispiel häßlich und stark übertrieben, aber man soll ja deutlich die Auswirkungen erkennen.

Viele Grüße
Torsten
 
Dein "Trick" mit dem leeren Markup funktioniert eigentlich immer noch (auch noch heute in Version 2.16).
Leider schreibst Du nicht konkret, was Du eingegeben hast. Ich kann da nur raten, und der Unterschied im Verhalten ab Version 2.14.2, der mir auffällt, ist, daß ein tatsächlich "leeres" Markup im Gegensatz zu "früher" völlig ignoriert wird. Das läßt sich aber leicht beheben, indem man statt \null oder "" ein Leerzeichen " " einsetzt.
Super, danke! Das ist erst mal die perfekte Lösung für alten Files! :hail: :) Für die Zukunft probiere ich mal deine Funktion aus.

Leitest du eigentlich einen Chor oder machst professionell was mit lilypond? Du kennst dich ja echt super aus. ;) Im Vergleich mit Latex finde ich lilypond leider ganz schön kompliziert und weniger intuitiv. Aber natürlich benutzen es auch einfach viel weniger, sodass googeln nicht so erfolgreich ist.

Danke jedenfalls noch mal
wg

/edit: Ein bisschen zu früh gefreut. Leider werden die Akkorde nicht mehr wie früher mitverschoben. Mein Befehl
\once \override TextScript #'Y-extent = #'( 0 . 15 )
c^\markup { " " }
im Staff mit der Melodie verschiebt nur die Notenzeile, während die Akkorde unverschoben bleiben. Vielleicht muss ich die alten Dateien doch umschreiben und auf eine der anderen Möglichkeiten ausweichen, die du oben beschrieben hast.
 
Zuletzt bearbeitet:
Nein, ich leite keinen Chor (und auch sonst nichts) und mein Geld verdiene ich nicht mit Musik...
Auch bei Lilypond kommt es darauf an, Gugel-Anfragen geschickt zu formulieren (meist scheitert es ja daran, daß man nicht die "richtigen" Stichworte kennt). Ansonsten wird man konkret nachfragen müssen (so, wie Du's hier getan hast) - dann erhält man eigentlich so gut wie immer eine Lösung.

Viele Grüße
Torsten
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben