Spacing bei zwei Stimmen

Begonnen von mxordn, Sonntag, 23. Juni 2019, 13:54

« vorheriges - nächstes »

mxordn

Liebe lilypond-Gemeinde,

im nachstehenden Beispiel erhalte ich durch die zweite Stimme ein sehr eigenartiges weites horizontales spacing von der zweiten zur dritten Note. Was mache ich falsch, bzw. hat jemand eine Idee warum das passiert und wie es sich lösen lässt? Ich komme nicht dahinter und bin für Tipps sehr dankbar.


\version "2.19.82"

voiceGrundbass = \relative c {
  \omit Stem
  \set fontSize = -3
  s1 g4
}

bassLine =  \relative c' {
  \set fingeringOrientations = #'(right)
  \clef "bass"
<f,-1>1
\set fingeringOrientations = #'(left)
<d-5>_\markup { "D." } \glissando
\set fingeringOrientations = #'(right)
<c-1>
<c-1>
}

fb = \figuremode {s1 <6 4 3>1 }

% The score definition
\score {
    \new PianoStaff \with {
      \override BassFigure.font-size = -2
      \override BassFigureAlignmentPositioning.staff-padding = 4
    }
    <<
      \context Staff = "1" \with {
      }
      <<
        \time 8/1
          \new Voice= "1" { \voiceTwo \bassLine }
          \new Voice= "2" { \voiceOne \voiceGrundbass }
        \fb
      >>
    >>
  \layout {
    \context {
      \Staff
      skipBars = ##t
      \remove "Time_signature_engraver"
      \remove "Bar_number_engraver"
    }
  }
}

harm6

Hallo mxordn,

willkommen im Forum.

Zwei Dinge vorab: Bitte poste Deinen Code in dafür gibts den #-Button.

Versuche immer ein minimal zu erstellen. Häufig kommt man dann selbt scon dahinter was schief läuft, in jeden Fall machst Du es aber potenziellen Helfern leichter.
Hier ist schon

\version "2.19.82"

one= { d'1 c' }
two = { g''4 }
\new Staff << \one \two >>

hinreichend, um das Problem darzustellen.


Zum eigentlichen Problem:
Du schreibst nur Ganze Noten, sowie eine einzelne Viertel.
Vereinfacht gesagt springt LilyPond's spacing-engine von Ganze-Spacing zu Viertel-Śpacing, sobald die Viertel auftaucht.
Deshalb der vermehrte Platz.

Erfahrungsgemäß verändert sich das aber noch, sobald Du die Zeile bzw das ganze Stück fertig geschrieben hast.
Nicht umsonst verbraucht LilPond beim spacing die meiste Zeit und Rechnerleistung.
Im Moment hat LilyPond noch nicht besonders viele Anhaltspunkte, insoweit siehts noch nicht besonders aus.
Mein erster Rat ist also schreib Dein Stück fertig und kümmere Dich um layout-Fragen am Schluß.

Falls Du dann nicht zufrieden bist oder falls Du nur diese Halbzeile brauchst, so gibt es verschieden Möglichkeiten einzugreifen (immer auf das minimal bezogen):
(1)
Mach lily vor es käme keine Viertel sondern ein Ganze, d.h. skaliere den Notenwert:
two = { g''4 *1*4 }
Oder schreib eine Ganze und ersetze den Notenkopf (hier nicht gezeigt)
(2)
Fange eine neue SpacingSection an und passe den SpacingSpanner Deinen Wünschen an.
two = {
  \newSpacingSection
  \override Score.SpacingSpanner.common-shortest-duration = #(ly:make-moment 1)
  g''4
  %%  ... \newSpacingSection
}
Ich mach das aber nur wenns gar nicht anders geht. Man raubt lily nämlich die Möglichkeit angemessen selbst zu reagieren, im Endergebnis muß man dann selbst andauernd das spacing neu setzen...

Aber hier in Deinem Originalcode:

\version "2.19.82"

voiceGrundbass = \relative c {
  \omit Stem
  \set fontSize = -3
  s1
 
  %%% SO
  g4*1*4
 
  %%% ODER SO
  %\newSpacingSection
  %\override Score.SpacingSpanner.common-shortest-duration = #(ly:make-moment 1)
  %g4
  %s2.
  %\newSpacingSection
  %\revert Score.SpacingSpanner.common-shortest-duration
}

bassLine =  \relative c' {
  \set fingeringOrientations = #'(right)
  \clef "bass"
<f,-1>1
\set fingeringOrientations = #'(left)
<d-5>_\markup { "D." } \glissando
\set fingeringOrientations = #'(right)
<c-1>
<c-1>
}

fb = \figuremode {s1 <6 4 3>1 }

% The score definition
\score {
    \new PianoStaff \with {
      \override BassFigure.font-size = -2
      \override BassFigureAlignmentPositioning.staff-padding = 4
    }
    <<
      \context Staff = "1" \with {
      }
      <<
        \time 8/1
          \new Voice= "1" { \voiceTwo \bassLine }
          \new Voice= "2" { \voiceOne \voiceGrundbass }
        \fb
      >>
    >>
  \layout {
    \context {
      \Staff
      skipBars = ##t
      \remove "Time_signature_engraver"
      \remove "Bar_number_engraver"
    }
  }
}



Ansonsten siehe auch http://lilypond.org/doc/v2.19/Documentation/notation-big-page#proportional-notation


HTH,
  Harm

mxordn

Herzlichen Dank! Das löst mein Problem vollkommen.

Ich hatte auch den Verdacht dass es mit den Vierteln zu tun hat, da es selbst im Kontext einer längeren Partitur bestehen blieb. Aber auf die Idee g4*1*4 zu schreiben wäre ich nie gekommen. Wieder etwas gelernt.

Die Code Umgebung nutze ich nächstes Mal, der tag ist mir durch die Lappen gegangen.