Skip to content

v0.2.0

Compare
Choose a tag to compare
@github-actions github-actions released this 06 Sep 02:08
· 1173 commits to trunk since this release

Anklang 0.2.0

Hardware and System Requirements

  • Linux - the Anklang deb and AppImage are based on Ubuntu 20.04.
  • Packaged sound engine binaries support SSE-only or AVX+FMA optimizations.

Documentation

  • Integrated documentation from JS components into the user manual and API reference.
  • Various improvements to the documentation and architecture descriptions, as well as manual refinements were made.
  • Added continuous API reference documentation generation to the CI: https://tim-janik.github.io/docs/anklang/index.html
  • Integrated JavaScript docs into Poxy docs and search (API reference).
  • Added dedicated documentation sections for the ClipList, PartList and PianoRoll.
  • Integrate PDF manual builds using TeX, automated via CI.
  • Added integration for JsDoc and TypeScript annotations.

Audio Synthesis

  • Added support for clap_event_transport_t, fixes #5. [stw]
  • Implemented non-linear mapping for the BlepSynth ADSR times. [stw]
  • Fix BlepSynth cutoff frequency modulation for its filter, pass frequencies in Hz. [stw]
  • Implemented the CLAP draft extension for file references.
  • Incorporated Freeverb by Jezar at Dreampoint with damping mode fixes.
  • Added a Jack PCM driver based on Stefan Westerfelds code and howto.

ASE

  • Automatically stop audio playback with the new -t time command line argument.
  • Added --class-tree to print out the class inheritance tree.
  • Added -o audiofile support for capturing output into WAV, OPUS and FLAC files.
  • Added --blake3 FILE to test Blake3 hashing.
  • Added SortedVector to unify several vector sorting code paths.
  • Fix potential undefined behavior in the Pcg32Rng code, when left shifting a 32bit value by 32 bits. [stw]
  • Added various code cleanups and fixed imports.
  • Adjusted main loop PollFD handling to avoid engine hangs after UI exit.
  • Added Loft, a lock- and obstruction-free concurrent memory allocator.
  • Added a very fast multiply-with-carry PRNG, with a period of 2^255.
  • Fixed atexit memory leaks, proper handling of nullptrs and compiler sanitizers.
  • Implemented single Project/Engine relation and new API for activating and deactivating projects.
  • Properly implemented garbage collection of remote JSONIPC handles.
  • Improved performance by prefaulting heap and stack pages and malloc tuning.
  • Enabled link time optimization for production builds.
  • Implemented low-latency scheduling for the synthesis engine via sched_* or RtKit.
  • Implemented remote reference counting for the JSONIPC API.
  • Introduced automatic backup creation when saving project files.
  • Improved serialization for projects, allowing dedicated resource file inclusion.
  • Integrated building of releases with SSE + FMA support into ASE.
  • Updated the code to compile cleanly with g++-12, libstdc++-13 and clang++-15.

User Interface

  • Added support for context help via F1 key in Lit components (handling shadowRoots)
  • Fix flashing of unstyled content in Chrome and layout artefacts during context menu popups.
  • Adapted mouse wheel normalization and sensitivity to modern browsers.
  • Improved tooltips and change notification handling on properties.
  • Added support for moving and copying (with CTRL key) piano roll notes using the mouse. #16 [stw]
  • Support resizing multiple selected notes at once by dragging with the mouse in piano roll view. #15 [stw]
  • Unified all (non-Vue) CSS styles into a single build and simplified its structure.
  • Updated all icon sets and UI fonts.
  • Implemented caching for static assets like stylesheets and invalidation handling via content hashes.
  • Added a new warm grey palette based on ZCAM Jz (lightness) steps, which allows subtler color gradients to enhance overall appearance.
  • Added the latest modern-normalize.css style resets to improve consistency across browsers.
  • Added TypeScript annotations and type checking to improve UI JavaScript code quality.
  • Added support for state toggling using LEFT/RIGHT/UP/DOWN keys to Switch inputs.
  • Switched the main font to the variable font variant of InterDisplay.
  • Implemented simple and fast SCSS extraction of JavaScript css`` literals.
  • Moves SCSS snippet processing to postcss at build time.
  • Implemented a reliable reactive wrapper that keeps Lit components and C++ components in sync.
  • Added tracklist scrolling and improved tracklist styling.
  • Added sound level meter rendering from telemetry data in the Track View component.
  • Introduced caching of (remote) properties across several different web components.
  • Improved piano roll layout by moving to HTML grid.
  • Rewrote and extended all piano roll note editing tools.
  • Reimplemented the Knob component to use PNG sprites instead of SVG layers.
  • Added support for Zoom In/Out/Reset functionality in the menubar.
  • Improved support for click-drag menu item selection in various menus, including track view, piano roll and device panel.
  • Fixed Vue 3.2.28 breaking $forceUpdate() calls before mounting.
  • Several web components were ported from Vue to Lit to simplify code and better efficiency.
  • Eliminated shadowRoot uses for most components, saving resources.

Packaging

  • Added fix so all AppImage executable properly operate $ORIGIN relative.
  • Fixed missing dependencies in AppImage builds so all needed libraries are included.
  • Improved version handling and added missing Git info to distribution tarballs.
  • Streamlined asset builds and other technical aspects of the release process.
  • Ensure release assets are always built in the same reproducible environment.
  • Started regular Nightly releases via the CI toolchain on every significant trunk merge commit.

Testing

  • Introduced end-to-end testing using X11 with headless runs.
  • Added replay functionality via Puppeteer of DevTools event recordings.
  • Added clang-tidy to the CI rules to improve code quality
  • Added regular Arch Linux test builds.