Autor Thema: kleine Lücken u. Überlappungen bei Änderung von Notenlinien-Positionen  (Gelesen 1663 mal)

lc

  • Member
Hallo zusammen,

im Beispiel gibt es kleine Lücken und ab und zu Überlappungen zwischen den einzelnen \stopStaff \startStaff Abschnitten, die ich gerne vermeiden würde. Mache ich irgendwas falsch?

Viele Grüße,
lc

\version "2.16.1"

LinePositions = {
  \time 3/8
  s8
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.1 0 0.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.6 -0.5 -0.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.1 -1 -0.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.6 -1.5 -1.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.1 -2 -1.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.6 -2.5 -2.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.1 -3 -2.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.6 -3.5 -3.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.9 3.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 3.4 3.5 3.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.9 3 3.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.4 2.5 2.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.4 1.5 1.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.9 1 1.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.4 0.5 0.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4 -2.1 -2 -1.9)
  \startStaff
  s
}

LinePositionsStaff = \new Staff \with {
  \remove Time_signature_engraver
  \remove Clef_engraver
  \override BarLine #'transparent = ##t
} {
  \LinePositions
}

\score {
    \LinePositionsStaff
}

Be-3

  • Member
Re: kleine Lücken u. Überlappungen bei Änderung von Notenlinien-Positionen
« Antwort #1 am: Dienstag, 28. Mai 2013, 15:57 »
im Beispiel gibt es kleine Lücken und ab und zu Überlappungen zwischen den einzelnen \stopStaff \startStaff Abschnitten, die ich gerne vermeiden würde. Mache ich irgendwas falsch?

Hallo lc,

die "Unregelmäßigkeiten" haben zwei Ursachen: erstens Rundungseffekte in der Darstellung und zweitens (der Grund für die Überlappungen einerseits und Lücken andererseits) die Taktstriche.

Wenn man sich die Lücken stark vergrößert anschaut, sieht man, daß dort die abgerundeten Linienenden aneinanderstoßen.

Die überlappenden Stellen entstehen durch die (transparenten) Taktstriche. Deren Dicke (BarLine #'hair-thickness) bestimmt, wie stark die Überlappung ist, weil die Linien bis in die Taktstriche hineinreichen.

Erkenntnisse:
  • Durch Variation der Taktstrich-Dicke kann man die Stärke der Überlappung einstellen.
  • Die Lücken lassen sich vermeiden, wenn an allen Übergangsstellen Taktstriche sind.

Wenn man also Taktart 1/4 wählt und die Skips entsprechend auf ein Viertel setzt (s4), hat man an allen Übergangsstellen (unsichtbare) Taktstriche.
Setzt man deren Dicke auf (BarLine #'hair-thickness) auf #0.6, dann entstehen keine Lücken und keine Überlappungen.


Geändertes Coding:

\version "2.16.1"

LinePositions = {
  \time 1/4
  s4
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.1 0 0.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.6 -0.5 -0.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.1 -1 -0.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.6 -1.5 -1.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.1 -2 -1.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.6 -2.5 -2.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.1 -3 -2.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.6 -3.5 -3.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.9 3.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 3.4 3.5 3.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.9 3 3.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.4 2.5 2.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.4 1.5 1.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.9 1 1.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.4 0.5 0.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4 -2.1 -2 -1.9)
  \startStaff
  s
}

LinePositionsStaff = \new Staff \with {
  \remove Time_signature_engraver
  \remove Clef_engraver
  \override BarLine #'transparent = ##t
  \override BarLine #'hair-thickness = #0.6
} {
  \LinePositions
}

\score {
    \LinePositionsStaff
}

Viele Grüße
Torsten

lc

  • Member
Re: kleine Lücken u. Überlappungen bei Änderung von Notenlinien-Positionen
« Antwort #2 am: Dienstag, 28. Mai 2013, 17:54 »
Hallo Torsten,

vielen Dank für Deine Erklärung und den Lösungsvorschlag!

Jetzt war das Beispiel blöderweise isoliert aus einem größeren Zusammenhang, sprich: mehrere (normal notierte) Stimmen, die auch Taktstriche haben; neues Beispiel unten.
Da bleibt mir dann wohl "nur" (Lilypond macht anspruchsvoll... ;)) ein polymetrischer Kompromiss zwischen dünneren Taktstrichen und geringen Überlappungen, oder?

Viele Grüße,
lc

\version "2.16.1"

LinePositions = {
  \time 1/8
  s8
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.1 0 0.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.6 -0.5 -0.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.1 -1 -0.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.6 -1.5 -1.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.1 -2 -1.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.6 -2.5 -2.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.1 -3 -2.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.6 -3.5 -3.4 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.9 3.9 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 3.4 3.5 3.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.9 3 3.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.4 2.5 2.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.4 1.5 1.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.9 1 1.1 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.4 0.5 0.6 4)
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4 -2.1 -2 -1.9)
  \startStaff
  s
}

VoiceI = \relative c'' {
  \time 4/4
  b2. b4 b b b b b b b b b
}

TextI = \lyricmode {
  Bei -- spiel, Bei -- spiel, Bei -- spiel,  Bei -- spiel, Bei -- spiel,
}

LinePositionsStaff = \new Staff \with {
  \remove Time_signature_engraver
  \remove Clef_engraver
  \override BarLine #'transparent = ##t
  \override BarLine #'hair-thickness = #0.6
} {
  \LinePositions
}

TextPartStaff = \new Staff \with {
  \remove Clef_engraver
  \override StaffSymbol #'line-count = #'1
  %\override BarLine #'hair-thickness = #0.6
} { \VoiceI }
\addlyrics { \TextI }

\score {
  <<
    \LinePositionsStaff
    \TextPartStaff
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1 4)
      \remove "Timing_translator"
      \remove "Default_bar_line_engraver"
      }
    \context {
      \Staff
      \consists "Timing_translator"
      \consists "Default_bar_line_engraver"
    }
  }
}


Be-3

  • Member
Re: kleine Lücken u. Überlappungen bei Änderung von Notenlinien-Positionen
« Antwort #3 am: Dienstag, 28. Mai 2013, 18:36 »
Ach so, ja, aber polymetrisch muß nicht unbedingt sein - schließlich erlaubt es Lilypond, an beliebigen Stellen per \bar "|" Taktstriche zu setzen.

Die Treppen-Abschnitte (also StaffSymbol-Abschnitte) können durch ensprechende Wahl von Skips (s1, s4, s8 usw.) passend dimensioniert werden. Bei jedem Übergang habe ich manuell einen \bar "|" gesetzt, um die "Lücken zu stopfen".

Ich habe mal Deinen letzten Quellcode so angepaßt, daß die seltsamen Treppenlinien irgendwie in Zusammenhang mit den Noten und dem Text darunter stehen.
Der Trick besteht nur darin, an den Übergangsstellen Takstriche zu haben. Deren Position und Dicke ist unabhängig von den anderen Systemen und sollte sich nicht in die Quere kommen.

Wenn Dich die Überlappungen stören, die durch die Standard-Dicke der Taktstriche im unteren System kommen, gibt es noch einen kleinen Trick: Die Standard-Dicke ist 1.9, wenn Du ein Minuszeichen davorstellst, sieht der Strich genauso aus, hat bewirkt aber kein Zusammenziehen/Überlappen mehr.
\override BarLine #'hair-thickness = #-1.9

Viele Grüße
Torsten

\version "2.16.1"

LinePositions = {
  \time 4/4
  s1
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.1 0 0.1 4)
  \bar "|"
  \startStaff
  s8
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -0.6 -0.5 -0.4 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.1 -1 -0.9 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -1.6 -1.5 -1.4 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.1 -2 -1.9 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -2.6 -2.5 -2.4 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.1 -3 -2.9 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.6 -3.5 -3.4 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 -3.9 3.9 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 3.4 3.5 3.6 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.9 3 3.1 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 2.4 2.5 2.6 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.4 1.5 1.6 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.9 1 1.1 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 0.4 0.5 0.6 4)
  \bar "|"
  \startStaff
  s
  \stopStaff
  \override Staff.StaffSymbol #'line-positions = #'(-4 1.9 2 2.1 4 -2.1 -2 -1.9)
  \startStaff
  s4
}

VoiceI = \relative c'' {
  \time 4/4
  b2. b4 b b b b b b b b b
}

TextI = \lyricmode {
  Bei -- spiel, Bei -- spiel, Bei -- spiel,  Bei -- spiel, Bei -- spiel,
}

LinePositionsStaff = \new Staff \with {
  \remove Time_signature_engraver
  \remove Clef_engraver
  \override BarLine #'transparent = ##t
  \override BarLine #'hair-thickness = #0.5
} {
  \LinePositions
}

TextPartStaff = \new Staff \with {
  \remove Clef_engraver
  \override StaffSymbol #'line-count = #'1
  \override BarLine #'hair-thickness = #-1.9
} { \VoiceI }
\addlyrics { \TextI }

\score {
  <<
    \LinePositionsStaff
    \TextPartStaff
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1 4)
      \remove "Timing_translator"
      \remove "Default_bar_line_engraver"
      }
    \context {
      \Staff
      \consists "Timing_translator"
      \consists "Default_bar_line_engraver"
    }
  }
}

lc

  • Member
Re: kleine Lücken u. Überlappungen bei Änderung von Notenlinien-Positionen
« Antwort #4 am: Dienstag, 28. Mai 2013, 18:49 »
Zitat
Wenn Dich die Überlappungen stören, die durch die Standard-Dicke der Taktstriche im unteren System kommen, gibt es noch einen kleinen Trick: Die Standard-Dicke ist 1.9, wenn Du ein Minuszeichen davorstellst, sieht der Strich genauso aus, hat bewirkt aber kein Zusammenziehen/Überlappen mehr.
\override BarLine #'hair-thickness = #-1.9

Fantastisch, das ists, Danke!

Viele Grüße,
lc