Since the last time I wrote about Cantabile 3 I’ve decided to take a completely new approach to it and for the last 8 or 9 months I’ve been working on a complete ground-up rebuild — from the audio engine to the user-interface and everything in between.
There were a few driving forces behind this decision:
- Getting Rid of the Baggage. Cantabile’s purpose and requirements have changed quite a bit over the years. By severing ties and sacrificing some forward compatibility it gives me a fresh slate to build what Cantabile needs going forward without worrying about breaking existing installations. I’ll continue to support Cantabile 2 in the interim, but all new development will be on Cantabile 3.
- A Better Language. Cantabile 2 is about 250,000 lines of C++ code. C++ is a great language for raw performance and low level stuff, but not so great for building user-interfaces and other more mundane functionality. For Cantabile 3, everything except the core audio engine is now written in C# — a beautifully expressive, elegant and highly productive language. In no small part, C# is the reason I’m enjoying working on Cantabile again.
- Cross Platform Compatibility. About 90% of Cantabile 3’s code base is now platform independent. This should make porting to other platforms (OS-X in particular) a lot easier. The plan is to release a Windows version and then concentrate on an OS-X version.
- Re-engineered Core. In the process of building previous versions of Cantabile I’ve learned a lot. By starting again I can throw away the mistakes and start fresh with what I now know works best. Cantabile’s new audio engine is smaller, lighter, faster and totally lock-free. It makes better use of multi-core processors and has vastly improved audio and MIDI routing capabilities.
- A Cleaner, More Minimal User Interface. Cantabile 2’s Office style user interface has served it’s purpose well. The downside is that it’s fairly high maintenance, graphically intensive and not well suited to other platforms. Cantabile’s new UI is very minimal and a lot cleaner (it looks more like an Apple than a Microsoft product). Also, it’s based on a custom built user-interface toolkit that makes maintenance almost trivial and also includes provisions for touch and high-resolutions screens.
On the downside, there will be some feature casualties. Obscure features that don’t serve Cantabile’s primary goal as a live performance host will probably be dropped (eg: shared program banks and the morph and randomize tools).
Much of the hard work is done, but there’s still quite a way to go.
Stay tuned, more info coming soon…