https://www.gitarrenunterricht-frankfurt.de/wp-content/themes/GitarreFrankfurt/image/Logo-6a.png

Gitarrenunterricht in Frankfurt

Dipl.-Gitarrenlehrer Stephan Zitzmann

Probleme und Lösungen mit MusicXML

In einem Forum stieß ich auf einen Nutzer, der sehr konsterniert war, wie seine Sibeliusdatei in Musescore aussah. Der Übertragungsweg fand via MusicXML statt. Er wollte unbedingt wissen, was für ein Programm schuld sei?

Im konkreten Fall Sibelius. Denn der Reimport nach Sibelius zeigte sehr komische Ergebnisse.

Bloß ich halte die Frage, was für ein Programm schuld ist, für nicht zielführend. Sondern wie kann man mit diesen Konvertierungsverlusten umgehen?

Was ist MusicXML?

Ich werde diese Frage nicht vollumfänglich beantworten. Sondern die für diesen Artikel wichtigen Aspekte betrachten.

Was ist XML?

Eigentlich muss man wissen, was XML ist. XML ist eine Technik Daten zu erfassen. Für unsere Frage, man erstellt damit eine Art Datenbank.

Für bestimmte Datenarten, wie zum Beispiel Musik oder Text gibt es Vereinbarungen, wie man das tut. Damit kann man Daten zwischen verschiedenen Programmen hin und her schieben.

Das schöne an XML-Dateien man kann sie mit Texteditoren öffnen und ihren Inhalt lesen. Man braucht keine speziellen Programme. Also man kann diese Dateien selber mit den eingebauten Texteditor seines Rechners bearbeiten.

Eventuelle Probleme mit XML

Eine Vereinbarung, wie eine Datenart erfasst wird, muss nicht alle Sachverhalte erfassen. Wenn die Vereinbarung Formatierungen  nicht berücksichtigt, dann können diese nicht übertragen werden.

Man ahnt allmählich, wo das Problem liegen könnte Aber wir haben mit MusicXML quasi eine Art Datenbank für Musiknoten.

Nehmen wir zum Beispiel den Buchstaben p. Er kann in der Musik eine Dynamik darstellen oder das Fingersatzzeichen für den rechten Daumen bei der Gitarre.

Wenn die Definition von MusicXML diesen Unterschied kennt, dann kann man Fingersatz und Dynamikinformationen sauber übertragen. Wenn nicht, dann nicht.

MusicXML kennt den Unterschied. Aber warum kommt es dann zu solch einem Kladeradatsch.

Woher kommen  die Probleme bei MusicXML?

MusicXML wurde/wird weiterentwickelt. Gitarrenfingersatz war vor einigen Jahren sehr problematisch bei MusicXML. Er wurde zu normalen Text erklärt. Wie kann man den Fingersatz dann noch von musikalschen Text wie “cresc.” unterscheiden

Die Programme sind das Hauptproblem

Eigentlich machen die Programme die Probleme. Nehmen wir Capella. Capella kennt keine Extrafunktion für Fingersatzzeichen, sondern behandelt diese als Standardtext. Obwohl MusicXML eine Unterscheidung anbietet.

Also kann Capella beim Export nach MusicXML nicht zwischen Fingersatz und Spielanweisungen, die auch als Standardtext (ebenfalls in meiner doch eher alten Version) betrachtet werden, unterscheiden. Dementsprechend exportiert Capella diese Dinge nach MusicXML als normalen Text.

Das importierende Zielprogramm behandelt alle Informationen als Text und entsprechend katastrophal schaut das Ergebnis aus.

Musescore unterscheidet viele Textarten. Dementsprechend wird auch bei Export nach MusicXML unterschieden. Bloß Capella macht diese Unterschiede beim Import zunichte.

Systematische Fehler, systematische Korrektur

Ich weiß nicht, ob es dem Leser klar ist? Aber der Export in die MusicXML-Datei folgt Regeln und ebenso der Import in das Zielprogramm

Betrachten wir das Beispiel mit der Verwendung des Buchstaben „p“ als Dynamikzeichen und als Fingersatzzeichen.

Der Buchstabe „p“ wird dann im Zielprogramm immer gleich falsch dargestellt. Also muss man diesen Fehler immer auf die gleiche Art und Weise korrigieren.

Also stumpfsinnige sich in den Abläufen wiederholende Handarbeit.

Wie viel muss ich konvertieren?

Je mehr Dateien man von einem Notensatzprogramm in das andere Notensatzprogramm übertragen muss, desto sinnvoller ist es, sich nach Wegen umzusehen, die einem diese repetitive Arbeit abnehmen.

Makrorekorder

Das ist eine Methode, die ich schon lange nicht mehr verwende.

Gehen wir davon aus, ich muss jedes „p“ einzeln markieren und eine Formatierung zuweisen. Dies wäre ein guter Weg eine Sehnenscheidenentzündung zu bekommen. Also zeichnet man die Wege, die man im Programm gehen muss auf und lässt sie dann bei jedem „p“ ablaufen. Besonders schön ist, wenn man für das Abspielen ein Tastaturkommando definieren kann.

Texteditor und reguläre Ausdrücke

Der Weg lohnt sich nur, wenn es sehr viele Dateien zu konvertieren gibt. Weiter er ist nicht unbedingt von Erfolg gekrönt und er braucht eine gewisse mathematische Intelligenz.

Gehen wir davon aus, ein Notensatzprogramm hat eine MusicXML-Datei exportiert. Dieses Notensatzprogramm speichert all meine Fingersätze als Text ab. Dann wird das Zielprogramm meinen Fingersatz irgendwohin platzieren, aber nicht dort, wo er hin gehört. Die Nachkorrektur ist lästig.

MusicXML-Dateien sind mit einem normalen Texteditor lesbar.

In dem TexteditorNotepad  sieht mein Daumen-p, wenn es als Text exportiert worden ist, so aus:

Damit das Zielprogramm  es als Fingersatz erkennen kann, müsste es so aussehen:

Also man müsste im ersten Bild den grünen Bereich löschen und entsprechend abgeändert im zweiten Teil den Code einfügen.

Das könnte man händisch machen. Aber bei großen Dateien oder vielen Dateien wird das zu zeitaufwändig.

Jetzt könnte man auf die Idee kommen „Suchen und Ersetzen“ zu verwenden. Bloß da stellt sich ein Problem. Man müsste alle möglichen Töne und Notenlänge durchgehen.

Da kommen die reguläre Ausdrücke ins Spiel.

Was sind reguläre Ausdrücke?

Sie kennen vom normalen „Suchen und Ersetzen“ sie können nur eine bestimmte Zeichenkette suchen. Mit regulären Ausdrücken kann man z.B. alle dreibuchstabigen Wörter suchen, deren mittlerer Buchstabe ein „i“ ist.

Was bringt das?

Mit folgendem Suchausdruck:

      <direction placement="above">
        <direction-type>
          <words relative-y="10.00">([pima])</words>
          </direction-type>
        </direction>

finde ich alle Fingersätze für die rechte Hand.

“([pima])” ist der reguläre Suchausdruck.

Ich habe nicht den ganzen Suchausdruck hingeschrieben. Eigentlich müsste ich den Bereich zwischen „<note“ und „</note> mit suchen.

Dabei alle veränderlichen Bereiche, denn es gibt ja verschiedene Töne, mit regulären Suchausdrücken erfassen.

Ich hoffe man kann sich vorstellen, dass ich damit ziemlich viele Sachen finden kann. Aber wie soll das mit dem Umschreiben funktionieren?

Schreibe ich das Ersetzenfeld:

        <notations>
          <technical>
            <pluck>$1</pluck>
            </technical>
          </notations>

Bekomme ich bei einer Fundstelle als Ersetzung für den a-Finger:

        <notations>
          <technical>
            <pluck>a</pluck>
            </technical>
          </notations>

Bei einer Fundstelle als Ersetzung für den p-Finger:

        <notations>
          <technical>
            <pluck>p</pluck>
            </technical>
          </notations>

An der 1 von $1 im Ersetzausdruck erkennt man, dass ich die unterschiedlichen Suchausdrücke beim Ersetzen anders reihen kann und den Zwischentext frei bestimmen kann.

Damit kann man wunderbar die MusicXML-Datei vor dem Import manipulieren.

Wenn man Glück hat, speichert das Zielprogramm die Noten in einem XML-Format oder mit einem Texteditor lesbaren Format ab. Dann kann man dort auch nachträglich manipulieren.

Jetzt kommt das große Aber. Ich habe zwei sehr lange Nachmittage gebraucht, bis ich die regulären Ausdrücke für meine Konvertierung von Musescore nach Lilypond herausgefunden hatte. Verstehen der regulären Ausdrücke inbegriffen.

Aber statt wie bisher die Zieldatei eine halbe Stunde nachzubearbeiten, sinkt die Nachbearbeitungszeit auf wenige Minuten. Wenn es gut läuft sogar wenige Sekunden. Denn das Programm Notepad hat eine Makrofunktion. Ich kann alle Manipulationen mit einem einzigen Knopfdruck starten.

Teile diesen Beitrag von Gitarrenunterricht Frankfurt

Der Beitrag wurde am Freitag, den 12. Februar 2021 um 08:34 Uhr veröffentlicht von Stephan Zitzmann und wurde unter den Kategorien: Krimskrams, Notensatz, praktisch, Software abgelegt. | Es gibt keinen Kommentar .