LilyPond in TikZ/pgf ?

Begonnen von Cattleya, Freitag, 9. Juli 2021, 19:11

« vorheriges - nächstes »

Cattleya

LilyPond ist eine Beschreibungssprache für den Satz von Noten.

TikZ/pgf sind sehr ausgefeilte LaTeX-Pakete für Zeichnungen/Bilder.

Meine Fragen:

Ist es denkbar, LilyPond in TikZ/pgf zu implementieren? (Mir ist klar, das wäre ein Großprojekt für mehrere Jahre...)

Gibt es einen gut dokumentierten und gut kommentierten Quelltext zu LilyPond anhand dessen man lernen kann, wie das Programm implementiert ist und funktioniert?

Rudi Guggt

Hallo,

die Idee, Lilypond in LaTeX einzubinden, ist nicht neu. Mit diesen beiden Stichworten eine SuMa zu füttern, sollte reichlich Beispiele zu Tage fördern, z.B. http://lilypond.org/doc/v2.18/Documentation/usage/latex.de.html.

Willst du die beiden Programme einfach nutzen oder planst du eine neue Radaufhängung zu erfinden?

Gruß
Rudi

Cattleya

Zitat von: Rudi Guggt am Samstag, 10. Juli 2021, 09:53
Hallo,

die Idee, Lilypond in LaTeX einzubinden, ist nicht neu. Mit diesen beiden Stichworten eine SuMa zu füttern, sollte reichlich Beispiele zu Tage fördern, z.B. http://lilypond.org/doc/v2.18/Documentation/usage/latex.de.html.

Willst du die beiden Programme einfach nutzen oder planst du eine neue Radaufhängung zu erfinden?

Gruß
Rudi

Der übliche Workflow ist:

Die .lytex-Quelltext-Datei wird vom Programm LilyPond-book verarbeitet.
Das Programm LilyPond-book sucht die .lytex-Quelltext-Datei auf Umgebungen \begin{lilypond}..\end{lilypond} ab und reicht den Inhalt dieser Umgebungen jeweils an das Programm LilyPond weeiter, welches Grafikdateien/.pdf-Dateien/.eps-Dateien mit dem entsprechenden Musiksatz erstellt.
Das Programm LilyPond-book kopiert außerdem die .lytex-Quelltext-Datei in eine Datei mit der Endung .tex und ersetzt dabei die \begin{lilypond}..\end{lilypond}-Umgebungen durch LaTeX-Befehle, um die entsprechende Grafikdatei einzufügen.
Die Datei mit der Endung .tex kann mit dem pdfLaTeX-compiler compiliert werden, wodurch dann eine .pdf-Datei mit dem gewünschten Endresultat entsteht, welche sowohl den Text des Dokuments als auch die gesetzten Musiknoten enthält.

Ich plane im Moment noch gar nichts, aber ich denke über folgendes nach:

Es gibt die LaTeX-Pakete TikZ und PGF. Mittels derer kann man direkt in der .tex-Datei/direkt im LaTeX-Quelltext ausgefeilteste Grafiken/Bilder etc beschreiben.  Wenn man TikZ/PGF dazu bringen könnte, auch die LilyPond-Sprache zu verstehen und den entsprechenden Notensatz "hinzumalen", dann bräuchte man die Programme LilyPond-book und LilyPond gar nicht mehr aufrufen, sondern der pdfLaTeX-Compiler könnte beim Compilieren der .tex-Datei unter Verwendung der Pakete TikZ und PGF und dem, was dazu führt, dass TikZ/PGF auch die LilyPond-Sprache versteht, die Noten selbst direkt in die .pdf-Datei mit dem gewünschten Endresultat "hineinpinseln".

Da ich nicht genug darüber weiss, wie LilyPond funktioniert, kann ich nicht beurteilen, ob es Aspekte gibt, die dieser Idee schon von irgendwelchen Grundsätzlichkeiten her im Wege stehen.

Deshalb meine Fragen, diesmal etwas präziser formuliert:

Ist es denkbar, die LilyPond-Sprache in TikZ/PGF zu implementieren? (Mir ist klar, das wäre ein Großprojekt für mehrere Jahre... Es dürfte unter anderem auch darauf hinauslaufen, TikZ/PGF Aspekte der Programmiersprache Scheme beizubringen...)

Gibt es einen gut dokumentierten und gut kommentierten Quelltext zu LilyPond anhand dessen man lernen kann, wie das Programm implementiert ist und funktioniert und wie die "Sprachregeln" genau sind?

Rudi Guggt

Hallo

ZitatEs gibt die LaTeX-Pakete TikZ und PGF. Mittels derer kann man direkt in der .tex-Datei/direkt im LaTeX-Quelltext ausgefeilteste Grafiken/Bilder etc beschreiben.  Wenn man TikZ/PGF dazu bringen könnte, auch die LilyPond-Sprache zu verstehen und den entsprechenden Notensatz "hinzumalen", dann bräuchte man die Programme LilyPond-book und LilyPond gar nicht mehr aufrufen, sondern der pdfLaTeX-Compiler könnte beim Compilieren der .tex-Datei unter Verwendung der Pakete TikZ und PGF und dem, was dazu führt, dass TikZ/PGF auch die LilyPond-Sprache versteht, die Noten selbst direkt in die .pdf-Datei mit dem gewünschten Endresultat "hineinpinseln".

Man bräuchte dann Lilypond nicht mehr, stattdessen dann aber TikZ und PGF.
Welches Problem möchtest du durch so einen Tausch lösen und wieviele durch so eine Neuentwicklung dazugewinnen?

Ich hatte bisher noch keinen Bedarf Lilypond in LaTeX zu verwenden. Erzähl mal, wo ist der Haken?

Gruß
Rudi

Cattleya

Zitat von: Rudi Guggt am Samstag, 10. Juli 2021, 22:25

Man bräuchte dann Lilypond nicht mehr, stattdessen dann aber TikZ und PGF.
Welches Problem möchtest du durch so einen Tausch lösen und wieviele durch so eine Neuentwicklung dazugewinnen?

Ich hatte bisher noch keinen Bedarf Lilypond in LaTeX zu verwenden. Erzähl mal, wo ist der Haken?

Einer der Haken ist, dass das Programm LilyPond-book für jede \begin{lilypond}..\end{lilypond}-Umgebung, also für jede Stelle im Dokument, die Notensatz enthält, einen Haufen Hilfsdateien und Unterverzeichnisse und Grafikdateien etc anlegt, die es mit einer zB auf TikZ/PGF-basierenden Lösung nicht unbedingt bräuchte.
Wenn man mehrere \begin{lilypond}..\end{lilypond}-Umgebungen im Dokument hat und LilyPond-book ein paarmal drüberlaufen lässt, sammelt sich recht schnell recht viel Müll an, und beim Aufräumen/Löschen löscht man schnell mal versehentlich etwas, was man noch bräuchte.

Außerdem bräuchte man LilyPond-book und LilyPond nicht als eigenständig laufende Computerprogramme, da alles innerhalb von (La)TeX ablaufen würde (TikZ/PGF sind im Prinzip nur Makrosammlungen für TeX/LaTeX), sodass man \begin{lilypond}..\end{lilypond}-Umgebungen übrigens auch in LaTeX-Makros verpacken/maskieren und zB mit unterschiedlichen TeX-Makro-Parametern aufrufen könnte, was mit LilyPond-book als "Prä-Prozessor" nicht geht.

Wenn LilyPond nicht als compiliertes eigenständig ausführbares Programm vorliegen würde, sondern als Makrosammlung für LaTeX/TikZ/PGF, dann hätte man statt einer compilierten ausführbaren Binärdatei den Quelltext vorliegen und wäre bei der Entwicklung eigener/neuer Features nicht auf einen Compiler und Make- und Build-Maschinerie angewiesen. Unter Linux ist das kein nennenswerter Vorteil, aber unter Windows-Plattformen, wo diverse Compiler Geld kosten, vielleicht schon.

Was man auch nicht mehr bräuchte, wäre die von LilyPond-book angeworfene, nicht immer hundertprozentig korrekt funktionierende  Maschinerie, die dazu dient, herauszufinden, wie breit der Text möglicherweise werden wird, den der LaTeX-Compiler nachher setzt.

Auch die Entscheidung von LilyPond-book, für welche \begin{lilypond}..\end{lilypond}-Umgebungen es denn tatsächlich Musiksatz braucht und für welche nicht, zB weil sie im LaTeX-Quelltext in eine verbatim- oder listings-Umgebung eingebettet/eingeschachtelt sind und tatsächlich den Eingabetext einer \begin{lilypond}..\end{lilypond}-Umgebung darstellen sollen, ist nicht immer perfekt. Die Notwendigkeit, eine solche Entscheidung zu treffen, würde wegfallen, weil sich das eh daraus ergeben würde, dass der LaTeX-Compiler die einschachtelnde verbatim- oder listings-Umgebung als solche abarbeiten würde.

Malte

Hallo Cattleya,

kennst du lyluatex? Das braucht zwar LuaLaTeX statt pdfLaTeX, um LilyPond aufzurufen, hat dann aber keinen zusätzlichen händischen Programmaufruf und keine .lytex-Datei, sondern der LilyPond-Code kann direkt in der .tex-Datei stehen. Es ruft LilyPond auch nur dann auf, wenn sich etwas am Notentext geändert hat, spart also Zeit. Auch vom Funktionsumfang her ist es lilypond-book inzwischen deutlich überlegen, z. B. was die Übernahme der Dokumentschriftarten oder das Anpassen an die Textbreite (inklusive verschiedener Möglichkeiten zur Berücksichtigung von Instrumentennamen etc.) angeht.

Eine dritte Lösung via TikZ zu implementieren halte ich für wenig sinnvoll, gerade wenn man dafür quasi einen Scheme-Interpreter in TeX schreiben müßte (und damit noch nicht den ganzen Code übernommen hat, der in C++ geschrieben ist).

Viele neue Features kann man in Scheme implementieren, dafür braucht es dann auch unter Windows keinen Compiler. Und für den Rest gibt es die Möglichkeit, eine Linux-VM zum Kompilieren zu nutzen.

Viele Grüße
Malte

Edit: Musik in (La)TeX ist extrem kompliziert. Ich habe vor Jahren mal mit MusixTeX begonnen, bevor ich zu LilyPond gewechselt bin. MusixTeX brauchte allein für die Zeilenumbrüche mehrere Hilfsprogramme, war also eher noch komplizierter als lilypond-book und längst nicht so mächtig wie LilyPond.