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

☑ Implement the application core in C++20 and the GUI as a web front-end, utilizing web browsers or Electron

☑ Implement separate audio synthesis threads with MIDI device support

☑ Support third-party plugins via CLAP 🗩

☑ Pianoroll editing and ☐ MIDI note scripting

☑ Add clip launcher with ☐ play order configuration

☑ Add devices for synthesis: BlepSynth

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

☐ Add arranger for clips and (stereo) samples

☐ Add automation lanes with automation event recording

☐ Add mixer to adjust solo, mute, panning, volume per track

☐ Add mixer side chains or effect tracks

☐ Support third-party plugins via LV2

☐ Add standard audio library for various instrument types

☐ Implement a quality MIDI file importer with mappings into the audio library

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