As you may know I’ve been rebuilding Cantabile’s audio engine. Now that the work on the engine itself is pretty much done, I thought I’d start a new topic for the next phase of work.
There’s a long discussion here covering the work done so far, but to summarize:
- Brand new empty project
- New execution model with automatic graph node clustering
- New thread pool implementation for more efficient spreading of load across multiple cores and better awareness of low-power e-cores.
- New approach to MIDI handling (everything is now “pull” rather than “push”)
- New real-time heap implementation
- Simplified and improved internal transport position handling
- Improved VST 3 plugin hosting - especially around parameter handling
- Updates to the underlying C++ template classes
- All internal string handling switched from utf-16 to utf-8
- Lots of decoupling objects for easier unit testing
- Some functionality that doesn’t belong in the engine moved out
- Reworked logging framework
- Comprehensive set of unit tests (over 1,500 tests in all)
- Lots of code clean up and other miscellaneous refactoring
This next phase will be mostly integration testing. The first of these tests yesterday was a simple confidence test that the engine could start/run/shutdown.
Today:
- integrated the engine logging services with the test bench
- actually got it to produce sounds (metronome ticks) - watch video.
Next: more tests like this.