Things might have seemed quiet on the Cantabile development front lately but I’ve been busy and thought I’d provide an update.
The main thing I’ve been working on is a new version of GuiKit - the UI library that Cantabile uses. Since this is a pretty big change, I’ve been reluctant to do anything major in Cantabile that will then need to be ported. As of yesterday I basically got GuiKit finished to the point where it’s ready for use in Cantabile.
Also, .NET 5 is out now and looking pretty slick so I’ve decided to roll a whole bunch of things into one biggish update that I’m calling “Technology Update 2021”. This will include .NET 5, GuiKit 3 and various other library and toolchain and updates.
Most of these changes won’t bring new features per se but they will provide a good foundation to build upon soon after. In the meantime the main improvements will be:
- .NET 5 - considerable performance improvements.
- GuiKit 3 - cleaner, simpler, leaner and better in so many ways (I can’t wait till Cantabile is moved to this)
- New theming engine makes pretty much everything themeable.
- Theme hot swapping - no need to restart to switch themes
- UI hot scaling - no need to restart to adjust scaling (and possibly independent scaling for different parts of the UI).
- Pixel accurate layout engine will fix various display artifacts in the current version.
- Improved touch screen support.
- Improved hi-dpi and multi-monitor support
- New JSON serialization library (JsonKit) supports trimming which should reduce the size of song and set list files considerably.
- New language translation tools and library (TranslateKit) will make things easier for translators.
- Better native control hosting should improve the plugin editor dialog and in future allow hosting of plugin editors in Cantabile’s main window.
- Much improved UIAutomation support will make Cantabile’s UI programmable from third party tools and will improve support for accessibility tools like screen readers.
- Better exception handling and a new crash reporter.
The biggest visible change will be the crisp new UI. Here’s a screen shot of one of the GuiKit3 test screens showing the new look. (there’s also a light theme and you can create your own if you’re keen)
Finally since all this is going to require a lot of testing this is a good opportunity to clean up some riskier areas that I’ve been putting off. ie: time to pay off some technical debt.
The next step is to port all of Cantabile’s custom controls to GuiKit 3 - things like the on-screen keyboard, the wiring view, midi activity indicators, level meters etc… I’m guesstimating that’ll take about a week or two.
If you’re interested, I’m tracking all this in Trello - see here and will post progress updates here too.