Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: l3u am Mittwoch, 5. Oktober 2022, 10:50

Titel: Neuere Versionen von Lilypond und \version
Beitrag von: l3u am Mittwoch, 5. Oktober 2022, 10:50
Hallo allerseits!

Ich habe kürzlich nach einiger Zeit versucht, ältere Noten neu zu übersetzen. Das klappt aber nicht mehr, da sich offensichtlich teilweise die Syntax geändert hat. Ich bekomme Fehlermeldungen wie z. B.:
GNU LilyPond 2.22.0
Processing `Klarinette 1 in B.ly'
Parsing...WARNING: (#{ g170}#): imported module (#{ g160}#) overrides core binding `version'

Klarinette 1 in B.ly:7:31: error: syntax error, unexpected SCM_TOKEN, expecting '.' or '='
        markup-system-spacing
                              #'padding = #'3
Klarinetten in B.ly:6:9: error: unknown escaped string: `\compressFullBarRests'

        \compressFullBarRests
Klarinetten in B.ly:6:9: error: string outside of text script or \lyricmode

        \compressFullBarRests
Interpreting music...[8][16][24][32][40][48][56]
Klarinetten in B.ly:30:72: warning: barcheck failed at: 1/4
\mark \markup { \large \bold "Trio" } b4 \ff r r2 r1 \repeat volta 2 {
                                                                       R1 * 2 f8 r f r f r f r b4 r8 f f4 r R1 * 2 f8 r f r f r f r a4 r8 f f4 r R1 * 2 f8 r f r f r f r
[64][72][80][88][96][104]
Preprocessing graphical objects...
Finding the ideal number of pages...
Fitting music on 1 or 2 pages...
Drawing systems...
Converting to `Klarinette 1 in B.pdf'...
fatal error: failed files: "Klarinette 1 in B.ly"
Jetzt ist doch eigentlich die \version-Angabe dafür gedacht, dass ältere Quelltext auch weiterhin gebaut werden können, oder? Im Fall des hier zitierten Beispiels wäre das \version "2.14.2".

Deswegen meine Frage: Mache ich was verkehrt? Und wenn nicht: Wozu dient die \version-Angabe, wenn die dann doch nicht für Kompatibilität sorgt?!
Titel: Antw:Neuere Versionen von Lilypond und \version
Beitrag von: amateur am Mittwoch, 5. Oktober 2022, 11:14
Versuch's mal mit convert-ly
https://lilypond.org/doc/v2.23/Documentation/usage/updating-files-with-convert_002dly
Titel: Antw:Neuere Versionen von Lilypond und \version
Beitrag von: harm6 am Mittwoch, 5. Oktober 2022, 11:25
Die \version dient primär dazu, daß convert-ly weiß ab welcher Version die Syntax gemäß den convert-rules anzupassen ist.
Hast Du konvertiert? I.e.
    convert-ly -e file.ly
Falls nicht dann hol's nach.

Allerdings gibt es manches was nicht von convert-rules abgedeckt ist bzw abgedeckt werden kann. Da muß man dann manuell eingreifen.
Es kann sein, daß das alte
    markup-system-spacing #'padding = #'3
dazu gehört. Das muß jetzt
    markup-system-spacing.padding = #'3
heißen.

\compressFullBarRests sollte aber problemlos konvertiert werden.

Woher
WARNING: (#{ g170}#): imported module (#{ g160}#) overrides core binding `version'
kommt, kann ich momentan nicht sagen. Falls es nach dem konvertieren noch da ist, melde Dich nochmal.


Ansonsten gibt es Programme wie Frescobaldi, die die \version nutzen, um mit dieser Version dann das file zu kompilieren. Natürlich nur, wenn eben diese Version auch zur Verfügung steht.


Gruß,
  Harm
Titel: Antw:Neuere Versionen von Lilypond und \version
Beitrag von: l3u am Mittwoch, 5. Oktober 2022, 13:48
convert-ly kannte ich noch gar nicht! Das ist äußerst nützlich, vielen Dank für den Hinweis!

Das mit der Fehlermeldung könnte daran liegen, dass ich die Notenblätter wie C/C++-Dateien aufgebaut habe, mit z. B. einer gemeinsamen Header-Datei für alle Stimmen, die dann via \include eingebunden wird. Das selbe mache ich auch z. B. mit verschiedenen Markup-Helfer-Befehlen, die sich dann alle Stücke teilen.