diff --git a/README.md b/README.md index db3e1ef..49a43f9 100644 --- a/README.md +++ b/README.md @@ -2,21 +2,57 @@ `xtc` is a new, energyXT-inspired digital audio workstation project. It is not a clone and contains no energyXT source code or assets. -![xtc promotional overview: arrangement, piano roll, mixer and modular effects](screenshots/overview.png) - ## Table of contents +- [Features](#features) - [Design decisions](#design-decisions) - [Current status](#current-status) - [Build](#build) - [Run](#run) - [Using the GUI](#using-the-gui) -- [Features](#features) - [Documentation](#documentation) - [Diagnostics](#diagnostics) - [Suggested first agent task](#suggested-first-agent-task) - [License](#license) +## Features + +![xtc promotional overview: arrangement, piano roll, mixer and modular effects](screenshots/overview.png) + +### Audio + +- Audio timing, transitions, latency limits and listening previews are described in [docs/AUDIO_QUALITY.md](docs/AUDIO_QUALITY.md). Human listening acceptance of the transitions remains pending. +- Non-destructive audio splitting, clip gain/fades and cached timeline waveforms are supported, with undo and v8 persistence (reading v1–v7). See [AUDIO_FILES.md](docs/AUDIO_FILES.md#non-destructive-clip-editing). `cmake --build build --target test-audio-editing` checks source preservation and exact boundary output. Time stretching and independent pitch shifting remain deferred. + +### Mixing and routing + +- Signal-flow graph layout, routing diagnostics, direction/role indicators and atomic unity-gain insertion into a wire are supported. See [ROUTING.md](docs/ROUTING.md); `cmake --build build --target test-routing` verifies the C routing contract. +- One-level mix buses, routing, coherent track/bus peaks and master clipping indicators are supported, persisted in v9 (reading v1–v8). See [MIXER.md](docs/MIXER.md). + +### Plugins and instruments + +- LADSPA descriptor browsing, an identity/parameter editor with reset, transactional replacement and insertion into graph wires are supported. See [PLUGIN_HOSTING.md](docs/PLUGIN_HOSTING.md) for compatibility and lifecycle limits. +- Common parameter targets, Linear/Hold mixer automation and saved per-channel live MIDI CC bindings are supported. Project v10 reads v1–v9. See [CONTROL.md](docs/CONTROL.md) for timing, precedence and qualification limits. +- `File → Load plugin` supports LADSPA plus an initial Linux CLAP/VST2/VST3 effect subset. Select the actual module binary (`.clap` or `.so`, including a VST3 bundle's inner binary). Modern effects require one mono input and output, float32 and zero latency; they use default configuration. Instruments, modern parameter editing/automation, opaque state and custom editors are not implemented. Projects now save v11 and read v1–v11. See PLUGIN_HOSTING.md for the full contract and test/qualification limits. +- [Steinberg SDK integration](docs/STEINBERG.md) adds conventional Linux VST3 bundle loading, transport context, official-SDK gain/synth examples and validator checks. Run `cmake -S . -B build -DXTC_VST3_SDK_ROOT=/path/to/vst3sdk -DXTC_BUILD_STEINBERG=ON && cmake --build build --target test-steinberg-sdk` for optional SDK qualification. A Windows ASIO device diagnostic is provided; a native ASIO playback/capture backend remains planned. +- [JUCE integration](docs/JUCE.md) provides an optional VST3/standalone Soft Keys instrument with a native editor, DSP effects, presets, MIDI-to-WAV rendering and VST3 hosting examples. Build and qualify it with `cmake -S . -B build -DXTC_JUCE_ROOT=/path/to/JUCE -DXTC_BUILD_JUCE=ON && cmake --build build --target test-juce`; review JUCE's AGPLv3/commercial licence before distributing linked binaries. See [the examples](examples/juce/README.md). + +### MIDI and composition + +- MIDI devices and defaults are configurable in **Preferences → midi**, including JACK/PipeWire input/output choices, channel filtering and optional thru. Use **File → Import MIDI** or **Export selected clip as MIDI** to exchange note clips. Application preferences load from **`~/.xtc.conf`** at startup and save on Apply and clean exit. See [configuration and MIDI workflows](docs/MIDI_WORKFLOWS.md) for file support, routing and persistence details. + +### Editing and project workflow + +- Undo storage is reserved before edits/publication, completed takes are grouped, surviving editor selections are preserved and context menus/focus feedback are improved. See [EDITING.md](docs/EDITING.md) for the workflow audit and failure boundaries. +- A compact sequencer Create menu, optional track inspector and per-track modular effect chains are supported. Open **View → Track inserts** (or Ctrl+5 for the selected track) to add, search, reorder, bypass, inspect and mix mono LADSPA/VST2/VST3/CLAP effects or internal devices. Chains support undo, presets, audio/MIDI rendering and export. Projects save format 17 and read formats 1–17. See [track insert workflows and limits](docs/TRACK_INSERTS.md) and the [screenshot gallery](screenshots/README.md). +- Direct selected-track inserts, effect duplication, chain copy/paste, A/B snapshots, three internal effect templates, bulk rack actions, insert peak meters, tap tempo, audio crossfades and MIDI chord strumming are supported. See [creative workflows and limits](docs/CREATIVE_WORKFLOWS.md). + +### Engine and release + +- The engine adds no-clobber recording/recovery, parameterized native C processors, and trusted in-process LADSPA hosting with persisted identity/control values. See [RECOVERY.md](docs/RECOVERY.md), [NATIVE_API.md](docs/NATIVE_API.md) and [PLUGIN_HOSTING.md](docs/PLUGIN_HOSTING.md) for commands and limits. +- Effect automation/controllers, editing commands, v7 project-folder media paths, performance baselines and release/installation checks are also supported. +- Audio timing, transitions, latency limits and listening previews are described in [docs/AUDIO_QUALITY.md](docs/AUDIO_QUALITY.md). Human listening acceptance of the transitions remains pending. + ## Design decisions - **Modular engine first:** sequencer, instruments, effects, mixers and I/O are nodes in one processing graph. @@ -111,42 +147,6 @@ cmake --build build --target clean - The release preset and CMake's `dist`, `test-install`, `test-release` and `test-package` targets provide release preparation; see [RELEASING.md](docs/RELEASING.md) for exact guarantees. - With JACK development files and an existing JACK-compatible server, configure with `-DXTC_ENABLE_LIVE_TESTS=ON`, build, and run `ctest --test-dir build --output-on-failure -L live`. These software-loopback checks connect only test clients. See [engine documentation](docs/AUDIO_ENGINE.md) for configuration, routing, ownership and recovery. -## Features - -### Audio - -- Audio timing, transitions, latency limits and listening previews are described in [docs/AUDIO_QUALITY.md](docs/AUDIO_QUALITY.md). Human listening acceptance of the transitions remains pending. -- Non-destructive audio splitting, clip gain/fades and cached timeline waveforms are supported, with undo and v8 persistence (reading v1–v7). See [AUDIO_FILES.md](docs/AUDIO_FILES.md#non-destructive-clip-editing). `cmake --build build --target test-audio-editing` checks source preservation and exact boundary output. Time stretching and independent pitch shifting remain deferred. - -### Mixing and routing - -- Signal-flow graph layout, routing diagnostics, direction/role indicators and atomic unity-gain insertion into a wire are supported. See [ROUTING.md](docs/ROUTING.md); `cmake --build build --target test-routing` verifies the C routing contract. -- One-level mix buses, routing, coherent track/bus peaks and master clipping indicators are supported, persisted in v9 (reading v1–v8). See [MIXER.md](docs/MIXER.md). - -### Plugins and instruments - -- LADSPA descriptor browsing, an identity/parameter editor with reset, transactional replacement and insertion into graph wires are supported. See [PLUGIN_HOSTING.md](docs/PLUGIN_HOSTING.md) for compatibility and lifecycle limits. -- Common parameter targets, Linear/Hold mixer automation and saved per-channel live MIDI CC bindings are supported. Project v10 reads v1–v9. See [CONTROL.md](docs/CONTROL.md) for timing, precedence and qualification limits. -- `File → Load plugin` supports LADSPA plus an initial Linux CLAP/VST2/VST3 effect subset. Select the actual module binary (`.clap` or `.so`, including a VST3 bundle's inner binary). Modern effects require one mono input and output, float32 and zero latency; they use default configuration. Instruments, modern parameter editing/automation, opaque state and custom editors are not implemented. Projects now save v11 and read v1–v11. See PLUGIN_HOSTING.md for the full contract and test/qualification limits. -- [Steinberg SDK integration](docs/STEINBERG.md) adds conventional Linux VST3 bundle loading, transport context, official-SDK gain/synth examples and validator checks. Run `cmake -S . -B build -DXTC_VST3_SDK_ROOT=/path/to/vst3sdk -DXTC_BUILD_STEINBERG=ON && cmake --build build --target test-steinberg-sdk` for optional SDK qualification. A Windows ASIO device diagnostic is provided; a native ASIO playback/capture backend remains planned. -- [JUCE integration](docs/JUCE.md) provides an optional VST3/standalone Soft Keys instrument with a native editor, DSP effects, presets, MIDI-to-WAV rendering and VST3 hosting examples. Build and qualify it with `cmake -S . -B build -DXTC_JUCE_ROOT=/path/to/JUCE -DXTC_BUILD_JUCE=ON && cmake --build build --target test-juce`; review JUCE's AGPLv3/commercial licence before distributing linked binaries. See [the examples](examples/juce/README.md). - -### MIDI and composition - -- MIDI devices and defaults are configurable in **Preferences → midi**, including JACK/PipeWire input/output choices, channel filtering and optional thru. Use **File → Import MIDI** or **Export selected clip as MIDI** to exchange note clips. Application preferences load from **`~/.xtc.conf`** at startup and save on Apply and clean exit. See [configuration and MIDI workflows](docs/MIDI_WORKFLOWS.md) for file support, routing and persistence details. - -### Editing and project workflow - -- Undo storage is reserved before edits/publication, completed takes are grouped, surviving editor selections are preserved and context menus/focus feedback are improved. See [EDITING.md](docs/EDITING.md) for the workflow audit and failure boundaries. -- A compact sequencer Create menu, optional track inspector and per-track modular effect chains are supported. Open **View → Track inserts** (or Ctrl+5 for the selected track) to add, search, reorder, bypass, inspect and mix mono LADSPA/VST2/VST3/CLAP effects or internal devices. Chains support undo, presets, audio/MIDI rendering and export. Projects save format 17 and read formats 1–17. See [track insert workflows and limits](docs/TRACK_INSERTS.md) and the [screenshot gallery](screenshots/README.md). -- Direct selected-track inserts, effect duplication, chain copy/paste, A/B snapshots, three internal effect templates, bulk rack actions, insert peak meters, tap tempo, audio crossfades and MIDI chord strumming are supported. See [creative workflows and limits](docs/CREATIVE_WORKFLOWS.md). - -### Engine and release - -- The engine adds no-clobber recording/recovery, parameterized native C processors, and trusted in-process LADSPA hosting with persisted identity/control values. See [RECOVERY.md](docs/RECOVERY.md), [NATIVE_API.md](docs/NATIVE_API.md) and [PLUGIN_HOSTING.md](docs/PLUGIN_HOSTING.md) for commands and limits. -- Effect automation/controllers, editing commands, v7 project-folder media paths, performance baselines and release/installation checks are also supported. -- Audio timing, transitions, latency limits and listening previews are described in [docs/AUDIO_QUALITY.md](docs/AUDIO_QUALITY.md). Human listening acceptance of the transitions remains pending. - ## Documentation For everyday use see [USER_MANUAL.md](docs/USER_MANUAL.md), [KNOWN_LIMITATIONS.md](docs/KNOWN_LIMITATIONS.md) and [MAINTENANCE.md](docs/MAINTENANCE.md). `xtc-check --diagnose` reports build features; `cmake --build build --target test-package` checks a local system-linked Linux binary archive.