Tutorial Basics Noten Part 2: Statistik

(version 2022_01_24)

Inhaltsverzeichnis:

1. Abfrage von einfachen statistischen Angaben

2. Häufigkeiten

3. Zweidimensionale Häufigkeitsverteilungen

4. Aufgaben

Dieses Tutorial führt anhand von Notenbeispielen in die computergestützten Möglichkeiten einfacher statistischer Abfragen auf der Grundlage von CAMAT (Computer-Assisted Music Analysis Tool) ein.

Das Durcharbeiten und Nachvollziehen des Tutoriums soll es Ihnen ermöglichen, mit den vorgestellten computergestützten Methoden eigene Musikbeispiele (Notendateien) zu untersuchen.

Jeder Start eines Jupyter Notebooks beginnt mit dem Import einer Reihe von Python-Bibliotheken, die für die Analyse erforderlich sind:

Anschließend müssen Sie die Datei laden, die Sie untersuchen wollen (aus dem Internet oder von Ihrer Festplatte bzw. aus dem Notenordner) und den xml-parser aktivieren. Dabei wird aus der xml-Datei ein neuer dataframe ('m_df') erzeugt, der den folgenden statistischen Abfragen zugrunde liegt (vgl. hierzu https://analyse.hfm-weimar.de/jupyter/CAMAT_Basics_Part1_Einfuehrung.html).

Wir wählen für unser Tutorial als Beispiel den ersten Satz aus dem Streichquartett KV. 171 von Wolfgang Amadeus Mozart (vgl. Basics Part 1).

1. Abfrage von einfachen statistischen Angaben

Wir beginnen mit einfachen statistischen Abfragen der Anzahl: der Stimmen, der Länge in Takten, der Anzahl der Töne (insgesamt und pro Stimmen) und dem Ambitus der einzelnen Stimmen.

Bitte öffnen Sie die Notendatei parallel in Ihrem Noteneditor (z.B. MuseScore).

Achtung: Da mit dem ersten Auswertungsbefehl die Daten erstmals eingelesen werden, braucht die Ausführung erfahrungsgemäß relativ lange (abhängig von Ihrem Computer und der Dateigröße bis zu mehreren Minuten). Alle späteren Befehle gehen dann aber sehr rasch!!

Abfrage der Stückänge in Takten:

Abfrage der Anzahl der Töne per Stimme, wobei übergebundene Noten jeweils als eine Note gezählt werden:

Der Ambitus per Stimme wird in Halbtonschritten, also die Differenz zwischen dem niedrigsten (min) und höchsten (max) Ton; angegeben in MIDI-Werten mit c' = C4 = 60; c'' = C5 = 72 usw.:

2. Häufigkeiten

Zur Charakterisierung einzelner Musikstücke und zum Vergleich zwischen verschiedenen Musikstücken kann es sinnvoll sein, die Häufigkeit bestimmter Elemente (Tonhöhen, Notendauern etc.) zu bestimmen. Für solche Fragen lassen sich Häufigkeitstabellen und grafische Darstellungen, sog. Histogramme, erstellen.

2.1 Tonhöhen

Welche Töne tauchen wie häufig auf? Wie diatonisch ist der Tonraum der Komposition, wie viele zusätzliche chromatische Töne tauchen auf?

Was können wir erkennen?

Mozart verwendet in der Komposition anscheinend hauptsächlich Töne der Es-Dur-Tonleiter (es=D#, as=G#, b=a# usw.) und kaum chromatische Töne.

Tipp: Die Grafik lässt sich auch in einem externen Pop-Up-Fenster des Programms Matplotlib darstellen und dort weiterverarbeiten, vergrößern, umformatieren und speichern etc. Dazu muss dem Code der Befehl '%matplotlib' vorangestellt werden. Anschließend muss Matplotlib durch den Befehl '%matplotlib inline' wieder ausgeschaltet werden. Ansonsten werden alle folgenden Grafiken ebenfalls extern dargestellt.

Wir wollen nun genau wissen, wie häufig die einzelnen Töne auftauchen!

In der Tabelle werden auch die jeweiligen Vorzeichen in der Partitur angezeigt. Dies kann sinnvoll sein, wenn z.B. in entfernte Tonarten moduliert wird. Dabei steht -1 für ein b-Vorzeichen, 1 für ein #-Vorzeichen, 0 für ein Auflösungszeichen, -2 für ein doppeltes bb usw. Das bedeutet:

Achten Sie bitte auf das A3: Midi-Pitch 57 taucht in zwei Zeilen auf, da das A 35mal mit Auflösungszeichen in der Partitur auftritt, zwei Mal jedoch ohne Auflösungszeichen (vermutlich später im Takt eines bereits aufgelösten Taktes).

Sind mir diese Angaben zu differenziert, so kann ich sie im Zusatz 'enharmonic=False' ausschalten. Nun wird Es zu Dis (D#), As zu Gis (G#) usw. Zusätzlich muss ich die Spaltennamen der Tabelle nun neu benennen, da nun Tonhöhe und Oktavlage in eine Spalte zusammengezogen werden:

Nun taucht A3 nur in einer Spalte auf, und zwar mit der Häufigkeit 37.

Durch den folgenden Befehl wird die Liste der Tonhöhenhäufigkeiten als csv-Datei exportiert (csv = comma separated variables; lesbar und weiterverarbeitbar u.a. in Excel oder im Text-Editor). Durch den Export lassen sich Tabellen zum Stückvergleich und zur Korpusanalyse generieren. Die csv-Datei wird Export-Ordner gespeichert und kann mit einem Texteditor oder einem Tabellenkalkulationsprogramm (z.B. Excel) geöffnet werden.

Es gibt zwei Möglichkeiten, die grafische Darstellung ein wenig übersichtlicher zu gestalten: Einerseits kann die Darstellung auf einen bestimmten Tonhöhenbereich eingeschränkt werden. Andererseits können nur jene Tonhöhen ausgewählt werden, die tatsächlich auftreten.

2.2 Tonhöhenklassen

Für harmonische Analysen ist es viel übersichtlicher, nicht die einzelnen Tonhöhen, sondern diese zu Tonhöhenklassen ('pitch class') zusammenzufassen.

Nun ist auf einen Blick zu erkennen: Mozart verwendet fast ausschließlich die Töne der Es-Dur Tonleiter - mit einer interessanten Ausnahme: Der Tritonus a taucht relativ häufig auf!

Womit könnte dies zusammenhängen? Um diese Frage zu beantworten, müssen Sie natürlich in die Partitur schauen und dort die Verwendungsweisen des Tons a überprüfen. Könnte es mit dem Einsatz von Doppeldominanten (F-Dur) zu tun haben?

Ähnlich wie bei den Tonhöhen (s. Abschnitt 2.1) lassen sich auch bei den Tonhöhenklassen Tabellen anzeigen. Die Häufigkeitstabelle wird automatisch erzeugt, sobald im Befehl den Plot-Parameter ('do_plot=None') ausgestellt wird:

2.3 Intervalle im einstimmigen Verlauf

Wie häufig kommen bestimmte Intervallschritte in den einzelnen Stimmen vor? Haben alle Stimmen einen ähnlichen Intervallverlauf – oder gibt es z.B. in den Unterstimmen mehr Sprünge, in der Melodiestimme mehr Schritte?

Schauen wir uns zunächst die Intervallverteilung in der ersten Violine an.

Die erste Violine schreitet vorwiegend in Sekunden, Terzen und Quarten voran, wobei absteigende Schritte häufiger sind als aufsteigende. Größere Intervalle kommen auch vor, sind aber viel seltener.

Wie steht es nun um die Cello-Stimme?
Dazu müssen Sie an der richtigen Stelle einfach die '1' durch eine '4' ersetzen...

Kopieren Sie den gesamten Befehl einfach in eine neue Code Cell und passen Sie die Stimmenauswhal an:

Es fällt auf, dass Quarten aufwärts (5), Sekunden aufwärts (2) sowie Quinten abwärts (-7) recht häufig vorkommen. Vielleicht ist dies sogar eine typische der Grundtöne, die sich harmonisch interpretieren lässt?

2.4 Tondauern

Nun wenden wir uns der rhythmischen Gestaltung zu: Welche Dauernwerte werden in der Komposition verwendet und wie häufig kommen diese jeweils vor?

In der folgenden Auswertung erhält die Viertelnote den Wert 1. Kürzere und längere Notenwerte werden entsprechend als Vielfache bzw. Teiler von 1 benannt.

Wie erwartet verwendet Mozart vorwiegend Viertelnoten (1) und kleinere Notenwerte (<1). Es kommen aber auch ein paar längere Noten vor. Wenn wir die jeweilige Anzahl genau wissen wollen und uns zudem der Bereich <1 genauer interessiert, müssen wir uns wieder die Häufigkeitstabelle anzeigen lassen:

Zur ERläuterung der Werte: Es handelt sich jeweils um Vielfache oder TEiler einer Viertelnote (=1). Also:

2.5 Metrisches Profil

Wie deutlich wird das Metrum in den einzelnen Stimmen einer Komposition artikuliert – durch die Platzierung der Töne auf Taktanfängen und den metrisch wichtigen Positionen innerhalb des Taktes (z.B. der Taktmitte oder auf den Viertelpositionen)? Hierzu lässt sich in eine Liste der Häufigkeiten von Tönen auf den verschiedenen metrischen Positionen in den einzelnen Stimmen anzeigen.

Ein solches Profil hat natürlich zur Voraussetzung, dass das untersuchte Stück in einem einzigen Metrum steht und keine Taktwechsel hat. Das überprüft man mit dem folgenden Befehl:

In unserem Mozart-Satz tauchen sowohl 4/4-Takte als auch 3/4-Takte auf, wobei der 3/4-Takt sogar überwiegt - obwohl das Stück ja im 4/4-Takt beginnt. Mit dem folgenden Befehl werden daher zwei unterschiedliche metrische Profile erzeugt - einmal für die 4/4-Takte, einmal für die 3/4-Takte.

3. Zweidimensionale Häufigkeitsverteilungen

Wir haben uns bereits die Häufigkeiten von Tonhöhen bzw. Tonhöhenklassen angeschaut. Nun könnte man sagen: Längere Töne haben natürlich mehr Gewicht als kurze Töne oder Töne zwischen den Zählzeiten. Diesen Gedanken können wir weiterverfolgen, indem wir uns kombinierte, ‚doppelte‘ oder ‚bivariate‘ Häufigkeitsverteilungen: Also z.B. die Häufigkeiten der Tonhöhen für jeweils unterschiedliche Dauernwerte oder die Häufigkeiten der Tonhöhenklasse für die verschiedenen metrischen Positionen. Hierum soll es im Folgenden anhand von zwei Beispielen gehen.

Beispiel 1: Dauern pro Tonhöhenklassen. Gibt es Unterschiede bei den Dauernwerten bzgl. der verschiedenen Tonhöhenklassen?

Beispiel 2: Tonhöhen auf metrischen Positionen. Gibt es Unterschiede bei verschiedenen Positionen im Takt bzgl. der verschiedenen Tonhöhenklassen?

3.1 Dauernwerte der Tonhöhenklassen

Mit dem folgenden Befehl wird eine sog. 3D-Grafik erzeugt, bei der die Häufigkeiten von Daunerwerte pro Tonhöhenklasse angezeigt wird. Sowohl die Höhe als auch die Farbe der Säulen steht für die jeweilige Häufigkeit (von blau=sehr selten über grün und gelb bis rot=sehr häufig):

Da die Zuordnung der Balken zu den Notenwerten ein wenig unübersichtlich ist (die Zahlen beziehen sich der Reihe nach auf die Felder), lassen wir uns mit dem folgenden Befehl die entsprechende Häufigkeitstabelle anzeigen:

Nicht sehr überraschend ist, dass Grundton Es (=D#) und Quinte B (=A#) vor allem als Achtelnoten (0.5) und Viertelnoten (1.0) vorkommen. Denn das sind ja auch die häufigsten Dauernwerte!

Die Darstellung kann von Tonhöhenklassen auf Tonhöhen umgestellt werden, indem beim Parameter plot_with='Pitch' (in einfachen Anführungszeichen) gewählt wird. Nun wird die 3D-Grafik allerdings noch ein wenig unübersichtlicher...

3.2 Metrische Positionen der Tonhöhenklassen

Nun zur Frage: auf welchen Positionen im Takt stehen welche Tonhöhenklassen? Mit folgendem Befehl erzeugen wird die entsprechende 3D-Grafik.

Dasselbe geht auch mit Tonhöhen. Dazu müssen wir einfach beim Parameter plot_with 'PitchClass' durch 'Pitch' ersetzen:

Auch hier kann es sinnvoll sein, sich die Grafik im externen Pop-Up-Fenster von Matplotlib anzuschauen.

Allerdings haben wir jetzt einen Fehler gemacht: Der Mozart-Satz hat ja einen Taktwechsel!! Wir haben in unserer Auswertung jedoch nicht zwischen 4/4-Takt und 3/4-Takt unterschieden. Daher müssen wir alle Befehle nochmals wiederholen, nachdem wir in die beiden Takttypen unterschieden haben.

4. Anwendung von Takt- und Stimmenfilter

Alle statistischen Abfragen lassen sich durch eine einfach zu bedienende Filterfunktion auf beliebige Ausschnitte und Stimmen eingrenzen (vgl. Tutorial Part 1, Abschnitt 5). Dazu muss man nur die entsprechenden Taktangaben und Stimmenbezeichnungen eingeben.

Hier zwei Beispiele:

  1. Mit den folgenden Befehlen lässt sich eine kombinierte Liste der Intervallhäufigkeiten der beiden Violinenstimmen ('PartID':'1-2') für die ersten fünf Takte ('Measure':'1-5') anzeigen, exportieren bzw. als Histogramm anzeigen. Diese Auswahl lässt sich beliebig verändern!
  1. Mit den folgenden Befehlen lässt sich eine Liste der Tonhöhenklassen der Cellostimme ('PartID':'4') für die ersten zehn Takte ('Measure':'1-10') anzeigen, exportieren bzw. als Histogramm anzeigen. Auch diese Auswahl lässt sich beliebig verändern!

5. Aufgaben

Wir haben uns die Ergebnisse bislang nur anhand eines einzigen Stückes angeschaut. Wie stellt sich nun aber die Lage dar, wenn wir mehrere Stücke, z.B. mehrere oder alle Sätze der Komposition, miteinander – und mit anderen Stücken – vergleichen? Gibt es stilistische Regelmäßigkeiten – oder überwiegen die Unterschiede?

Laden Sie Kompositionen Ihrer Wahl (verschiedene Gattungen, Komponisten und Epochen) und vergleichen Sie diese Stücke hinsichtlich der Häufigkeiten von Tonhöhen, Tonhöhenklassen, Notenwerten und Intervallen miteinander. Interpretieren Sie die Ergebnisse jeweils mit Blick auf den Notentex!