# xtc screenshots [Browse all screenshots with captions](ALL.md). The complete gallery was refreshed after Phases 100–105 on 2026-11-06, including MIDI preferences/import, the sample editor, creative workflows and real installed VST3 insert chains. The gallery captures are actual rendered application windows and menus on a 1440 × 960 virtual X11 screen. The promotional `overview.png` is a designed composite of cropped, proportionally scaled captures with added headings; the other captures have no mockups, compositing or image edits. The JUCE editor image below uses its separately documented direct component-rendering path. ![xtc promotional overview: arrangement, piano roll, mixer and modular effects](overview.png) Regenerate the 2400 × 1800 promotional overview after refreshing the gallery: ```sh python3 tools/create_promotional_overview.py ``` This optional image composition script requires Pillow, Fontconfig (`fc-match`) and DejaVu Sans. It uses `sequencer-loop.png`, `piano-roll-velocity.png`, `mixer-playing.png` and `track-inserts-vst3.png`; no application UI is fabricated. The full screenshot capture target replaces `overview.png` with a raw capture, so run the composition script afterwards to restore the promotional version. The temporary demonstration project starts from `examples/projects/modern-session.xtc`, adding Intro/Verse/Chorus/Outro markers, a routed music bus and gain automation. Editing results use the real control APIs and GUI history/preparation paths. Original projects, media and user configuration are not overwritten. Black margins are the virtual desktop; floating views show the actual detached windows together. ## Continuous audio velocity editing (Phase 110) ![Audio velocity envelope beneath a waveform track](audio-velocity-expanded.png) The expanded audio track shows a continuous gain envelope alongside the Keys MIDI velocity lane. Points were created through actual sequencer gestures; the screenshot is an unmodified application capture. Click anywhere in an audio lane to add a point, drag vertically to adjust it, or right-click a cap to remove it. The level range is 0–400%; points share the mixer's saved gain automation. The [editing preview](audio-velocity-editing.png) shows an active vertical drag with its level displayed in the track header. Reproduce these two captures without replacing the other images: ```sh cmake --build build --target capture_screenshots XTC_CAPTURE_AUDIO_VELOCITY_ONLY=1 xvfb-run -a -s '-screen 0 1440x960x24' \ ./build/capture_screenshots "$PWD/screenshots" ``` ## Expandable track velocity lanes (Phase 109) ![Tracks expanded downward with editable MIDI velocity bars](track-velocity-expanded.png) Captured from the real application on 2026-11-06. Keys and Bass are expanded; subsequent tracks move downward. Click the arrow beside a track name, then drag a note bar's cap to edit velocity. The compact workspace, sequencer loop and promotional overview were also refreshed to show the disclosure arrows. Reproduce these sequencer captures without replacing the rest of the gallery: ```sh cmake --build build --target capture_screenshots XTC_CAPTURE_VELOCITY_ONLY=1 xvfb-run -a -s '-screen 0 1440x960x24' \ ./build/capture_screenshots "$PWD/screenshots" python3 tools/create_promotional_overview.py ``` ## Steinberg and JUCE SDK integration (Phases 106–107) Captured on 2026-11-06 from the built SDK examples, with no fabricated UI. ![JUCE Soft Keys native editor](juce-soft-keys-editor.png) The 1560 × 980 image is rendered directly from the actual JUCE editor, with filter/reverb enabled and output at -6 dB. It shows the parameter controls, preset buttons and on-screen keyboard without opening an audio device. ![Steinberg SDK Half Gain loaded in xtc's track insert graph](steinberg-sdk-track-insert.png) - [Steinberg SDK effect identity and current adapter limits](steinberg-sdk-identity.png) - [Steinberg SDK Sine instrument discovered by xtc](steinberg-sdk-instrument.png) - [JUCE VST3 instrument discovered by xtc](juce-vst3-instrument.png) The four 1440 × 960 FLTK captures load the actual SDK-built VST3 bundles. The Steinberg examples have no custom editor; xtc displays its host graph and metadata. The JUCE native editor above is rendered separately: xtc's C host currently uses plugin defaults and does not embed native VST3 editors or expose their controller parameters. Unsupported class counts in the choosers include non-instrument/controller classes; they do not mean the selected synth failed. The host is stopped and meters are idle. No ASIO interface is shown or implied. See [Steinberg integration](../docs/STEINBERG.md) and [JUCE integration](../docs/JUCE.md). After configuring the root CMake project and building both SDK examples, reproduce only these host captures with: ```sh cmake --build build --target capture_screenshots XTC_CAPTURE_STEINBERG_BUNDLE="$PWD/build/steinberg-sdk/VST3/Release/xtc-sdk-examples.vst3" \ XTC_CAPTURE_JUCE_BUNDLE="$PWD/build/juce/XtcJuceSynth_artefacts/Release/VST3/xtc JUCE Synth.vst3" \ xvfb-run -a -s '-screen 0 1440x960x24' \ ./build/capture_screenshots "$PWD/screenshots" ``` This uses the existing capture prerequisites and temporary project isolation; it preserves the other gallery images, including `overview.png`. To reproduce the JUCE editor image, remove or move the existing destination first (the command refuses overwrites): ```sh xvfb-run -a ./build/juce/xtc-juce-render_artefacts/Release/xtc-juce-render \ --snapshot "$PWD/screenshots/juce-soft-keys-editor.png" ``` ## MIDI devices, defaults and file exchange (Phases 100–105) - [Open MIDI input dropdown with real host devices](preferences-midi-input-devices.png) - [MIDI source/destination preferences and channel defaults](preferences-midi.png) - [Device setup and MIDI defaults help](preferences-midi-help.png) - [File menu with MIDI import and selected-clip export](midi-file-menu.png) - [An exported clip reimported into a new arrangement](midi-import-arrangement.png) - [The imported notes and velocities in the piano roll](midi-import-piano-roll.png) These captures use real file export/import and the real preferences schema. No hardware device names or connected devices are fabricated; blank port defaults mean no automatic connection. Actual device choices depend on host JACK/PipeWire exposure. Configuration paths are disabled in captures to preserve user settings. See [MIDI workflows and limits](../docs/MIDI_WORKFLOWS.md). After configuring `build/audio-editor` with the root CMake project, reproduce these five captures with `XTC_CAPTURE_MIDI_ONLY=1 cmake --build build/audio-editor --target screenshots`. The open input dropdown was captured after the device-label lifetime fix. It shows actual host sources, including UMC204HD, USB MIDI, Oxygen Pro 25 and BLE MIDI ports. No route is selected and user preferences are preserved. Reproduce just this image with real MIDI sources exposed by JACK/PipeWire: `XTC_CAPTURE_MIDI_INPUT_ONLY=1 cmake --build build/audio-editor --target screenshots`. The capture fails explicitly if the host exposes no input sources. ## Creative workflows (Phases 90–99) Four real captures show the current transport Tap button, insert meters and creative controls; the rest of the gallery also reflects the current UI. - [Dub Echo template in the insert graph](creative-dub-rack.png) - [Rack actions: bulk edits, comparison and chain clipboard](creative-rack-actions.png) - [Chord strumming controls](creative-strum-dialog.png) - [Strummed chord notes in the piano roll](creative-strum-result.png) Reproduce only these captures with `XTC_CAPTURE_CREATIVE_ONLY=1 cmake --build build/audio-editor --target screenshots`. The rack shows the actual template and idle meter; no live peak readings are fabricated. See [creative workflow limits](../docs/CREATIVE_WORKFLOWS.md). ## Compact workspace and installed VST3 effects (Phases 80–89) - [Compact sequencer workspace](compact-workspace.png) - [Create dropdown over the sequencer](create-track-menu.png) - [ZamEQ2 → ZamAutoSat → ZamDelay on the Keys track](track-inserts-vst3.png) - [Verified VST3 identity and adapter capabilities](track-insert-vst3-identity.png) - [Parallel wet/dry branches in the actual insert graph](track-inserts-parallel.png) The three VST3 effects are installed on this host under `/usr/lib/vst3`, loaded through the real host and prepared in the track's chain. These are host graph and identity views; native plugin editor windows are not available. The identity view explicitly reports default configuration and absent parameter controls. Long graphs scroll horizontally. See [TRACK_INSERTS.md](../docs/TRACK_INSERTS.md) for precise compatibility limits. ## New arrangement and composition workflows | Phase | Feature | Captures | | --- | --- | --- | | 58 | Persistent named arrangement markers | [Ruler](arrangement-markers.png), [marker editor](marker-edit.png) | | 59 | Section navigation and looping | [Current section loop](section-navigation.png) | | 60 | Ripple time insertion/removal | [Controls](ripple-time.png), [inserted gap](ripple-result.png) | | 61 | Complete track duplication | [Independent layered track](track-duplication.png) | | 62 | Nondestructive MIDI splitting | [Split clip](midi-split.png) | | 63 | MIDI clip consolidation | [Consolidated clip](midi-consolidation.png) | | 64 | Seeded MIDI humanization | [Timing, velocity and seed](midi-humanize.png) | | 65 | Chord construction | [Intervals](midi-chord-builder.png), [generated notes](midi-chords-result.png) | | 66 | Offline arpeggio generation | [Step, gate and direction](midi-arpeggio.png), [written pattern](midi-arpeggio-result.png) | | 67 | Audio peak normalization | [Target dBFS](audio-normalization.png), [normalized clip](audio-normalization-result.png) | | 68 | Portable media collection | [New destination folder](project-collection.png) | Collection is also executed by the capture tool into its temporary directory; the screenshot shows its destination prompt, not a file browser or progress UI. See [COMPOSITION_WORKFLOWS.md](../docs/COMPOSITION_WORKFLOWS.md) for precise behavior, limits and commands. The screenshots illustrate implemented workflows; they do not establish feature parity with other DAWs. ## Audio source editor (Phases 69–79) - [Frame selection, waveform, statistics and processing controls](sample-editor.png) - [Detected source attacks and clip slicing controls](sample-transients.png) These captures show the actual modal editor with the repository pluck WAV. Processing is staged locally; Save full copy and relink applies it to the project. See [AUDIO_EDITOR.md](../docs/AUDIO_EDITOR.md) for limits and frame/tick rounding. ## Refreshed application views All pre-existing images below were recaptured. Mixer playback meters come from real JACK callbacks. The minimum-size capture uses a 1220 × 720 main window; the scrolled view adds twelve tracks. Audio views import the repository's `original-pluck.wav` and apply clip gain/fades. The older descriptor/control views use repository test fixtures. The track-insert views below use real installed host VST3 binaries. Internal instrument menus and delay/reverb editors show the real available devices and controls. The command palette uses the current application action list. - [Sequencer loop](sequencer-loop.png) - [Mixer automation](mixer-automation.png) - [Modular graph](modular-graph.png) - [Piano roll velocity](piano-roll-velocity.png) - [Sequencer audio waveform](sequencer-audio-waveform.png) - [Preferences audio](preferences-audio.png) - [Preferences plugins](preferences-plugins.png) - [Preferences interface](preferences-interface.png) - [Preferences editing](preferences-editing.png) - [Preferences project defaults](preferences-project_defaults.png) - [Preferences transport](preferences-transport.png) - [Plugin library](plugin-library.png) - [Plugin descriptors](plugin-descriptors.png) - [Plugin controls](plugin-controls.png) - [Midi controller mapping](midi-controller-mapping.png) - [Loop range](loop-range.png) - [About](about.png) - [Audio clip properties](audio-clip-properties.png) - [Clap instrument descriptors](clap-instrument-descriptors.png) - [Vst2 instrument descriptors](vst2-instrument-descriptors.png) - [Vst3 instrument descriptors](vst3-instrument-descriptors.png) - [Mixer playing](mixer-playing.png) - [Mixer minimum size](mixer-minimum-size.png) - [Mixer scrolled session](mixer-scrolled-session.png) - [Commands](commands.png) - [Internal instruments](internal-instruments.png) - [Internal delay](internal-delay.png) - [Internal reverb](internal-reverb.png) - [Detached transport with BPM and loop settings](transport-detached.png) - [Detached mixer](mixer-detached.png) - [Workspace with transport and mixer detached](workspace-detached.png) - [Detached sequencer](sequencer-detached.png) - [Detached modular graph](graph-detached.png) Detach panels from the View menu; close a floating window or use its Dock button to return it to the main window. ## Reproduce the gallery From the repository root, run: ```sh cmake -S . -B build/next-daw -DCMAKE_BUILD_TYPE=Debug cmake --build build/next-daw --target screenshots ``` This optional documentation target requires the existing FLTK/JACK build prerequisites, a running JACK server, Xvfb (`xvfb-run`), ImageMagick (`import`) and `xdotool`. It builds the repository plugin fixtures, runs [the capture tool](../tools/capture_screenshots.cpp), and replaces the gallery PNGs. All demonstration edits and collection outputs use an automatically removed temporary directory; no preferences are saved. It neither installs dependencies nor starts/reconfigures the audio server. Set `XTC_CAPTURE_SAMPLE_ONLY=1` for the capture tool (or the CMake target) to write only the two sample-editor images while retaining the existing gallery. To reproduce the host captures where those Zam bundles are installed: ```sh XTC_CAPTURE_HOST_VST3=1 xvfb-run -a -s '-screen 0 1440x960x24' \ ./build/audio-editor/capture_screenshots "$PWD/screenshots" ``` Run `cmake --build build/audio-editor --target screenshots` first to build the tool and refresh the full fixture/demo gallery. All captures use temporary projects and preserve user settings and original media.