Skip to content

Commit

Permalink
Merge pull request #1754 from cuthbertLab/v9.5
Browse files Browse the repository at this point in the history
Release music21 v9.5
  • Loading branch information
mscuthbert authored Feb 19, 2025
2 parents 8ae2ae7 + 32ddbad commit ff16dc2
Show file tree
Hide file tree
Showing 16 changed files with 511 additions and 159 deletions.
27 changes: 17 additions & 10 deletions dist/dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
1. update the VERSION in _version.py and the single test case in base.py.
2. run `corpus.corpora.CoreCorpus().cacheMetadata()`.
for a major change that affects parsing run corpus.corpora.CoreCorpus().rebuildMetadataCache()
(20 min on IntelMacbook Air) -- either of these MAY change a
(2 min on M4) -- either of these MAY change a
lot of tests in corpus, metadata, etc. so don't skip the next step!
3. IMPORTANT: run python documentation/testDocumentation.py and afterwards fix errors [*]
[*] you will need pytest, docutils, nbval installed (along with ipython and jupyter),
you cannot check to see if fixed tests work while it is running.
This takes a while and runs single core, and then almost always needs code patches
so allocate time. Start working on the announcement while it's running.
so allocate time (2 min on M4). Start working on the announcement while it's running.
4. run test/warningMultiprocessTest.py for lowest and highest Py version -- fix all warnings!
Expand All @@ -36,8 +36,10 @@
(normally not necessary, because it's slower and mostly duplicates multiprocessTest,
but should be done before making a release).
7. run documentation/make.py clean (skip on minor version changes)
8. run documentation/make.py linkcheck [*]
7. run documentation/make.py clean (skip on minor version changes) -- you may need to make a
documentation/build directory first.
8. run documentation/make.py linkcheck [*] - missing http://www.musicxml.org/dtds/partwise.dtd
and code-of-conduct links are both okay.
9. run documentation/make.py [*]
[*] you will need sphinx, Jupyter (pip or easy_install), markdown, and pandoc (.dmg) installed
Expand All @@ -46,15 +48,16 @@
via Amazon S3 (contact MSAC for authentication if need be)
11. zip up documentation/build/html and get ready to upload/delete it.
Rename to music21.v.7.1.0-docs.zip (skip for Alpha/Beta)
Rename to music21.v.9.5.0-docs.zip (skip for Alpha/Beta)
12. From the music21 main folder (not the sub folder) run "hatch build" --
requires hatch to be installed "brew install hatch"
12. From the music21 main folder (not subfolder) run "hatch build" --
requires hatch to be installed "pip install hatch" -- brew version of hatch
was giving Environment `default` is incompatible messages recently. (mysql? why relevant?)
This builds the dist/music21-9.3.0.tar.gz and dist/music21-9.3.0-py3-none-any.whl
files. That used to be what *this* script did, but now hatch does it better!
13. Run this file: it builds the no-corpus version of music21.
13. Run this file: it builds the no-corpus version of music21. (need Python 3.12 or higher)
DO NOT RUN THIS ON A PC or the Mac .tar.gz might have an incorrect permission if you do.
14. PR and Commit to GitHub at this point w/ commit comment of the new version,
Expand All @@ -76,7 +79,7 @@
Finish this before doing the next step, even though it looks like it could be done in parallel.
19a. Upload the new file to PyPI with "twine upload music21-9.3.0.tar.gz" [*]
19a. Upload the tar.gz file to PyPI with "twine upload music21-9.3.0.tar.gz" [*]
19b. Do the same for the whl file (but not for the no-corpus file) [*]
Expand All @@ -92,6 +95,10 @@
username:__token__
password:pypi-the_gibberish_generated_in_create_api_token_at_the_bottom_of_account_settings
The "password" is under "Account Settings" -> "API Token" -> "Options" -> "View Unique
Identifier" -- the Copy button doesn't work at least on Mac.
(or you can use the "password" field in the [pypi] section, but that's not recommended)')
FYI -- PyPI is apparently uninterested in having contributions from smaller projects
which haven't been following their internal security discussions for years. All of this
is super mysterious and not well documented. sigh. But they did mail out USB sticks to
Expand Down Expand Up @@ -133,7 +140,7 @@ def removeCorpus():
fpDstDir = os.path.join(fpDir, fnDstDir)

file = tarfile.open(fp)
file.extractall(fpDir)
file.extractall(fpDir, filter='data') # note -- this requires 3.12+ but that's okay
file.close()

os.rename(fpDstDir.replace('-noCorpus', ''), fpDstDir)
Expand Down
206 changes: 206 additions & 0 deletions documentation/source/about/.ipynb_checkpoints/about-checkpoint.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
.. _about:


Authors, Acknowledgments, Contributing, and Licensing
=====================================================

`Music21` is an open-source toolkit for Computer-aided musicology. It is licensed under
the BSD license (see below).

About the Authors
-----------------------

**Michael Cuthbert**, the creator of `music21`, is co-founder and chief music officer of
`Artusi`_ and former tenured professor of music at M.I.T. where he created the Mellon-Funded
Digital Humanities lab and taught computational music theory and musicology.
He received his A.B. *summa cum laude*, A.M. and Ph.D. degrees from Harvard University.
Cuthbert spent 2004-05 at the American Academy as a Rome Prize winner in Medieval Studies,
2009-10 as Fellow at Harvard's Villa I Tatti Center for Italian Renaissance Studies
in Florence, and 2012-13 at the Radcliffe Institute.

Prior to joining the M.I.T. faculty, Cuthbert was on the faculties of Smith
and Mount Holyoke Colleges. He has worked extensively on computer-aided musical analysis,
fourteenth-century music, and the music since 1960.

**Christopher Ariza** is Emeritus Lead Programmer of `music21` and was
Visiting Assistant Professor of Music
at M.I.T. from 2010 to 2013. Prior to joining the `music21` project,
Ariza was Assistant Professor of Music
Technology at Towson University in Baltimore. He has published and
presented numerous articles
and papers on algorithmic composition and generative music systems.
Ariza received his A.B.
degree from Harvard University and his M.A. and Ph.D. degrees from New York University.

**Benjamin Hogue** is Former Lead Programmer of `music21` for 2013.

**Josiah Wolf Oberholtzer** is Former Lead Programmer of `music21` for 2014-15.

Additional contributions by many MIT students and visitors and the
Open Source software community.

.. _Artusi: https://www.artusimusic.com/


Acknowledgements
----------------

Funding
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

`music21` was made possible by generous research funding
from the **Seaver Institute** and
the **National Endowment for the Humanities**/Digging into Data research fund.

In addition, we acknowledge previous support from `M.I.T.`_, the
`School of Humanities Arts and Social Sciences`_, and the
`Music and Theater Arts`_ section.

.. _M.I.T.: https://web.mit.edu/
.. _School of Humanities Arts and Social Sciences: https://shass.mit.edu/
.. _Music and Theater Arts: https://mta.mit.edu/

Colleagues and Institutions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Music21 is unthinkable without our colleagues and friends
working on other music and technology projects, in particular:

* `David Huron`_, inventor of `Humdrum`_ (the link refers to a changed version of the project),
the inspiration for music21.

* `Michael Good`_ and Recordare.com for creating MusicXML and many
discussions about the project.

* The `Center for Computer-Assisted Research in the Humanities`_ at Stanford University,
contributing to the knowledge of music since 1984, and
publishers of *Computing in Musicology*.

.. _David Huron: https://music.osu.edu/people/david-huron
.. _Humdrum: https://www.humdrum.org
.. _Michael Good: https://www.musicxml.com
.. _Center for Computer-Assisted Research in the Humanities: http://www.ccarh.org/

Contributors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Additionally, the following individuals have contributed materials or knowledge
to this project. Their contributions and generosity are greatly appreciated.

* Thomas Bonte, Nicholas Froment, and Werner Schweer of `MuseScore`_ for their
support and for their contributions to the open source music notation projects,
including the Bach Goldberg Variations and the Handel Arias included.

* `Jacob Walls`_, contributed greatly to the type-safety, speed, and test coverage
of `music21`. If your music21 program "just works" without needing to guess what
any argument goes where, Jacob is to thank.

* `Donald Byrd`_, researcher on University of Indiana who created
a schema for computer-aided musicology (along with the source of all sorts of
examples of how music notation is difficult).

* `Jack Campin`_ has kindly given permission to distribute his ABC editions of the Aird
Collection, the Northumbrian Minstrelsy, and the Colonial and Civil War American
Fife Music Collection.

* `John Chambers`_ has provided ABC editions to distribute with music21, including the
Aird Collection, the O'Neill's Music of Ireland Collection, and Ryan's Mammoth Collection
of fiddle tunes.

* `Laura E. Conrad`_ has kindly given permission to distribute her ABC editions of
renaissance polyphony from Serpent Publications.

* `Ewa Dahlig-Turek`_ has kindly given permission to distribute the
Essen folksong database with music21.

* `Margaret Greentree` kindly gave permission for distribution of her edited
collection of the Bach chorales in MusicXML format as part of the music21 corpus.
Her website contains all these chorales in additional formats.
Any discoveries we make regarding these chorales are done in her memory.

* Bret Aarden for kindly contributing his conversions of Palestrina Mass corpus to `music21`.

* Walter B. Hewlett and Craig Sapp of Stanford's CCARH for support.

* `Justin London` compiled and maintained the list of Second-Viennese
row forms that form the original backbone of serial.py.

* `McGill University`_ ELVIS project for including the MEI parser. Special thanks to Julie
Cumming, Andrew Hankinson, Ichiro Fujinaga, and especially Christopher Antila for contributing.

* `Manuel Op de Coul`_ has kindly gave permission to use the Scala
scale archive of nearly 4000 scales in music21.

* `Seymour Shlien`_ has kindly given permission to distribute his ABC
encodings of the Essen folksong database with music21.

* `Bryen Travis`_ has kindly gave permission to use his collection of
Bach MIDI data in `music21`. It is no longer included in the Corpus, but we
continue to thank him for his generosity.

* `Project Gutenberg`_ houses public domain music, including the quartets of Beethoven,
Haydn, and Mozart, in musicxml format which we have been able to include in music21.

.. _Donald Byrd: https://web.archive.org/web/20220610200930/https://homes.luddy.indiana.edu/donbyrd/CMNExtremes.htm
.. _Jacob Walls: https://jacobtylerwalls.com/
.. _Laura E. Conrad: http://www.serpentpublications.org/drupal7/
.. _MuseScore: https://musescore.com/
.. _Bryen Travis: http://www.bachcentral.com/
.. _Ewa Dahlig-Turek: http://www.esac-data.org
.. _Seymour Shlien: https://ifdo.ca/~seymour/runabc/esac/esacdatabase.html
.. _Manuel Op de Coul: https://www.huygens-fokker.org/scala
.. _John Chambers: http://trillian.mit.edu/~jc/music/book
.. _Jack Campin: http://www.campin.me.uk/
.. _McGill University: https://works.hcommons.org/records/c6ew2-tth07
.. _Project Gutenberg: https://www.gutenberg.org/browse/categories/4


How to Contribute
-----------------

We are always interested in working with interested musicologists,
programmers, psychologists, composers, game-designers,
performers, amateur music enthusiasts, etc. In particular, we're interested
in hearing about how `music21` helped you
advance your work ... or in problems with `music21` itself or contributions you've made.

You can contact the larger `music21` community through the `music21 list`_.

.. _music21 list: https://groups.google.com/g/music21list

In particular, if you are interested in contributing documentation, tests,
or new features to music21, please contact the lead author on GitHub or through the
list.


Licensing and Copyright
---------------------------------

The `music21` Toolkit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Music21 is Copyright © 2006-2024 Michael Scott Asato Cuthbert.
Music21 code (excluding content encoded in the corpus) is
free and open-source software, licensed under the BSD License.

The `music21` Corpus
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The BSD-licensed `music21` software is distributed with a corpus of encoded
compositions which are distributed
with the permission of the encoders (and, where needed, the composers
or arrangers) and where permitted
under United States copyright law. Some encodings included in the corpus
may not be used for commercial uses
or have other restrictions: please see the licenses embedded in individual
compositions or directories for more details.

To the best of our knowledge, the music (if not the encodings)
in the corpus are either out of copyright
in the United States and/or are licensed for non-commercial use. We also
aim to have all files out of copyright in the EU and Canada as well.
These works, along with any works linked
to in the virtual corpus, may or may not be free in your jurisdiction.
If you believe this message to be in
error regarding one or more works please contact Michael Cuthbert at
the address provided on the contact page.
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
.. _applications:


Applications and Extensions of `music21`
=============================================

`Music21` has been used in numerous research tasks already, and will continue
to offer researchers many tools with which to explore new domains.


Papers, Presentations, and Publications
---------------------------------------------------

The following papers and publications make extensive use of `music21`. Start here:

Cuthbert, Michael Scott Cuthbert and Christopher Ariza. 2010. "`music21`: A
Toolkit for Computer-Aided Musicology and Symbolic Music Data." In
*Proceedings of the International Society for Music Information Retrieval*.
https://www.academia.edu/243058/music21_A_Toolkit_for_Computer_Aided_Musicology_and_Symbolic_Music_Data


Then continue with:

Church, Maura and Michael Scott Cuthbert. 2014. "Improving Rhythmic
Transcriptions via Probability Models Applied Post-OMR." In *Proceedings of the
International Society for Music Information Retrieval*.
https://www.academia.edu/7709124/Improving_Rhythmic_Transcriptions_via_Probability_Models_Applied_Post_OMR

Cuthbert, Michael Scott, Beth Hadley, Lars Johnson, and Christopher Reyes. 2012.
"Interoperable Digital Musicology Research via `music21` Web Applications."
From *Joint CLARIN-D/DARIAH Workshop at Digital Humanities Conference Hamburg*.
https://www.academia.edu/1787946/Interoperable_Digital_Musicology_Research_via_music21_Web_Applications

Cuthbert, Michael Scott, Chris Ariza, Jose Cabal-Ugaz, Beth Hadley, and Neena Parikh. 2011.
"Hidden Beyond MIDI’s Reach:Feature Extraction and Machine Learning with Rich Symbolic Formats
in `music21`" In *Proceedings of the Neural Information Processing Systems Conference*.
https://www.academia.edu/1256513/Hidden_Beyond_MIDI_s_Reach_Feature_Extraction_and_Machine_Learning_with_Rich_Symbolic_Formats_in_music21

Cuthbert, Michael Scott, Chris Ariza, and Lisa D. Friedland. 2011. "Feature Extraction and
Machine Learning on Symbolic Music using the `music21` Toolkit" In
*Proceedings of the International Symposium on Music Information Retrieval*
https://www.academia.edu/1256514/Feature_Extraction_and_Machine_Learning_on_Symbolic_Music_using_the_music21_Toolkit

Jordi Barthomé Guillen and Michael Scott Cuthbert. 2011. "Score Following from
Inaccurate Score and Audio Data using OMR and `music21`." In *Proceedings of the Neural
Information Processing Systems Conference (Music and Machine Learning, Workshop 4*.
https://www.academia.edu/1256512/Score_Following_from_Inaccurate_Score_and_Audio_Data_using_OMR_and_music21

Ariza, C. and Michael Scott Cuthbert. 2011. "The `music21` Stream: A New Object
Model for Representing, Filtering, and Transforming Symbolic Musical
Structures." In *Proceedings of the International Computer Music Conference*.
San Francisco: International Computer Music Association, pp. 61-68.
Available online at https://www.flexatone.net/static/docs/music21Stream.pdf

Ariza, C. and Michael Scott Cuthbert. 2011. "Analytical and Compositional
Applications of a Network-Based Scale Model in `music21`." In *Proceedings of the
International Computer Music Conference*. San Francisco: International Computer
Music Association, pp. 701-708. Available online at
https://www.flexatone.net/static/docs/scaleNetwork.pdf

Ariza, C. and Michael Scott Cuthbert. 2010. "Modeling Beats, Accents, Beams, and
Time Signatures Hierarchically with `music21` Meter Objects." In *Proceedings of the
International Computer Music Conference*. San Francisco: International Computer Music
Association. 216-223. Available online at
https://www.academia.edu/243059/Modeling_Beats_Accents_Beams_and_Time_Signatures_Hierarchically_with_music21_Meter_Objects


Future Goals and Potential Applications
---------------------------------------------------

There are numerous applications for music21 that we anticipate, yet simply have not had
time to implement. Consider taking on one of these projects, or write us with new and
interesting suggestions. To contact the authors, visit :ref:`about`.

- Piano-key-visualization

- Slonimsky scale types

- Automatic clarinet fingering generation via ClarFinger font (link: www.trecento.com/fonts/)

- Automatic string fingerings.

- Indian Raga encoding: including ascending, descending, and typical presentations,
microtonal inflections, common associations, historical context.

- Multiple-simultaneous-tempi to a single tempo conversion (via tuplets).

- Palestrina counterpoint generation (via algorithms of Mary Farbood and others.).

- Beneventan chant similarity indices (thanks to the work of Thomas Forrest Kelly and the
Exultet encodings made available in `**kern` by Elsa De Luca).

- Identify potential clefs for fragmentary Renaissance and Medieval pieces that are
missing their clefs. (Use their staff-lines and minimizing number of melodic and
harmonic tritones).




2 changes: 1 addition & 1 deletion documentation/source/about/about.rst
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ to this project. Their contributions and generosity are greatly appreciated.
.. _Manuel Op de Coul: https://www.huygens-fokker.org/scala
.. _John Chambers: http://trillian.mit.edu/~jc/music/book
.. _Jack Campin: http://www.campin.me.uk/
.. _McGill University: https://hcommons.org/deposits/item/hc:12359/
.. _McGill University: https://works.hcommons.org/records/c6ew2-tth07
.. _Project Gutenberg: https://www.gutenberg.org/browse/categories/4


Expand Down
Loading

0 comments on commit ff16dc2

Please sign in to comment.