None

More readable music, with better spacing

Posted by Adrian Holovaty on July 23, 2019

Here’s something that’s super geeky but many Soundslice users will appreciate: we’ve greatly improved our sheet-music drawing engine to do a much better job of positioning things.

Screenshot of notation

Some quick background: all of our notation is positioned automatically, responding to your device’s size and your chosen view preferences (zoom level, hidden elements, etc.). This means our engine needs to be smart at placing the dozens of possible symbols in thousands of possible situations.

The goal is to lay out all the symbols — slurs, articulations, dynamics, fermata, etc. — while avoiding clashes and making the music easy to read.

We’ve historically done an OK job at this, but two challenges have slowly built up over time. First, we’ve continually added support for many more musical symbols — complicating matters for our rendering engine. Second, our customer base has gotten larger and more sophisticated, demanding higher standards and inputting more complicated pieces of music.

We needed to rethink our system — our collision-detection algorithms — from the ground up. And I’m happy to announce that we’ve launched a brand-new engine!

Effective immediately, all music on Soundslice is positioned with our much-improved algorithms. If you’ve created slices, you don’t have to do anything to update them; they’re already using the new system.

In many cases, the improvements are subtle, but here are a few specific examples.

Probably the most common noticeable improvement concerns symbols directly above or below notes. All of the dozen-or-so markings you can stack — such as fingerings, articulations, text, trills or bowing directions — are now properly positioned so that they don’t collide:

Screenshot of notation

Our old engine often had problems with slurs especially. We’ve fixed many slur positioning problems:

Screenshot of notation

For music with multiple voices, layout gets particularly complex. We’ve made great progress in this area:

Screenshot of notation

Even in cases where there weren’t collisions, we’ve improved positioning to be tighter and make better use of space. A good example is ottava symbols (8va and 8vb). Previously, they were always allotted a dedicated “row” of space, which could lead to comically large gaps:

Screenshot of notation

Finally, here’s an especially fun one, an extreme edge case that comes from our internal test collection. (The music is nonsensical; this is merely meant to challenge our system.)

Screenshot of notation

Much better! Of course, there’s still more work to do, because music notation is a complex beast. But we’re confident we’ve made some great strides with this update, and we’re in a strong position to continue improving the engine. If you ever find specific music that doesn’t look good in Soundslice, please get in touch with a link or screenshot. Onward!

Comments

Post a comment

Log in to post a comment.