github soul-lang/SOUL 0.9.21

latest releases: 1.0.92, 1.0.82, 1.0.80...
3 years ago

Version 0.9.21

This version includes lots of internal re-working of the Performer engine, with a focus on efficiency (reducing overhead per block) and the groundwork for our Venue implementation (a standardised way of submitting SOUL code to run on external devices).

There have been no additional SOUL language features, but overall performance improvements will be the most visible change.

  • HEART parameterised blocks

    The HEART syntax has been extended to support parameterised blocks. These are now used for various code generation stages (e.g. ternary operators) and map nicely to phi functions in the llvm backend.

  • Performance Improvements

    For patches with a large number of parameters, there was significant overhead for sparse streams (interpolated parameters). There have been modifications to the code generator to pass IO parameters separately to the rest of the state, and modifications to reduce the overhead when calculating ramping parameters.

    Internally the Performer interface has reduced overhead which gives around a 10% improvement when working with smaller block sizes. Overall we see a 10-15% improvement in throughput for typical small patches (such as the reverb example).

  • Patch API Changes

    Made some changes to the SOUL-patch API to make the COM-style classes more friendly to language-binding generation tools.

  • Library code refactoring

    Some non-soul-specific helper functionality like audio channel buffers, MIDI, and various other misc classes have now been refactored to use a 3rd-party library CHOC, which is found in the Source/3rdParty folder. This is mainly an internal refactoring, but a longer-term benefit of this is that these classes are more suitable for use by external code that interfaces with the (coming-soon!) new Performer and Venue APIs.

Don't miss a new SOUL release

NewReleases is sending notifications on new releases.