Export nach musicXML

Begonnen von gaerchle, Dienstag, 4. April 2023, 15:42

« vorheriges - nächstes »

gaerchle

Liebe Lilypond-Freunde,

ich würde gerne meine Dateien nach musicXML exportieren.
Importieren geht ja. Aber geht es auch andersrum?
Und bevor mich einer wieder "haut": Ich habe vorher im Forum gesucht, aber zu diesem Thema nichts gefunden.

Viele Grüße
Gaerchle

harm6

Hallo,

LilyPond besitzt keine Möglichkeit nach musicxml zu exportieren.
Meiner bescheidenen Ansicht nach ihr größtes Manko.

Allerdings habe ich den Eindruck, daß diese meine Ansicht von Entwicklerseite her nicht wirklich geteilt wird. Natürlich ist es eine Mammutaufgabe so etwas zu schreiben (ich hab mal irgendwo gelesen, daß ein halbes Jahr Arbeit zu erwarten ist) und natürlich ist man zu Recht stolz auf das bereits Erreichte und es bindet natürlich Arbeitskraft diesen Standard nicht nur zu erhalten sondern noch zu verbessern...
Es gibt zwar scm/to-xml.scm und input/regression/to-xml.ly aber dort sind nur ganz fundamentale Anfänge niedergelegt. Außerdem ist dort seit ca 20 Jahren nichts wesentliches dazu gekommen.

Von core-LilyPond abgesehen hat sich Jaap de Wolff dran gesetzt auf diesem Weg weiter zu gehen:
https://github.com/de-wolff/lilypond.git
Allerdings ist da seit drei Jahren auch nichts mehr passiert, und sein code dürfte nicht mehr ohne Anpassungen mit neueren lily-Versionen kompatibel sein.
Ich selbst habe diesen code mal für 2.21. fit gemacht und benutzt, insoweit denke ich wird es auch für 2.24. machbar sein. Allerdings gibt es durchaus Einschränkungen (siehe das dortige README.musicxml) und bei komplexerer Musik war es nicht brauchbar, wenn ich mich recht erinnere.
Aber im Prinzip ist der dortige Ansatz der Weg wie man ein ly2musicxml implementieren könnte.
Vielleicht hat ja jemand Lust da weiter zu machen.

Frescobaldi hat experimentellen musicxml-Export:
File -> Import/Export -> Export MusicXML ...
Meiner Erfahrung nach ist aber auch damit keine komplexere Musik zu musicxml exportierbar.
Intern verwendet frescobaldi python-ly. Das halte ich aber grundsätzlich für den falschen Weg.
Schon ein file wie
\include "my-music-variable.ly"
\new Staff \my-music-variable
wird scheitern, wenn nicht nachgeschaut wird, was my-music-variable.ly wohl enthält.
Ein bloßes umschreiben des files, wie zum Beispiel bei convert-ly oder eben auch bei musicxml2ly wird nicht reichen.
Meiner Ansicht nach kann man also nicht am Anfang ansetzen, d.h. das input-file umschreiben, sondern muß vom Ende her arbeiten, d.h. welche events passieren wann und wie und wie packt man sie in musicxml-Syntax.
Inwieweit zusätzliche Elemente wie zum Beispiel \header bearbeitet werden könnten habe ich noch nicht mal angedacht ...


Tut mir leid nicht von größerem Nutzen zu sein.
Momentan würde ich an Deiner Stelle und wenn Deine file nicht sonderlich komplex sind frescobaldi versuchen.
Eventuell kannst Du auch ein LilyPond-midi nehmen, mit musescore öffnen und von dort nach musicxml exportieren. Geht aber auch nicht so besonders...


Gruß,
  Harm


Arnold

Hallo Gaerchle,

ich habe in der Vergangenheit ein einziges Mal probiert, aus Lilypond eine MusicXML zu erstellen:
  • mit Hilfe von »event-listener.ly« jeden Staff in eine Datei exportiert
  • mit einer eigenen Nachbearbeitungsroutine ein MusicXML daraus zusammengestellt
Da der Schwerpunkt nicht der Notensatz war, sondern die MIDI-Abspielfähigkeit, habe ich:
  • keine Balkensetzung für Achtel und kürzer exportiert
  • alle Triolen ohne Triolenklammer, nur als »skalierte Notendauer« exportiert
  • Mehrtaktpausen und über den Taktstrich gehaltene Noten mußte ich nacharbeiten
Das Ergebnis wieder nach Lilypond konvertiert war zufriedenstellend.
Später einen fremden MusicXML-Viewer ausprobiert, waren die Triolen zerschossen (d. h. dieses Programm konnte keine skalierten Notendauern verarbeiten).
(Und der Anwender, welcher mich nach dem MusicXML fragte, hat nie mehr nach einem weiteren MusicXML nachgefragt)

Ergo, es scheint mit MusicXML so ähnlich zu sein wie im CAD-Umfeld mit den IGES-Dateien: Einen Inhalt korrekt auszuleiten und in das Ursprungsprogramm wieder importieren zu können bedeutet noch lange nicht, daß alle anderen Programme diesen Inhalt fehlerfrei einlesen können, da oft nur eine Teilmenge aller Funktionen in den Schnittstellen implementiert wurde, und wenn mehr als die gemeinsame Schnittmenge benutzt wird, »schaut man halt in die Röhre«. (Noch schlimmer wird's, wenn die Programmierer die Schnittstellenbeschreibung unterschiedlich und inkompatibel zueinander interpretieren.)

Arnold

gaerchle

Danke für Eure ausführlichen Antworten.
Ich habe mir sowas schon gedacht. Ich möchte bei einem Verlag eine Bearbeitung einreichen und da kann man leider keine .ly Dateien hinschicken, was ich sehr sehr schade finde. Ich bin nach wie vor absolut begeistert vom optischen Endergebnis bei Lilypond. Manches ist ein wenig aufwändig nachzuarbeiten - Bögenpositionen etc. - aber dann ist es immer top.