Musicxml Batch-Import

Begonnen von Hilflos-im-Code, Dienstag, 22. Dezember 2020, 09:49

« vorheriges - nächstes »

Hilflos-im-Code

Ich will mehrere xml-Dateien in einer Stapelverarbeitung importieren. Normalerweise importiere ich einzelne xml-Dateien mit Frescobaldi. Wegen der sich etablierten Nachbearbeitung mit Makros, würde ich die gleichen Optionen wie in Frescobaldi nutzen.

Gefunden habe ich:

http://lilypond.org/doc/v2.19/Documentation/usage/invoking-musicxml2ly

Bloß ich werde nicht ganz schlau, wie ich die angebotenen von Frescobaldi angebotenen Optionen nachbaue.

1. Frescobaldi-Option: "Die Position der Pausen importieren"

Scheint es aber der Dokumentation entsprechend nicht zu geben. Wie ginge das?

2. Frescobaldi-Option: "Balken importieren"

Ich muss --no-beaming weglassen und dann wird die Balkensetzung aus der XML-Datei berücksichtigt?


Das nächste Problem ist, wie spreche ich unter Windows 10 musicxml2ly an. Denn

G:\Stoeberband\Export>C:\"Program Files (x86)"\LilyPond-midi\usr\bin\musicxml2ly G:\Stoeberband\Export\a.musicxml

ergibt als Fehlermeldung
File "C:\Program Files (x86)\LilyPond-midi\usr\bin\musicxml2ly.py", line 2105
    if current_staff and staff <> current_staff and not n.get_maybe_exist_named_child ('chord'):
                                ^
SyntaxError: invalid syntax


Das liefert auch "G:\Stoeberband\Export>C:\"Program Files (x86)"\LilyPond-midi\usr\bin\musicxml2ly -h". Das sollte aber eigentlich die Hilfe aufrufen.

Hilflos-im-Code

Hier sind  ungefähr 80% der Antwort. Ich musste eingeben:

python.exe "C:\Program Files (x86)\LilyPond-midi\usr\bin\musicxml2ly.py"  "Joseph Kaspar Mertz Laendler D-Dur".musicxml

Die Anführungszeichen braucht es, damit die Leerzeichen nicht stören.

Ich habe aber nicht geschafft, mit wildcard zu arbeiten. Also mit *.musicxml zu arbeiten.

samarutuk

Zu den 80% habe ich weitere 18,25% der Antwort beizusteuern ;)
Die Frage, wie ich wohl alle musicXML-Dateien in einem Verzeichnis auf einmal in LilyPond-Dateien umwandeln kann, hat mich hierhergeführt.
Ich habe deinen 80%-Teil der Lösung genommen und ihn mit der Lösung zu einem anderen Stapelverarbeitungs/Batchproblem kombiniert.
Der folgende Code steht in einer Batch-Datei, die sich in dem Verzeichnis der Dateien befindet, die es umzuwandeln gilt. Bis auf "--
output" habe ich keine weiteren Parameter für musicxml2ly verwendet:

for %%a in ("*.xml") do python.exe C:\PROGRA~2\LilyPond\usr\bin\musicxml2ly.py "%%a" --output="%%~na.ly"
pause


(Wenn man wie oben die kurzen, alten achtstelligen Verzeichnisnamen, also "Progra~2" statt "Program Files (x86)", wählt, braucht man keine Anführungszeichen, ansonsten müssen sie natürlich hin)

Das hat bei mir geklappt, auch wenn die erzeugten Dateien nicht ganz so aussahen wie beim Frescobaldi-Import. Dessen Standardparameter hätte ich auch gerne, das wären dann für mich die letzten Prozente :)

Ach so, wer das nicht weiß: um aus dem Code eine Batch-Datei zu machen, geht man im Windows-Explorer in das Verzeichnis mit den umzuwandelnden Dateien. Dort erstellt man über das Kontextmenü des Explorers (Rechtsklick) über "Neu" und "Textdokument" eine leere Textdatei. Diese öffnet man danach per Doppelklick, fügt den obigen Code ein und speichert und schließt die Datei. Jetzt muss man diese Textdatei noch übers Kontextmenü oder über die Taste F2 umbenennen und die Dateiendung "txt" mit "bat" ersetzen (den Namen der Datei selbst kann man natürlich auch anpassen). Man hat nun eine Batch-Datei, die man per Doppelklick oder Kommandozeile (Eingabeaufforderung/CMD nicht PowerShell) ausführen kann.

Hilflos-im-Code

Ja danke. Ich musste bei mir phyton aus dem Code streichen, dann ging es.