Skip to content

Cheatsheet

LX Audiolabs edited this page Aug 9, 2026 · 2 revisions

Cheatsheet — AURA

CLI

# Scaffold
cargo aura init [path]                       # init in existing empty dir (name from dir)
cargo aura new <name>                        # new single-plugin workspace
cargo aura new <name> --vst3 --lv2           # with VST3 + LV2 support
cargo aura new <name> --kind analyzer        # kind: effect (default), effect-mono, analyzer
cargo aura add <name>                        # add plugin to existing workspace
cargo aura add <name> --vst3 --lv2
cargo aura add-ui <name>                     # add shared Slint UI crate

# Build
cargo aura build --clap -plug <name>         # CLAP
cargo aura build --vst3 -plug <name>         # VST3
cargo aura build --lv2 -plug <name>          # LV2
cargo aura build --clap -plug a b c          # multiple plugins
cargo aura build --clap -plug <name> --release

# Install
cargo aura install --clap -plug <name>
cargo aura install --clap -plug a b c

# Doctor
cargo aura doctor                            # toolchain, AURA_PATH, clap-validator, agal

# UI preview (without compiling plugin)
cargo aura preview                           # default: ui/main.slint
cargo aura preview path/to/ui/main.slint --no-watch

Install path resolution

  1. Env: CLAPINS / CLAP_PATH or VST3INS / VST3_PATH
  2. aura.toml [install] per-format path
  3. aura.toml [install] dir + subdir (CLAP, VST3, LV2)
  4. OS defaults (Program Files Common / ~/Library / ~/.clap)

Paths expand %VAR% (Windows), $VAR / ${VAR} (Unix), and ~.

Environment

Variable Purpose
AURA_PATH AURA framework root (crates/, tools/)
CLAPINS / CLAP_PATH CLAP install directory
VST3INS / VST3_PATH VST3 install directory

Crate map

Crate Role
aura Umbrella re-export (use aura::prelude::*)
aura-core PluginLogic trait, host handle, bus layouts
aura-params Param types, normalization, #[derive(Params)]
aura-derive Params, ParamEnum proc macros
aura-clap CLAP wrapper (factory, params, process, state, GUI)
aura-vst3 VST3 wrapper (IPlugView, process, params, state)
aura-lv2 LV2 wrapper (ports, state blob, TTL bundle; no GUI yet)
aura-baseview baseview window host + renderer backends
aura-editor AuraSlintEditor — high-level builder for Slint editors
aura-build Slint compile-time (@aura widgets: Knob, Slider, Toggle, Meter, XYPad)
aura-dsp Oscillators, filters, dynamics, effects, synth modules
aura-midi MIDI events, ProcessContext.midi routing
aura-shm Cross-plugin shared memory IPC (publishers, consumers, spectrum)
aura-test State round-trip + process smoke-test helpers
cargo-aura CLI build tool

Build workflow (typical)

# 1. Create
cargo aura new my-synth
cd my-synth

# 2. Implement PluginLogic in plugins/my-synth/src/lib.rs

# 3. Build + lint
cargo aura build --clap -plug my-synth
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings

# 4. Install to host
cargo aura install --clap -plug my-synth

# 5. Smoke in Bitwig / REAPER

Key traits

use aura::prelude::*;

struct MyPlugin;

impl PluginLogic for MyPlugin {
    fn process(&mut self, ctx: &mut ProcessContext, audio: &mut AudioBuffer) {
        // DSP here — called from audio thread
    }
}

Params via derive:

#[derive(Params)]
struct MyParams {
    #[paramid(0)]
    gain: f32,
}

IPC quick start

use aura_shm::Hub;

// Publish spectrum from audio thread
let hub = Hub::get();
hub.write_spectrum(0, &spectrum_data);  // slot index, [f32; 1024]

// Consume in UI
let data = hub.read_spectrum(0);

Install & Setup | Home

Clone this wiki locally