Table of Contents
Fetching ...

GraphMuse: A Library for Symbolic Music Graph Processing

Emmanouil Karystinaios, Gerhard Widmer

TL;DR

GraphMuse addresses the lack of a standardized framework for symbolic music processing by providing a Python library to construct musical score graphs, apply musically informed neighbor sampling, and support hierarchical modeling. It introduces heterogeneous attributed score graphs and a family of GNNs (NoteGNN, BeatGNN, MeasureGNN, MetricalGNN, HybridGNN) to extract rich node embeddings, improving performance on pitch spelling and cadence detection. Results show significant gains over prior methods, with A-Pitch reaching up to 95.6% and cadence macro-F1 up to 58.6%, demonstrating the value of hierarchical elements and hybrid modeling. By standardizing graph-based symbolic music analysis and offering open-source tooling, GraphMuse aims to accelerate reproducibility and progress in graph-driven music research.

Abstract

Graph Neural Networks (GNNs) have recently gained traction in symbolic music tasks, yet a lack of a unified framework impedes progress. Addressing this gap, we present GraphMuse, a graph processing framework and library that facilitates efficient music graph processing and GNN training for symbolic music tasks. Central to our contribution is a new neighbor sampling technique specifically targeted toward meaningful behavior in musical scores. Additionally, GraphMuse integrates hierarchical modeling elements that augment the expressivity and capabilities of graph networks for musical tasks. Experiments with two specific musical prediction tasks -- pitch spelling and cadence detection -- demonstrate significant performance improvement over previous methods. Our hope is that GraphMuse will lead to a boost in, and standardization of, symbolic music processing based on graph representations. The library is available at https://github.com/manoskary/graphmuse

GraphMuse: A Library for Symbolic Music Graph Processing

TL;DR

GraphMuse addresses the lack of a standardized framework for symbolic music processing by providing a Python library to construct musical score graphs, apply musically informed neighbor sampling, and support hierarchical modeling. It introduces heterogeneous attributed score graphs and a family of GNNs (NoteGNN, BeatGNN, MeasureGNN, MetricalGNN, HybridGNN) to extract rich node embeddings, improving performance on pitch spelling and cadence detection. Results show significant gains over prior methods, with A-Pitch reaching up to 95.6% and cadence macro-F1 up to 58.6%, demonstrating the value of hierarchical elements and hybrid modeling. By standardizing graph-based symbolic music analysis and offering open-source tooling, GraphMuse aims to accelerate reproducibility and progress in graph-driven music research.

Abstract

Graph Neural Networks (GNNs) have recently gained traction in symbolic music tasks, yet a lack of a unified framework impedes progress. Addressing this gap, we present GraphMuse, a graph processing framework and library that facilitates efficient music graph processing and GNN training for symbolic music tasks. Central to our contribution is a new neighbor sampling technique specifically targeted toward meaningful behavior in musical scores. Additionally, GraphMuse integrates hierarchical modeling elements that augment the expressivity and capabilities of graph networks for musical tasks. Experiments with two specific musical prediction tasks -- pitch spelling and cadence detection -- demonstrate significant performance improvement over previous methods. Our hope is that GraphMuse will lead to a boost in, and standardization of, symbolic music processing based on graph representations. The library is available at https://github.com/manoskary/graphmuse
Paper Structure (19 sections, 1 equation, 4 figures, 1 table)

This paper contains 19 sections, 1 equation, 4 figures, 1 table.

Figures (4)

  • Figure 1: The general graph processing/training pipeline for symbolic music scores involves several steps: i) Preprocess the database of scores to generate input graphs; ii) Sample the input graphs to create memory-efficient batches; iii) Form a batch as a new graph with nodes and edges from various input graphs; iv) Sample a subset of nodes (target nodes) and their neighbors from the input graphs; v) Update the target nodes' representations through graph convolution to create node embeddings; vi) Use these embeddings for task-specific applications. Note that target nodes may include all or a subset of batch nodes depending on the sampling strategy.
  • Figure 2: Full graph vs neighbor sampling. The pink-colored nodes are selected for convolution by message passing. With neighbor sampling, the pink node is the one whose representation is ultimately updated after convolution (however, for the blue nodes also take part in the convolution process as its context).
  • Figure 3: Sampling process per score. Top: sampled notes and their neighbors; middle: score graph and sampling process; bottom: sampling process for beats and measures. A randomly selected note (in yellow) is first sampled. The boundaries of the target notes are then computed with a budget of 15 notes in this example (pink and yellow notes). Then the k-hop neighbors are fetched for the targets (light blue for 1-hop and darker blue for 2-hop). The k-hop neighbors are computed with respect to the input graph (depicted with colored edges connecting noteheads in the figure). We can also extend the sampling process for the beat and measure elements (introduced in Section \ref{['subsec:preprocessing']}). Note that the k-hop neighbors need not be strictly related to a time window.
  • Figure :