About this project

Anklang is a digital audio synthesis application designed for live creation and composition of music and other audio material. It is a revamp of several former audio projects by its two main authors, aiming to realize a coherent, solid amalgamation for composition and interactive creation of synthesis music. The project can be built on Linux by cloning the repository and running `make`. However, it is easier to download one of the self-contained AppImage release builds, mark it executable, and run it. ## Development ### Roadmap As it grew larger, the roadmap has been moved to [ROADMAP.md](ROADMAP.md). ### Project Structure - `ase/` - C++23 backend sources (`*.c`, `*.h`, `*.cc`, `*.hh`) - `ase/api.hh` - Public API for backend <-> frontend IPC - `trkn/` - Vendor sources (tracktion_engine, JUCE) - `ui/` - Web UI (Vite, Tailwind, SolidJS) - `jsonipc/` - IPC for JSON messages between backend and browser ### Building & Testing - Build: `make` - Run all tests: `make check` - Run specific test: `make check-<test_name>` (e.g., `make check-string_funcs`) - Direct test execution: `out/lib/AnklangSynthEngine --test <test_name>` - List available tests: `out/lib/AnklangSynthEngine --list-tests` ### Test Guidelines - New code requires proper tests - Avoid tests for what the type system already guarantees - Only use methods available on the interface (extend `*.hh` files if needed) ## License This application including the audio engine are licensed under [MPL-2.0](https://github.com/tim-janik/anklang/blob/trunk/LICENSE). However, plugins that can be used with this application or may be downloaded via extension packs, may fall under different licensing terms, such as GPLv3 or proprietary licenses.