🎵 Simplified music notation
Switch branches/tags
Nothing to show
Clone or download
Latest commit ce718f4 Sep 23, 2018
Failed to load latest commit information.
media Update staff Sep 23, 2018
.travis.yml Change python version Sep 16, 2018
README.md Update README.md Sep 20, 2018
parse.py New staff Sep 23, 2018
render.py New staff Sep 23, 2018
requirements.txt Add barebones code Sep 16, 2018


🎵 notation

Build Status

Reading music is hard.

I got frustrated with the inconsistencies and (what I perceived as) unnecessary complexity in modern music notation. All I want to know is where to put my fingers. Note length, tempo, velocity, progression and other stuff are minor worries in comparison. Those things can be felt, without learning.

I wanted to create a simple and consistent music notation, along with parsers, converters and whatnot. Turns out writing beautiful renderers is tough, and it can get quite ugly with edge cases and the variety of sheets out there. I haven't yet had the motivation to finish anything considerable, so instead for some peace of mind, I'm documenting the envisioned notation here.

This is written from the perspective of a clueless piano beginner who just wants to play.

⚠️ This is a work in progress, so many things will likely change.


I haven't spent much time on tuning the rendering; this is just to give a rough idea.

Modern notation


This notation


I've included a barebones parser and renderer. I'm trying to keep the code as short and simple as possible, and focus on ironing out the worst of issues. I don't want to deal with wrapping, justification and the plethora of other visual adjustments at this point.

Here's the basic usage:

./parse.py song.mxl | ./render.py





Note value and accidental are encoded in the shape of the note.

Natural, sharp and flat notes have the following shapes:



Rests aren't explicitly displayed.

Stem length

The stem is horizontal, and as long as the note duration.