Musik in XML Ausarbeitung von Kristin Hübner Inhalt Seite Titel 1 Allgemeines zu XML 2 Beweggründe für XML 3 Exkurs : Unicode 4 Code-Beispiel 5-9 Funktionsweise des Codes am Beispiel I. Allgemeines Da es sich bei «XML» um eine Abkürzung handelt, ist es zunächst wichtig, deren Bedeutung zu kennen. «XML» steht für den enlgischen Begriff «Extensible Markup Language» (zu deutsch «erweiterbare Auszeichnungssprache»), also eine Sprache zur Beschreibung eines Dokumenteninhalts. XML wird vielseitig eingesetz, zum Besipiel zum Austausch und Verbreiten von digitaler Musik. Ziel hierbei ist vorallem die Nutzungsmöglichkeit in möglichst vielen verschiedenen Programmen, damit bei Verwendung von mehreren Programmen keine Komplikationen auftreten. Ähnlich wurde dieses Problem bei Tonaufnahmen mit dem MP3-Format gelöst. Die erste Spezifikation bezüglich XML wurde 1998 vom Wolrd Wide Web Cosortium (auch W3C genannt) herausgegeben. Aktuell liegt die fünfte Ausgabe, welche 2008 erschien, vor. Damit XML auch weltweit genutzt werden kann, ist XML im Unicode [s. Seite 3] verfasst. Inspiriert wurde XML zum einen vom Muse-Data-Format und zum anderen von dessen Weiterentwicklung, dem Humdrum-Format. II. Beweggründe Es stellt sich die Frage, wieso man sich trotz bereits vorhandenen Formaten wie MIDI, NIFF (Notation Interchange File Format) oder SMDL(Standard Music Description Language) noch ein weiteres Format wünschte. Ein Grund war zum Beispiel die Tatsache, dass keines der bereits existierenden Formate von einer Vielzahl von Programmen verarbeitet werden kann. Somit konnten die Vorteile einzelner Programme nicht ohne größeren Aufwand in Kombination genutzt werden. Dies soll sich durch XML ändern. Zudem weist jedes vorherige Format individuelle Fehler beziehungsweise Nachteile auf. So ist MIDI zum Beispiel sehr gut für das praktische Bearbeiten von Musik nutzbar, aber es tauchen vermehrt Probleme auf, wenn es um die Notation von Musik geht. Da Notation und Bearbeitung aber Hand in Hand gehen, sollte das neue Format beide Aspekte zufriedenstellend darbieten. Ähnliche Probleme wie bei MIDI traten auch bei NIFF auf, da Musik in diesem Format ausschließlich graphisch dargestellt wurde. Somit war NIFF für seine Hauptzielgruppe, also Scanner, gut geeignet war, aber nicht allgemein nutzbar. Bei SMDL hingegen lag der Fehler an einer ganz anderen Stelle. Die Entwickler wollten, dass SMDL noch möglichst lange Zeit nutzbar bleibt und versuchten daher, alle Möglichkeiten, die auch in der Zukunft noch auftreten könnten, abzudecken, was das Format für den täglichen Gebrauch viel zu kompliziert machte. Hinzu kamen noch zahlreiche Programmierfehler, welche die Verwendung zusätzlich erschwerten. Es wird also ersichtlich, dass keines der bis dato größten Musikformate die für XML angestrebten Ziele erfüllte. Der Fokus bei der Musikverbreitung sollte mehr auf dem «was» liegen und nicht mehr auf dem «wie». III. Exkurs: Unicode Der erste Versuch eines weltweit einheitlichen Zeichensatzes wurde 1988 von einem Mitarbeiter der Xenox Corporation geschrieben. Heute gib es mit Unicode ein Zeichensatzsystem, dass alle Schriftkulturen vereint. Obwohl es schon voll funkitonstüchtig ist, wird Unicode wie jede Sprache stets im Wandel bleiben und sich immer weiterentwickeln. Damit ein Computer Unicode übersetzen kann, muss das verwendete Programm natürlich Unicode-kompatibel sein, was bei den meisten heutigen Programmen aber der Fall ist. Jedes Zeichen ist einzlenen Kategorien zugeordnert und besitzt einen Zahlencode, der es im Unicode representiert. Auch Sonderzeichen wie erzwungene Absätze oder Silbentrennung haben eine Codierung. Zudem gibt es auch Zahlenfolgen für Teilzeichen, wie etwa die Doppelpunkte über den deutschen Umlauten. Diese Umlaute werden dann als Kombination aus dem Ausgangsbuchstaben und dem Doppelpunkt angegeben. Zusätzlich zur «Adresse» des Zeichens in der Übersetzungstabelle werden aber auch andere Eigenschaften wie zum Beispiel die Schreibrichtung bei arabischen Zeichen angegeben. Die Erstellung eines solchen Einheitscodes muss also zahlreiche sprachwissenschaftliche Probleme betrachten und bedenken. Zu diesem Zweck wurde 19991 das Unicode-Konsortium aus Linguisten und anderen Fachleuten gegründet. Diese legen unter anderem auch fest, welche Zeichen neu in die Codierungstabelle aufgenommen werden. Die angegeben Zeichencodes sind verbindlich und seit der zweiten Auflage auch mit der internationalen Norm ISO 10646 synchron, was besonders wichtig ist, da zum Beispiel auch XML damit synchronisiert ist. IV.Code-Vorlage Der folgende Code beschreibt eines der einfachsten Beispiele der Musik, eine ganze Note C im 4/4 Takt : <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwise version="3.0"> <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <part id="P1"> <measure number="1"> <attributes> <divisions>1</divisions> <key> <fifths>0</fifths> </key> <time> <beats>4</beats> <beat-type>4</beat-type> </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> <note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part> </score-partwise> V. Funktionsweise des Code-Beispiels Im Folgenden wird das Code-Beispiel Zeile für Zeile erklärt. <?xml version="1.0" encoding="UTF-8" standalone="no"?> Diese Zeile des Codes wird für jedes XML-Dokument benötigt, egal, ob es sich um ein Musikstück oder etwas anderes handelt. Zunächst wird die verwendete XML-Version angegeben. «UTF-8» beschreibt die Unicode-Version die genutzt wird. «Standalone 'no'» bedeutet, dass das erstellte Dokument in mehreren Ordnern verankert wird. <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> Mit diesen Zeilen wird festgelegt, dass XML zum Erstellen eines Musik-Dokuments benuttzt wird. Außerdem wird das Stück in einzelne Parts unterteilt. Der URL ist eine Referenz, da DTDs nicht zwangsweise installiert werden müssen, sondern auch über das Internet bezogen werden können. <score-partwise version="3.0"> Bei XML wird zwischen «timewise» und «partwise» unterschieden. Wird partwise gearbeitet, dann wird die Größe der Takte vorgegeben, bei timewise besteht ein Takt immer aus einer festgelegten Anzahl von Noten. <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <part id="P1"> <measure number="1"> <attributes> Diese Zeilen sind ein Standart-Header, welcher bei jeder Unterteilung benötigt wird. <attributes> öffnet die Angabe einzelner Eigenschaften des Musikstücks. <divisions>1</divisions> Für jede Note gibt es ein Dauerelement, welches von der Maßeinheit in Bezug auf ViertelnotenDivision abhängig ist. In diesem Fall (4/4-Takt) ergibt es also 1. <key> <fifths>0</fifths> </key> Die <Key>-Angabe entspricht der Tonart im Quintenzirkel. In diesem Fall ist die Tonart C-Dur, besitzt also keine Vorzeichen, was mit der 0 angegeben wird. «Time» bezeichnet nocheinmal, ähnlich wie die «Divisions»-Angabe den Takt an (in diesem Beispiel 4/4). <clef> <sign>G</sign> <line>2</line> </clef> Die <clef>- Angaben beziehen sich auf den verwendeten Notenschlüssel, wobei G2 für die Linie steht, an der der Notenschlüssel beginnt. G2 ist der Violinennotenschlüssel, der am häufigsten verwendet wird. Erst mit <note> beginnen die Angaben zur eigentlichen Note. <pitch> <step>C</step> <octave>4</octave> </pitch> <pitch> eröffnet die Informationen zum Oktaven- und Schrittelement der Note. In diesem Beispiel beginnt die vierte Oktave mit einem mittleren C, daraus folgt, dass dieses mittlere C dargestellt wird. <duration>4</duration> Die <duration> gibt ganz ähnlich wie die <division> die Divisionen pro Viertelnote an ( im Beispiel eine). Da das Stpck im 4/4 Takt geschrieben ist, wird also eine ganze Note erstellt. <type>whole</type> Unter <tpye> wird die zu erstellende Notenart nocheinmal direkt angegeben, was dem Leser des Codes das Ermitteln des Notentyps erleichtern soll. In unserem Fall wird, wie bereits erwähnt, eine ganze Note dargestelllt. </note> </measure> </part> </score-partwise> Mit </note> beispielsweise werden die Angaben zur Note geschlossen. Allgemein schließen Ausdrücke mit einem « / » bestimmte Abschnitte des Dokuments. Auch Besonderheiten wie etwa Triolen können angegeben werden. Wie man Triolen in XML darstellt, sieht man hier : <time modification> <actual-notes>3</actual-notes> <normal-notes>2</normal-notes> </time modification> All diese Angaben sind zur Erstellung einer Klavierpartitur. Allerdings kann man mit XML auch Musik-Dokumente für Gitarrenakkorde oder andere Musikdarstellungsmethoden schreiben. Ein einfacher G6- Akkord sieht in XML wie folgt aus : <harmony default-y= «100»> <root> <root-step>G</root-step> </root> <kind-halign= «center» text = «6» > majo-sixth </kind> <bass> <bass-step>D</bass-step> </bass> </harmony> Zusätzlich können auch Percussion-Parts sowohl hö- als auch sichtbar dargestelllt werden. Dies ist besonders kompliziert, da bei derartigen Instrumenten keine wirklichen Töne angegeben werden können. Deshalb werden statt wirklicher Noten solche wie die, die im hier eingefügten Bild zu sehen sind, benutzt, um Einsätze zu markieren. Insgesamt kann XML Musik also sehr vielseitig darstellen und bietet nahezu eine Vielzahl von Möglichkeiten, ein Stück zu komponieren. Quellenangaben – MusicXMLtutorial.pdf – http://de.selfhtml.org/inter/unicode.htm – http://de.selfhtml.org/xml/dtd/allgemeines.htm