Engine Rebuild - Phase II

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.

4 Likes