Most of the front-end UI stuff is very nice to work with these days, but the oldest things -- MIDI loading/reading/flexibility and the keyboard bookkeeping/drawing code -- is nearly unchanged since the first release, outside of haphazardly jamming new bits into the cracks. The keyboard/falling note code saw one (basically mandatory) update for the iPad release. But that only cured about a third of the madness.
Some of the upcoming features looming on the horizon like track splitting, changing hands during play, and MusicXML would be foolish to attempt without going through and making those parts of Synthesia sensible. It's kind of a fun trip down memory lane... except I want to scold my 2006 self every time I rediscover one of these bad decisions. I will try and learn from this experience.
There have even been a few freebie optimizations that have come along for the ride, if only because each new implementation is a little smarter than it was before. Fixing these things with the perspective of where Synthesia is going to be in 3-5 years from today vs. trying to write the original version as quickly as possible (just a couple years after I'd finished college and didn't really know what I was doing ) makes a huge difference!
In any event, this first part -- paying off the "debt" -- is going to make this preview take a little longer, but like all the other major system revamps I've done over the years, we get more than one benefit:
- New work is greatly accelerated.
- Adding big new features isn't nearly as scary, so I'm more likely to go in that direction.