MusicXML! Better sheet music! These are the things Synthesia 11 will be made of!
This is a large development effort that will be segmented into several major feature updates. So you guys will end up getting to see the new stuff on a pretty regular cadence. Here is the break-down you should expect:
Platform Update - Complete, released in 10.3! (Mar-2016)
It has been a long time. We used to do these yearly when it was a good opportunity to update all our tooling and libraries to the newest versions. This one is a biggie! It was finally time to cut Windows XP and Mac OS 10.6 compatibility so that we could finally get our hands on full C++11/14 (and libc++) support across all our platforms. It was a steep price, but modern C++ is practically a different language that brings enough developer convenience, safety, simplicity, and performance that it was (well!) worth the cost of backwards compatibility. At this point the code has been dramatically modernized: probably more change (going on for months now) than between any two consecutive builds. Everything will look exactly the same, but under the hood there has been a tremendous boost to all of the areas I just mentioned.
You may notice I've been speaking in the past-tense. This preview is just wrapping up and should be ready (and posted) in a few days.
(EDIT: This roadmap has taken so long that we've naturally bumped our requirements again, several times since this post. So Vista / macOS 10.7 are no longer the minimum requirements.)
Bug Fixes / Quality Pass - Complete, released in 10.3! (Sept-2016)
I've tried to keep the task list absolutely clear of anything that isn't sheet music related this time around, but the usual assortment of bugs and rough edges have cropped up. I've been tackling a few of these during the platform update but there are still 29 small items on the list to fix before pressing onward.
Off-screen Sheet Music Compositing - Complete, released in 10.4! (Nov-2017)
The sheer number of new symbols that Synthesia will be using while drawing its sheet music means it's probably best to migrate from a rasterized texture containing a limited set of glyphs to the way everyone else does it: a music font. There are a handful of nice (freely available) notation fonts that we'll get to evaluate. This also means new, anti-aliased drawing routines for beam/slur/tie primitives.
The upcoming complexity of the notation will finally tip the scales over to making it worthwhile to render it "offline" (in memory) once, and just draw it to screen as a single, big texture. (Compare against today's method where each stem, note head, dot, accidental, etc. are all sent to the graphics hardware separately each frame.)
Pros: Drawing speed no longer depends on the complexity of the song. Sheet music becomes essentially "free" performance-wise. (This is good for tablets!) And, because the sheet is already being drawn as an image, we might even be able to tinker with saving "pages" out to disk. Those experiments would only output a raster format like PNG, rather than a vector format like PDF, but it will still be interesting.
Cons: Smooth sheet music scaling will probably have to change to a fixed number of size steps. Instead of dragging the separator bar, there will be + and - buttons.
Multiple Lines of Notation - Complete, released in 10.6! (Mar-2019)
This is one of Synthesia's most-requested features.
Being able to turn off the falling notes and use full-screen sheet music means being able to do everything you can today with the falling notes (bookmarks, loops, etc.) right on the sheet music. This will be... interesting. Probably the biggest visual change to the play screen in Synthesia's history.
Bare-bones MusicXML Parsing - Complete, released in 10.8! (Oct-2021)
Step #1 is to be able to load the files like we load MIDI today. Starting with typical MIDI-like note information. After this update, the falling notes should behave exactly correctly for MusicXML files.
Fully-featured MusicXML-based Notation
Step #2 is using all the extra musical intent stored in MusicXML files to improve the sheet music dramatically. This is going to roll out over several updates and will eventually make the notation appear just how the arranger intended it.
This includes all the currently missing bits:
- Stem directions, Partial support in 10.7
- One hand per staff
- Beaming across more than two notes
- Triplets
- 32nd notes
- Ties/slurs
- Text annotations ("allegro", lyrics, finger hints, measure numbers, etc.)
- ... and lots more.
I've been talking about MusicXML support for a few years now. It's exciting to finally break ground and get this started!