StaffSymbol.line-positions II

Begonnen von erich, Mittwoch, 26. Juli 2017, 19:32

« vorheriges - nächstes »

erich

Hallo allen,

ich komme nochmal mit demselben Thema; leider ist es so, wie ich schon befürchtet hatte, dass sich der Fehler auf die Berechnung der Abstände auswirkt.

Hier ein Beispiel (es dient nur zur Demonstration!)


\version "2.19.52"
\language "nederlands"

\header {
  tagline = ##f
}

\paper {indent = 0
        line-width = 20
        system-system-spacing = #'((basic-distance . 14))}
\score{
  <<
    \new Staff \with {\remove "Time_signature_engraver"
           \override StaffSymbol.line-positions = #'(-4 -2 0 2 4)}
    \new Voice { c'1 \break
    \stopStaff
        \override Staff.StaffSymbol.line-positions = #'(-14 -12 -10 -8 -6 -4 -2 0 2)
    \startStaff
    c'1 \break
    \stopStaff
        \override Staff.StaffSymbol.line-positions = #'(-6 -4 -2 0 2)
    \startStaff
    c'1}
  >>
}


Man kann feststellen, dass in die Abstandsberechnung der überstehende Taktstrich einbezogen wird.


Gruß
Erich

harm6

Hallo Erich,

ZitatMan kann feststellen, dass in die Abstandsberechnung der überstehen Taktstrich einbezogen wird.

Nö.
Der überstehende Taktstrich ist momentan (d.h. bei basic-distance auf 14) ohne Bedeutung.
Du kannst zusätzlich auch den Bar_engraver rausschmeißen, falls Du mir nicht glaubst.

Tatsächlich ist basic-distance das Problem. Denn diese Abstands-Variable mißt sich von der 0-Line des einen zur 0-Linie des anderen Sýstems.
Und andere hast Du nicht gesetzt.
Hast Du annotate-spacing verwendet?
https://lilypondforum.de/index.php/topic,91.msg560.html#msg560
Sieht man da.

Vielmehr solltest Du minimum-distance und basic-distance auf null setzen und nur mit padding arbeiten, zumindest solange wie Du die Staff-line-positions häufig änderst. In wie weit stretchability betroffen ist bzw angepasst werden muss habe ich nicht getestet.
Erst wenn Du Dich allein auf padding verläßt werden die übrstehenden Taktstriche ein Problem, aber das kann man ja mit meinem workaround
https://lilypondforum.de/index.php/topic,87.msg533.html#msg533
regeln. Die Werte muß man natürlich anpassen.

Führt zu:


workAround =
\once \override Staff.BarLine.before-line-breaking =
  #(lambda (grob)
    (if (eqv? LEFT (ly:item-break-dir grob))
        (begin
          (ly:grob-set-property! grob 'bar-extent '(-5 . -1))
          (ly:grob-set-property! grob 'Y-extent '(-5 . -1))   
          (ly:grob-set-property! grob 'Y-offset 3)
          )))

\version "2.19.52"
\language "nederlands"

\header {
  tagline = ##f
}

\paper {
  indent = 0
  line-width = 20
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 2)
       (stretchability . 0))
  annotate-spacing = ##t
}
\score{
  <<
    \new Staff \with {\remove "Time_signature_engraver"
           \override StaffSymbol.line-positions = #'(-4 -2 0 2 4)}
    \new Voice { e'1 \break
    \workAround
    \stopStaff
        \override Staff.StaffSymbol.line-positions = #'(-14 -12 -10 -8 -6 -4 -2 0 2)
    \startStaff
    c'1 \break
    %% TODO
    %% \workaround with other values
    %% turn workaround into a music-function
    \stopStaff
        \override Staff.StaffSymbol.line-positions = #'(-6 -4 -2 0 2)
    \startStaff
    c'1}
  >>
}



Gruß,
  Harm

erich

Danke Harm,

ich werde das Morgen in aller Ruhe versuchen nachzuvollziehen; nur soviel:
der Abstand von der untersten Linie des unteren Systems bis zum unteren Ende des rechten Taktstriches des mittleren Systems
ist genau so groß
wie der Abstand der untersten Linie des mittleren Systems bis zum unteren Ende des rechten Taktstriches des oberen Systems.

Ich hatte es extra ausgedruckt; Du meinst aber: Künstlerpech

Gruß
Erich


erich

#3
Hallo Harm,

nochmals zur Verdeutlichung:

Zitat
Tatsächlich ist basic-distance das Problem. Denn diese Abstands-Variable mißt sich von der 0-Line des einen zur 0-Linie des anderen Sýstems.

Wenn man den unteren Endpunkt des rechten (falsch gesetzten) Taktstichs als 0-Linie nimmt, sind die Abstände der Systeme äquidistant! Das muss einen doch stutzig machen.

Das Ausschalten des Engravers verhindert zwar eine Ausgabe, muss aber nicht zur Nichteinbeziehung in die Berechnung der 0-Linie führen. Sein Ausschalten führt auch nicht zu einer geänderten Ausgabe bis auf den unterdrückten Taktstrich, der aber gerade zur Analyse wichtig zu sein scheint

Grüß Dich freundlich
Erich

harm6

Hallo Erich,

(1) Die 0-Linie eines Staffs ist dort wo das 'line-positions-property den Wert 0 hat!

Schau Dir die Ausgabe folgenden Codes an

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Bar_engraver"
    \remove "Time_signature_engraver"
    \remove "Clef_engraver"
    \consists \color-staff-engraver
  }
  \context {
  \Score
  \remove "Bar_number_engraver"
  }
}

\bookpart {
  \score {
      \new Staff {
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-2 0 2 4 6 8 10 12 14)
        \startStaff
        s1
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        s
      }
  }

\markup \vspace #10
 
  \score {
      \new Staff {
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        s1
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-2 0 2 4 6 8 10 12 14)
        \startStaff
        s
      }
  }
}


Achte auf
2.10 extra dist (system-system-spacing)
beim ersten Score und
14.10 extra dist (system-system-spacing)
beim zweiten Score, sowie von wo bis wo der entsprechende Pfeil geht!
("extra dist" ist ein Wert den LilyPond errechnet und setzt um Kollisionen zu vermeiden, Du kannst ihn nicht selber setzen)

Weitere Anmerkungen zum Code:
Alle Abstandsvariablen sind auf null gesetzt.
Der engraver dient nur dazu die Staffs unterschiedlich einzufärben, damit man sie noch vernünftig unterscheiden kann, wenn sie dicht gepackt liegen.
annotate-spacing und debug-skylines ist aktiviert.
Beide Staffs haben gleiche Anzahl an Linien, doch unterschiedliche 'line-positions.

(2) Bei Enfernung des Bar_engravers wird der falsche Taktstrich nicht in die Abstandsberechnungen einbezogen.

Siehe:

workAround =
#(define-music-function (ls)(list?)
#{
\once \override Staff.BarLine.before-line-breaking =
  #(lambda (grob)
    (if (eqv? LEFT (ly:item-break-dir grob))
        (begin
          (ly:grob-set-property! grob 'bar-extent (car ls))
          (ly:grob-set-property! grob 'Y-extent (car ls))   
          (ly:grob-set-property! grob 'Y-offset (cadr ls))
          )))
#})

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \remove "Clef_engraver"
    \consists \color-staff-engraver
  }
  \context {
  \Score
  \remove "Bar_number_engraver"
  }
}


\bookpart {
  \score {
      \new Staff {
        s1
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        s
      }
  }

  \markup \vspace #10
 
  \score {
      \new Staff {
        s1
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        s
      }
     \layout {
       \context {
         \Staff
         \remove "Bar_engraver"
       }
     }
  }
 
  \markup \vspace #10
 
  \score {
      \new Staff {
        s1
        \break
        \workAround #'((-5 . -1) 3)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        s
      }
  }
}


Im ersten score ist der falsche Taktstrich da, somit ändert sich die skyline.
Im zweiten ist der Bar_engraver entfernt und schon liegen die Staffs wieder dicht gepackt.

Wenn man den Taktstrich korrigiert, liegen sie auch wieder dicht gepackt. Dritter score

(3) Unterschiedliche Anzahl an Linien pro Staff führen zu einem uneinheitlichen spacing, wenn man sich auf minimum-distance oder basic-distance verläßt. Insbesondere wenn die Zahl der Linien pro Staff ansteigt und die 0-Linie nicht in der Mitte liegt
Siehe:

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
  system-system-spacing =
    #'((basic-distance . 6) ;; <-----------------
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \remove "Clef_engraver"
    \consists \color-staff-engraver
  }
  \context {
  \Score
  \remove "Bar_number_engraver"
  }
}


\bookpart {
  \score {
      \new Staff \with {
        \override StaffSymbol.line-positions =
          #'(0 2)
      }
      {
        s1
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8 10)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8 10 12)
        \startStaff
        s
      }
      \layout {
        \context {
          \Staff
          \remove "Bar_engraver"
        }
      }
  }
}


(4) Nur padding zu verwenden regelt das.


#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 6) ;; <-----------------
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \remove "Clef_engraver"
    \consists \color-staff-engraver
  }
  \context {
  \Score
  \remove "Bar_number_engraver"
  }
}


\bookpart {
  \score {
      \new Staff \with {
        \override StaffSymbol.line-positions =
          #'(0 2)
      }
      {
        s1
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8 10)
        \startStaff
        s
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8 10 12)
        \startStaff
        s
      }
      \layout {
        \context {
          \Staff
          \remove "Bar_engraver"
        }
      }
  }
}



Wenn man den Bar_engraver wieder reinnimmt muß man natürlich alle Taktstriche am Zeilenende korrigieren, falls die Staff.line-positions verändert werden. Führt zu


workAround =
#(define-music-function (ls)(list?)
#{
\once \override Staff.BarLine.before-line-breaking =
  #(lambda (grob)
    (if (eqv? LEFT (ly:item-break-dir grob))
        (begin
          (ly:grob-set-property! grob 'bar-extent (car ls))
          (ly:grob-set-property! grob 'Y-extent (car ls))   
          (ly:grob-set-property! grob 'Y-offset (cadr ls))
          )))
#})

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 6) ;; <-----------------
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \remove "Clef_engraver"
    \consists \color-staff-engraver
  }
  \context {
  \Score
  \remove "Bar_number_engraver"
  }
}


\bookpart {
  \score {
      \new Staff \with {
        \override StaffSymbol.line-positions =
          #'(0 2)
      }
      {
        s1
        \break
        \workAround #'((0 . 1) 0)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4)
        \startStaff
        s
        \break
        \workAround #'((0 . 2) 0)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6)
        \startStaff
        s
        \break
        \workAround #'((0 . 3) 0)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8)
        \startStaff
        s
        \break
        \workAround #'((0 . 4) 0)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8 10)
        \startStaff
        s
        \break
        \workAround #'((0 . 5) 0)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4 6 8 10 12)
        \startStaff
        s
      }
  }
}


Anmerkung:
Falls Wiederholungszeichen als Taktstriche verwendet werden, kann \workaround allerdings die Position der Punkte zueinander nicht beeinflussen.
Um das Problem zu sehen füge \bar ":|.|:" bei jedem \break ein.

(5) Probleme mit padding
Sich allein auf padding zu beschränken birgt aber auch Probleme.
Siehe:

workAround =
#(define-music-function (ls)(list?)
#{
\once \override Staff.BarLine.before-line-breaking =
  #(lambda (grob)
    (if (eqv? LEFT (ly:item-break-dir grob))
        (begin
          (ly:grob-set-property! grob 'bar-extent (car ls))
          (ly:grob-set-property! grob 'Y-extent (car ls))   
          (ly:grob-set-property! grob 'Y-offset (cadr ls))
          )))
#})

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 6) ;; <-----------------
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \remove "Clef_engraver"
    \consists \color-staff-engraver
  }
}


\bookpart {
  \score {
      \new Staff \with {
        \override StaffSymbol.line-positions =
          #'(0 2)
      }
      {
        s2 c
        \break
        \workAround #'((0 . 1) 0)
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(0 2 4)
        \startStaff
        s c''''
      }
  }
}


Die beiden Staves sind unnötig weit von einander entfernt da padding das padding zwischen den skylines ist.

(6) Lösungsversuche
Ich hab auch mal damit rumexperimentiert anstatt line-positions nur line-count zu verwenden.
Das führt zwar zu leicht besseren Ergebnissen, überzeugend sind sie aber nicht. Auch muß man sich dann um middleCPosition und clefPosition kümmern.
Scheint also nicht der Weg zu sein.

Was nötig ist wäre eine Abstandsvariable die von unterster Linie des einen zur obersten Linie des neuen Staffs mißt, haben wir aber nicht...

Allerdings gib es dank David Nalesnik seit neuerem die Möglichkeit ein 'extra-offset in NonMusicalPaperColumn.line-break-system-details zu setzen.
Führt zu (Dein originales Beispiel):

\version "2.19.64"

workAround =
#(define-music-function (ls)(list?)
#{
\once \override Staff.BarLine.before-line-breaking =
  #(lambda (grob)
    (if (eqv? LEFT (ly:item-break-dir grob))
        (begin
          (ly:grob-set-property! grob 'bar-extent (car ls))
          (ly:grob-set-property! grob 'Y-extent (car ls))   
          (ly:grob-set-property! grob 'Y-offset (cadr ls))
          )))
#})

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
%  system-system-spacing.basic-distance = 4
  system-system-spacing =
    #'((basic-distance . 14)
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \consists \color-staff-engraver
  }
}

\bookpart {
  \score{
    <<
      \new Staff
      \new Voice {
        c'1
        \workAround #'((-5 . -1) 3)
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        c'1
        \workAround #'((-5 . 3) -2)
        \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((extra-offset . (0 . 5)))
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-6 -4 -2 0 2)
        \startStaff
        c'1
      }
    >>
  }
}


Du wirst jedoch feststellen, daß es mühsam ist die Werte dafür herauszufinden. Obendrein ist es ein echtes extra-offset mit all den Nachteilen, die extra-offset nun mal mit sich bringt.
Da frag ich mich, ob es nicht weniger Ärger mit sich bringt das vertikale spacing komplett manuell zu regeln. (Jedoch nicht weniger Arbeit ...)
Führt dann zu:

workAround =
#(define-music-function (ls)(list?)
#{
\once \override Staff.BarLine.before-line-breaking =
  #(lambda (grob)
    (if (eqv? LEFT (ly:item-break-dir grob))
        (begin
          (ly:grob-set-property! grob 'bar-extent (car ls))
          (ly:grob-set-property! grob 'Y-extent (car ls))   
          (ly:grob-set-property! grob 'Y-offset (cadr ls))
          )))
#})

#(define (color-staff-engraver context)
   (let ((colors (circular-list red green))
         (counter 0))
     (make-engraver
      (acknowledgers
       ((staff-symbol-interface engraver grob source-engraver)
        (ly:grob-set-property! grob 'color (list-ref colors counter))
        (set! counter (1+ counter)))))))

#(ly:set-option 'debug-skylines #t)

\paper {
  indent = 0
%  system-system-spacing.basic-distance = 4
  system-system-spacing =
    #'((basic-distance . 14)
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
  annotate-spacing = ##t
}

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \consists \color-staff-engraver
  }
}

\bookpart {
  \score{
    <<
      \new Staff
      \new Voice {
        c'1
        \workAround #'((-5 . -1) 3)
        \break
        \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 20))
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-14 -12 -10 -8 -6 -4 -2 0 2)
        \startStaff
        c'1
        \workAround #'((-5 . 3) -2)
        \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 44))
        \break
        \stopStaff
        \override Staff.StaffSymbol.line-positions =
          #'(-6 -4 -2 0 2)
        \startStaff
        c'1
      }
    >>
  }
}


Schlußbemerkung.
Jedes einzelne der obigen Code-Beispiele ist nach "auswählen" kompilierbar. Führt zu ziemlich viel Code, aber ist wahrscheinich trotzdem bequemer.

Das Problem mit den Taktstrichen und dem spacing bei zeilenweise veränderte Anzahl/Position der Notenlinien ist wahrscheinlich bei Implementierung der spacing-Machinerie nicht bedacht worden bzw was die Taktstriche angeht ein bug.
Insoweit muß man ziemlich rotieren um zu überzeugenden Ergebnissen zu kommen.


HTH,
  Harm

erich

Hallo Harm,

danke für die viele, viele Mühe. Ich werde wohl teilweise auf eine vollständige automatische Übersetzung verzichten.

Mein Ziel ist es, eine SVG-Datei zu erzeugen, die ich in eine HTML-Seite einbinden kann, und so den fortlaufenden Notentext beim Abspielen der zugehörigen Audio-Datei verfolgen zu können.

So wie die Sache steht, kann ich trotz Bug zunächst eine zeilenweise Formatierung erzeugen; von dieser ausgehend, kann ich jede Zeile in ein score umformen.

Die scores kann ich dann getrennt durch \markup \vspace #x aneinanderhängen

Bei diesem Vorgehen werden die Notenzeilen unterschiedlich lang, man erhält quasi einen Flattersatz

Das Ergebnis habe ich unterschiedlich
https://meyerich.pythonanywhere.com/Op47_Sengstschmid
veröffentlicht
Gruß
Erich

harm6

Zitat
So wie die Sache steht, kann ich trotz Bug zunächst eine zeilenweise Formatierung erzeugen; von dieser ausgehend, kann ich jede Zeile in ein score umformen.

Die scores kann ich dann getrennt durch \markup \vspace #x aneinanderhängen

Bei diesem Vorgehen werden die Notenzeilen unterschiedlich lang, man erhält quasi einen Flattersatz

Hmm, ohne Deinen code zu kennen fällt mir ein, daß Du für jeden score ragged-right = ##f setzen könntest.

Vielleicht auch von Interesse:

http://lilypond.1069038.n5.nabble.com/Video-generation-on-linux-systems-Note-and-rests-change-color-tt204566.html


Eine Implementierung in LilyPond selbst bezweifle ich, nach Lektüre dieser Diskussion:

https://sourceforge.net/p/testlilyissues/issues/5162/


Gruß,
  Harm

erich

Danke Harm

ragged-right = ##f

das ist genau das, was noch fehlte!

Gruß
Erich