Skip to content

tim-janik/anklang

Repository files navigation

Version License Test Build Downloads Live Chat

ANKLANG

→ Audio Synthesizer and MIDI Composer ←

Documentation · Github · Issues · IRC

About the Anklang project

Anklang is a digital audio synthesis application for live creation and composition of music and other audio material.

The project is a revamp of several former audio projects by its two main authors and aims to realize a coherent, solid amalgamation for composition and interactive creation of synthesis music.

Usage

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.

Roadmap

Roadmap Discussions: Feedback & Ideas: #52

Phase 1: Foundation & Architecture (Completed)

☑ Application Core in C++20, with WebUI (HTML, CSS, JS based front-end GUI)

☑ Electron based WebUI & Vite-based UI build system

☑ Migrate Vue2 → Vue3; migrate Vue3 → Lit

☑ Use Hybrid Architecture (C++23 Backend → Lit Frontend)

☑ Reactive TypeScript IPC bindings

☑ Migrate Lit Frontend → SolidJS (partial)

☑ Replace old internal DSP engine with Tracktion Engine (regressions)

☑ Tracktion Engine integration as primary audio/MIDI framework (partial)

Phase 2: Engine Migration (Current Focus)

☐ Project Save/Load integration with Tracktion Engine, self-contained file copies

☐ Migration of Project, Track, and Clip models to Tracktion architecture

☐ Implement test sound generation and playback

☐ Add JACK audio support via trkn

☐ Adaptation of synthesis devices & effects (BlepSynth LiquidSFZ Freeverb Saturation)

☐ Implement file selection UI for liquidsfz

☐ Add effects (and more devices): Chorus Delays Distortions Reverberation FluidSynth

☐ Adjust Settings dialog to new engine

☑ Real-time audio/synthesis monitoring (uses outdated term "Telemetry")

☐ Revamp Audio Device selection for new engine

Phase 3: Core DAW Features

☑ Pianoroll editing and timeline navigation

☐ UI Polish (Electron lifecycle, focus trapping, and JS → TS migration)

☐ Implement device editor (add/remove/trkn-devices)

☐ Device management and property UIs

☐ MIDI note scripting

☐ MIDI file importer for multiple tracks

Phase 4: Production Suite

☐ Advanced Clip Launcher (play order, duration configuration)

☐ Full Mixer (Solo, Mute, Pan, Volume), stereo bus routing, per-drum effects

☐ Automation lanes with real-time event recording and modulation

☐ Per-device modulators / LFOs / envelopes / step sequencers

☐ Effect chains and preset management with macro parameters

☐ Add sample downloader and sound library integration

☐ Add standard audio library for various instrument types

☐ Convenient audio track support (WAV via drag-and-drop)

☐ Map MIDI file imports to the audio library

Phase 5: Plugin Ecosystem & Beyond

☐ Third-party plugin hosting (VST2, VST3)

☐ Support third-party plugins via LV2

☐ Support third-party plugins via CLAP 🗩

☐ AI-assisted composition and generative synthesis tools

☐ Advanced spectral synthesis and granular sampling

Development

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.

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.

Star History

Star History Chart