xtc/screenshots/README.md

290 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.