Skip to main content

Demonstrations and tools for music21.

Project description

music21-tools

Tools and demonstrations for music21 created by Cuthbert and his lab (cuthbertLab)

Copyright © 2004-2026 Michael Scott Asato Cuthbert, released under a BSD (3-clause) license.

Many of these tools and demonstrations were formerly in the music21 package.
They may require external packages to make them work, and some may require editing to make them work with the latest version of music21. I will attempt to update them with each new major release of music21, but there is no guarantee that they will work with any development versions along the way.

Many thanks to Christopher Ariza, Beth Hadley, Jordi Bartolomé, Daniel Manesh, Hugh Zabriskie, Jackie Rogoff, Lars Johnson, Varun Ramaswamy, Nina C. Young, Thomas Carr, Jose Cabal-Ugaz, Lisa D. Friedland, Norman Schmidt, and many others who contributed to this project.

Historical notes

Older versions of this repo included bhadley/mrjobaws/, a demonstration of using mrjob to run music21 feature extraction as a Hadoop MapReduce job on Amazon EMR. mrjob has been unmaintained since 2020 and the EMR workflow is no longer practical, so the code has been removed. It can still be found in git history at commit 311cbff under bhadley/mrjobaws/.

Older versions also included webapps/ (formerly music21.webapps), a demonstration of building webserver-based music21 tools. It depended on a version of NoteFlight that has not been available for over ten years, so the code has been removed. It can still be found in git history at commit 311cbff under webapps/. The project is described in:

Cuthbert, Michael Scott, Beth Hadley, Lars Johnson, and Christopher Reyes. "Interoperable Digital Musicology Research via music21 Web Applications," Proceedings of the Joint CLARIN-D/DARIAH Workshop, Service-oriented Architectures (SOAs) for the Humanities: Solutions and Impacts at the Digital Humanities Conference, Hamburg, Germany, July 2012.

PDF available at trecento.com.

Running the tests

This project uses uv and pytest. From the repository root:

# install (creates .venv/ with music21 >= 10 and dev dependencies)
uv sync

# run the full test + doctest suite
uv run pytest --doctest-modules music21_tools/

To test a single module:

uv run pytest --doctest-modules music21_tools/theoryAnalysis/theoryAnalyzer.py

Releasing new versions

Bump the version in pyproject.toml to the new version and then:

trash dist
uv build
uv run --with twine twine upload dist/*
git tag vXX.X
git push --tags

Contact

Michael Scott Asato Cuthbert — michael.asato.cuthbert@gmail.comtrecento.com — GitHub: @mscuthbert / cuthbertLab.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

music21_tools-10.1.2.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

music21_tools-10.1.2-py3-none-any.whl (977.6 kB view details)

Uploaded Python 3

File details

Details for the file music21_tools-10.1.2.tar.gz.

File metadata

  • Download URL: music21_tools-10.1.2.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for music21_tools-10.1.2.tar.gz
Algorithm Hash digest
SHA256 5901c4bb9a68388610514bb2d28be94cc1d5580b24b08137d6a207d0200f15d5
MD5 23956b61ace68aaa2faa01872cd4871a
BLAKE2b-256 daecf32f3383fc1eb536595e60eba2e287b33824da9ab3c9e61f332f103b2d44

See more details on using hashes here.

File details

Details for the file music21_tools-10.1.2-py3-none-any.whl.

File metadata

  • Download URL: music21_tools-10.1.2-py3-none-any.whl
  • Upload date:
  • Size: 977.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for music21_tools-10.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bc6e6ffc44e3322b5b01c4e724718615701ab386f8300d773255fe6dd949013d
MD5 70af4b4a4ad54c47fe8073ac0ea57bdd
BLAKE2b-256 6642de53b31229bf194a46b0208e73c5ddbc9b67633407c2d03849ba3ef9dcaa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page