Schön, F. (2022). PAUL-2: A transformer-based algorithmic composer of two-track piano pieces [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2023.103585
algorithmic composition; transformer; neural networks; music education
en
Abstract:
In dieser Arbeit stellen wir das automatische Kompositionssystem PAUL-2 vor, welches eine direkte Weiterentwicklung des bereits existierenden Systems PAUL ist. Obwohl beide Systeme für dieselben Zwecke konzipiert sind, zeichnet sich PAUL-2 durch eine erheblich verbesserte interne Architektur und eine gesteigerte Performanz aus. PAUL-2 basiert auf einer neuronalen Transformer Netzwerkarchitektur und verwendet Techniken des Music Transformer Systems. Ein Transformer ist eine Sequence-to-Sequence Netzwerkarchitektur auf dem neuesten Stand der Technik, welche erlaubt, Ausgabesequenzen variierender Länge basierend auf mehreren Eingabesequenzen aus möglicherweise unterschiedlichen Domänen zu erzeugen. Die Aufgabe von PAUL-2 ist die Erzeugung von zweispurigen Klavierstücken, wobei ein wesentliches Merkmal des Systems ist, dass der Schwierigkeitsgrad der erzeugten Stücke parametrisierbar ist. Diese Einstellmöglichkeit bezieht sich dabei darauf, wie schwierig es für einen menschlichen Spieler ist, ein erzeugtes Stück zu spielen. Hierbei handelt es sich um ein zentrales Merkmal von PAUL-2 für einen zukünftigen Einsatz als Teil eines Lernsystems um Klavierschüler das Blattlesen beizubringen. Die Schüler würden in einer solchen Umgebung computergenerierte Aufgaben erhalten, welche ihren Fähigkeiten entsprechen und müssten sich dabei allein auf ihre Blattlesefähigkeiten verlassen, da sie die Stücke nicht kennen. In einer experimentellen Studie wurde die musikalische Qualität der von PAUL-2 erzeugten Stücke evaluiert, wobei festgestellt werden konnte, dass die Studienteilnehmer zwar in circa drei Viertel der Fälle zwischen computergenerierten und echten Stücken unterscheiden konnten, aber im Allgemeinen die Qualität der erzeugten Stücke als gut angesehen angesehen haben. Im Zuge der Entwicklung von PAUL-2 wurde auch die Python Bibliothek S-Coda realisiert, welche für das Bearbeiten von MIDI Dateien verwendet werden kann. S-Coda unterstützt viele verschiedene Operationen, wie das Quantisieren von MIDI Dateien, das automatische Aufspalten von Sequenzen in Takte oder die visuelle Repräsentation von musikalischen Stücken als Klavierrolle. Durch die Verwendung von S-Coda ist es möglich, die Zeit für das Vorverarbeiten von Daten für Anwendungen im Bereich des maschinellen Lernens deutlich zu verringern.
de
In this thesis, we introduce the algorithmic composer PAUL-2, which is the direct successor of the system PAUL developed in earlier work. Although both systems are designed for similar goals, PAUL-2 makes use of a significantly enhanced internal architecture and exhibits an improved performance. PAUL-2 is based on a transformer neuralnetwork architecture and implements the relative attention improvements introduced by the Music Transformer model. A transformer is a state-of-the-art sequence-to-sequence architecture capable of generating output sequences of varying length based on a number of input sequences, not necessarily of the same domain. The purpose of PAUL-2 is to generate two-track piano pieces where a particular feature of the system is that the difficulty of the generated output pieces can be set by a parameter. This adjustment possibility facilitates how difficult a piece would be to play for a human pianist and is a central feature for the designated future usage of PAUL-2, which is in an educational context where it is to be used to teach piano students how to sight-read, where students would be provided with computer-generated prompts conforming to their level of proficiency. Here, they have to rely on their sight-reading capabilities alone, as they would not be familiar with the pieces. In a medium-scale study, we evaluated the musical quality of the output of PAUL-2. We found that although participants were able to differentiate between the computer-generated output of PAUL-2 and genuine pieces about three quarters of the time, in general the participants regard the quality of PAUL-2 quite favourably. Furthermore, as part of the development of PAUL-2, we also devised S-Coda, a Python library used to manipulate MIDI files. S-Coda supports many different operations, such as the quantisation of MIDI files, the automatic splitting of sequences into bars, or the visual representation of musical pieces as piano rolls. The usage of S-Coda can greatly reduce the amount of time needed to preprocess music data for machine-learning applications.