For the last week and a bit I’ve been flat out working towards releasing a very minimal version of Cantabile 3. Things have progressed nicely, here’s an update…

It’s amazing how much work it takes to get a piece of software out the door. Since deciding to do a minimal version of Cantabile I’ve completed over 70 tasks — some trivial, some not so much. Sometimes it feels like for every task I tick off the top of the list I’m adding another two to the bottom. What’s clear though is that having an imminently achievable goal goes a long way towards getting things done.

As it stands, this version of Cantabile is pretty much finished and includes all the features mentioned in my previous post about it. I’ve fixed a ton of bugs, polished off every feature that will be included, written some user guides, added crash reporting, completed the setup program, integrated licensing and implemented update checking. All that’s left really is more testing.

Giving it a Name

I didn’t want to call this early release either Solo or Performer because it doesn’t have the features of either. Also I wanted something that will clearly distinguish it from the official releases. So this first build will be called “Cantabile 3 Preview 1”. How many preview versions there will be is yet to be seen.


The preview builds will only be available to licensed users of Cantabile 2 and will only run with a valid Cantabile 2 Solo or Performer serial number.

For the time being these builds will be free to licensed Cantabile 2 users. Please note though that the final product will not be a free upgrade. There will be an upgrade fee to continue using Cantabile 3 once it gets close to feature parity with version 2.

Also, these preview builds are time limited to 30 days from their build date. This is not so much a licensing restriction as a means to make sure older version don’t hang around — expect there to be a new build before the 30 day limit expires.

Update Checking

Since I’m hoping to iterate fairly quickly on subsequent versions/builds, update checking was an important feature to get working in this first version. Unlike Cantabile 2 that pops up message when a new version is available, Cantabile 3’s update notification is more subtle — an icon in the status panel:

Clicking it shows what’s new:

Crash Reporting

While I’ve made every effort to iron out bugs, there’s always issues with software like Cantabile once it gets out into the real world. To have any hope of fixing these issues, crash reporting is essential. The new crash reporter is similar to the one in Cantabile 2, but now runs as a separate process and doesn’t require composing an email to send the crash reports.

Also, some errors are no longer fatal and Cantabile can continue running:

Crash Recovery

On the topic of crashes, Cantabile 3 includes some new crash recovery options. In Cantabile 2 after a crash you had the option of reloading everything as before (and risking hitting the same crash), or discarding all settings (and losing all globally configured options). Cantabile 3 gives more fine grained control:

Getting Started Wizard

To help get started, there’s now a getting started wizard that will step you through configuring Cantabile for the first time. It’s basically a couple of the options pages simplified and repackaged into a wizard screen, but makes it a lot easier to get up and running:

Setup Program

I tried building an MSI installer for Cantabile but decided it was just too complicated. Previous versions of Cantabile use NSIS for installation, but I was never really happy with it and so went looking for another alternative. In the end I decided on InnoSetup and really like it. It does everything I need to install Cantabile with little fuss and installation is not much more than a couple of clicks. The setup program also handles installing the correct version of .NET if you don’t have it installed already (unlikely).

User Guides

Rather than writing a formal user manual for Cantabile 3 I’ve decided at least for the moment to document it as a series of guides — instructions on how to perform some task or an explaination of a particular part of the program. I’ve made some good progress on this with all the major details now covered.

Check out the User Guides.


As mentioned above, all that’s really left is more testing…