Skip to main content

Render music21 scores in jupyter notebooks

Project description

ShowScore

Music21 is an excellent library for working with music notation in Python. However, to render sheet music you need to install an external program and configure paths. ShowScore can render scores beautifully, without any dependencies (and faster to boot!). We do this by using OpenSheetMusicDisplay, an open-source music renderer written in JavaScript.

Usage

from music21 import *

# Your ABC notation as a string
abc_notation = "X:1\nT:My Tune\nM:4/4\nK:C\nCDEF|G2G2|A4|G2F2|E4|"

# Load the ABC notation from the string
score = converter.parse(abc_notation)

from showscore import show
show(score)
from showscore import show
from music21 import corpus
score = corpus.parse('bwv565')

# score will be rendered below cell:
show(score)

# open score in new tab:
show(score, tab=True)

Options

  • showscore.backend - currently one of 'canvas' (default) or 'svg'
    • canvas is more performant and less laggy - but won't resize automatically
    • use showscore.backend = 'svg' to use svg renderer
  • show(score, title=True, tab=False)
    • title - false to hide title
    • tab - open in new tab rather than inline

Known bugs

Some corpus pieces give rendering errors. E.g. 'bach/bwv846' has an error in Chrome. These are bugs in the OS If a piece fails to render it will display the error message in red.

  • Several pieces (e.g. 'bach/bwv846') will display 'Error rendering data:TypeError: Cannot read properties of undefined (reading 'TempoExpressions')' this is a bug in OpenSheetMusicDisplay. For now use the fix below.
  • If you see anything else open an [Issue
from music21 import corpus
from showscore import show
score = corpus.parse('bach/bwv846')  # Prelude in C

# filter out metronome marks to fix rendering error
for el in score.recurse().getElementsByClass('MetronomeMark'):
    el.activeSite.remove(el)
    
show(score)

Tested in

  • VSCode Notebooks
  • Jupyter lab

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

showscore-0.1.4.tar.gz (300.1 kB view details)

Uploaded Source

Built Distribution

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

showscore-0.1.4-py3-none-any.whl (301.4 kB view details)

Uploaded Python 3

File details

Details for the file showscore-0.1.4.tar.gz.

File metadata

  • Download URL: showscore-0.1.4.tar.gz
  • Upload date:
  • Size: 300.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for showscore-0.1.4.tar.gz
Algorithm Hash digest
SHA256 587c815852ff15aafdc8f9e5956e4e5cadef711398be8cec970979cccdaafa60
MD5 6d06c26c9a4062fd2d159f619e50f007
BLAKE2b-256 e1dd19d38e51ed381f6eafda9afca17cef539015a94b23c083bb3a8e0453e0e5

See more details on using hashes here.

File details

Details for the file showscore-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: showscore-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 301.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for showscore-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d2cd3e38f8d703dbcb7b7262724a9916b3649e001bb2377b0d14d7ea1f622163
MD5 2eef093f90af3d4f5933bdbbc49926f6
BLAKE2b-256 cdce595ac594b1d3e6deb87be50dde63565d5624090dbcdda84bfebaeddfff45

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