Skip to content

1.0.2562

Compare
Choose a tag to compare
@cesaref cesaref released this 19 Jun 04:44
· 106 commits to main since this release

This release includes a major rewrite of how the application discovers audio and midi devices, removing the dependency on JUCE. The library and application builds of Cmajor do not use JUCE, although the project is capable of generating a JUCE project as an export target.

The Cmajor plugin is however a JUCE project. If building from source, the plugin is not built by default, and the -DBULD_PLUGIN=ON option must be specified to cmake. If the plugin is being built, a path to JUCE must be specified using -DJUCE_DIR=... option

General code tidy up

We have found that some uses of the library with stricter warnings enabled lead to warnings about unreachable statements, and issues around const char * conventions for string literals. We've resolved these issues, and updated our build settings to catch regressions in this area in future.

Drop binaryen support

The codebase had two ways of generating web assembly - via the LLVM backend, or using a custom web assembly generator. The LLVM backend produced superior code, but there were concerns the library would be too large to support Cmajor JIT in the browser. We have now completed this work, and determined that the LLVM backend is suitable for browser based compilation, and so have removed the custom web assembly generator.

Various CLAP export changes

The CLAP exporter now defaults to using a webview for the patch worker. In addition, the exporter now uses bigobj on windows platforms.

Updates for the default GUI to support non-linear parameter scaling

Parameters can now specify a mid value in their annotations. This specifies the value of the parameter in the central position of the knob. The default knob value is now scaled in a power series so that it passes through the mid value at the middle of it's travel. If no mid value is specified, the knob defaults ot the previous linear behaviour.

Changed type rules around wrap<> and clamp<> types

Previously, wrap and clamp types could not automatically converted to float, unlike int. This lead to some confusion when migrating algorithms from int to wrap. This change will mean some situations where previously an explicit cast was required is no longer needed.

Bug Fixes

Resolved a problem with the new audio interface failing to update the sample rate correctly

Resolved a problem where certain data types were not being correctly transformed into and out of the runtime. This mainly affected the C++ translation (JUCE plugin builds for example). Issues were fixed related to bool vectors with the JIT backend, and with void events with web assembly.

Solved a problem where output midi events were not being correctly timestamped when running with large block sizes within a plugin context.