There is still more work that can be done, work which I think could improve CPU usage a lot, but even in this release I have seen up to 80% lower CPU usage for songs with many instruments.
The old "Recalculate latency on the fly..." option has been removed. This functionality is now permanent, but the old problems with it should be fixed now.
A new option is to set the internal block size. The default value is, and was, 64, which should be an excellent value for high automation accuracy, but 64 also uses a lot of CPU. By setting this value to e.g. 1024, you are likely to see at least a 50% drop in CPU usage. Note that a higher internal block size also means higher memory usage, which by itself can cause lower CPU usage due to cache misses. In other words, a higher block size does not automatically mean a lower CPU usage, so you might want to experiment.
Changes 5.9.48 -> 5.9.50:
- Audio: Make internal block size configurable.
CPU usage is reduced significantly when the
internal block size is increased. - Jack: Show error message if changing jack block
size during runtime. - Audio: Reorganized the audio engine in order to
significantly reduce CPU usage when there's many
sound objects. - Audio: Remove the "Recalculate latency on the
fly..." option since it is not necessary anymore. - Editor: Don't move cursor when stopping to play
block and jack transport is enabled. This fix also
turns off the ability for another program to set
current editor block and line when not playing. - Audio: Share output buffers between instruments to
decrease cache misses. Significantly reduces CPU
usage when there's many instruments. - Sampler instrument: Fix displaying empty waveforms
in the editor (very rarely though) when automating
pitch or stretch. - System: Updated Qt to 5.12.2.
- GUI: Color tweaks.
- System: Add missing Qt5Webkit library for QT5
build. (Teteros) - Sample player: Move the "Granulate" checkbox to the
top of the next column. - Instrument: Adjust displaying ratio text in the
compressor. - API: Removed doAlwaysRunBuses, setAlwaysRunBuses