As part of the Elk Audio OS 1.1 release, we are also releasing an updated version of Sushi.
This is more of a maintenance release that previous releases, but still includes 2 major new features - Sushi as a library and support for Windows, as well as a number of smaller features, bug fixes and general improvements.
We also aim to periodically push the development branch of Sushi to github between releases, so you can test out new features before we do our typical big yearly releases.
Notable new features
Sushi as a library
Internally, sushi’s code has been heavily restructured to allow sushi to be built as a library that can be included in other projects. This allows the use of Sushi inside another process that already has an audio callback, like an audio plugin. It includes a new audio frontend for that particular case. The library feature can also be used to include Sushi in a windowed application, giving a UI to sushi.
Windows
Sushi now builds and runs under Windows. This will enable also Windows developers to do most of the development for an Elk Audio OS system on their preferred platform.
It uses the Portaudio frontend to connect with most common audio APIs on Windows. Note that multi threaded audio processing is not supported under Windows due to limitations in the twine implementation.
Other features
The logging framework from Sushi has been broken out into its own project named elklog GitHub - elk-audio/elklog. It’s a wrapper around the tried and tested spdlog framework but adds some notable features such as real time safe logging for logging from the audio thread. It is released under a very permissive open source license so you can use it in your own projects.
Full changelog:
New Features:
- Support for using Sushi as a library
- Windows support
- C++20 support
- Updated Elklog
- Updated Twine to 1.0
- Warning suppressor library included
Fixes:
- Improved handling of audio pause / resume
- Xrun detection in audio frontends
- Improved handling of processor add/delete if audio thread is not running
- Better event lifetime management
- EventDispatcher thread could stall if system clock changed
- Fix for Vst2 plugins with > 16 channels
- All example config files now uses “initial_state” to set initial parameter values