Skip to content


Repository files navigation


notation without bars

A score with colored blocks and squiggly lines Example source

Neoscore is a Python library for creating scores without limits. While other notation software assumes scores follow a narrow set of rules, neoscore treats scores as shapes and text with as few assumptions as possible. In neoscore, staves and noteheads are just one way of writing. Its programmatic nature makes it especially useful for generative scoremaking, and it even supports experimental animation and live-coding!

Quick Start

Neoscore requires a minimum Python version of 3.7. If you don't have it you'll need to first install it, then set up a virtual environment with it. In that environment you can then install neoscore with pip using pip install neoscore, after which you should be able to run this example:

from neoscore.common import *
Text(ORIGIN, None, "Hello, neoscore!")

If you have installation problems, please see our troubleshooting guide.

Visit for thorough documentation and dozens of examples. You can find more elaborate examples in this repository here.


Neoscore was principally developed by Andrew Yoon, originally begun in 2016 at The Recurse Center then revived and released in 2022 with substantial support from Craig Vear and the DigiScore research project. Additional support was provided by Prashanth Thattai Ravikumar. Many of neoscore’s design choices were informed by the excellent open source notation projects Abjad, Lilypond, and MuseScore.

The Digital Score project (DigiScore) is funded by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (Grant agreement No. ERC-2020-COG - 101002086).

Logo for the European Research Council

Get your name added here by getting involved!