mirror of
https://github.com/storytold/soundcraft.git
synced 2026-11-15 06:42:16 +00:00
* Strip Silence: the sliders move a tenth as far while Ctrl or Command is held While Ctrl (Command on a Mac) is held, a drag on one of the four Strip Silence sliders moves the value a tenth as far as the same drag without the key, on the slider and on its value box. Pressing or releasing the key during a drag leaves the value where it is, and the drag goes on from there. Releasing the mouse button leaves the value too. A drag without the key works as before. The new widgets::fine_slider uses the modifier test and the tenth of widgets::fader. Threshold and Clip Start Pad show one decimal place, and a drag on the slider during which the key was held rounds the value to the places the box shows. * Plugins: parameter sliders move a tenth as far while Ctrl or Command is held While Ctrl (Command on a Mac) is held, a drag on a parameter slider in the plugin window, the Clip Effects window or an AudioSuite plugin's window moves the value a tenth as far as the same drag without the key, as the Strip Silence sliders do. A logarithmic slider moves a tenth as far along the slider, and a whole-number slider, such as the Sampler's Root Note, stays on whole numbers. A drag without the key works as before. widgets::FineSlider is a new builder with the slider options these windows use (no value box, logarithmic, whole numbers, a salt for unlabeled sliders); widgets::fine_slider keeps its signature and calls it. * Plugins: Alt-click returns a parameter to its default value An Alt-click (Option-click on a Mac) on a parameter in the plugin window, the Clip Effects window or an AudioSuite plugin's window sets the parameter's default value, as an Alt-click sets a fader to 0 dB. It works on a slider, on a slider's value box and on a choice list. The click on a value box does not open it for typing, and the click on a choice list does not open the list. In the plugin window and the Clip Effects window the reset runs the same command as a drag, so it is one undo step. While Alt is held, a drag on one of these sliders leaves the value where it is. widgets::FineSlider has a new default_value option for this. * Plugins: FineSlider::default_value describes what a held Alt does While Alt is held, a drag leaves the value where it is, and an Alt-click on the value box does not open it for typing. An Alt-click on the rail sets the default. * Dialogs: Enter on a focused Cancel or Don't Save no longer runs OK Enter on a focused button clicks it and also presses the dialog's OK. In Strip Silence, Enter on Cancel closed the dialog and still stripped the selected clips. Cancel and Escape now drop the command and the save that OK asked for, in every dialog. In Unsaved Changes, Enter on a focused Don't Save closes without saving instead of opening Save. * Read send destinations only while the menu is open * Tests: pressing Ctrl during a value-box drag keeps the value The rest of the drag on the Threshold value box moves as far as a drag with Ctrl held from the start. * Bounce Mix: Cancel starts no bounce; fine adjust on more AudioSuite sliders Enter on a focused Cancel also pressed Bounce, which started the bounce before the Cancel check ran. The bounce now starts after that check. The Normalize, Time Shift and Pitch Shift sliders in the AudioSuite window move a tenth as far while Ctrl or Command is held. * Tests: give the Enter-on-Cancel bounce test its own scratch folder It shared bounce-cancel with cancel_or_escape_stops_a_bounce_and_leaves_no_file, so the two tests removed each other's folder when run in parallel. * Clip Effects: log-taper parameter sliders use a logarithmic rail The EQ and Dynamics sliders in the Clip Effects window now follow the parameter's taper, as the plug-in window does, so a frequency, Q, ratio, attack or release slider moves along a logarithmic rail. * Dialogs: leave Enter on a focused Cancel or Don't Save to its own pull request The dialog changes for Enter on a focused Cancel or Don't Save, the Bounce Mix change that started the bounce after the Cancel check, and their tests in save_changes.rs, strip_silence_dialog.rs and bounce.rs are removed from this branch. The fine adjustment on the sliders stays. * Plugins: tests cover Alt reset and Ctrl fine adjustment on more slider kinds Tests now cover Ctrl without Command, Alt pressed during a drag, one undo step for a choice-list reset, whole-number and logarithmic sliders, Alt-click and Ctrl-drag on the AudioSuite and Clip Effects value boxes, and Alt on a Strip Silence slider, which behaves like a plain click or drag. The ROADMAP entry limits the choice-list reset to the plugin window, and the docs/ui-parity.md fine-adjustment row names the Clip Effects and AudioSuite sliders. * Plugins: a short Ctrl-drag at the low end of a log slider with a value box moves the value A fine drag rounded to at most three decimal places, so a one-point drag near the bottom of a range such as Attack at 0.01 ms rounded back to where it started. The rounding now allows up to six places. * Strip Silence: the fine slider's response reports each change of a drag The value moved by a drag that the key has touched is set before the slider reads it, so the Response's changed() stayed false on those passes. fine_slider now marks the response when the value changed. Tests: a Control-only drag, and changed() on every pass of a Ctrl-drag. The value box test releases the button once and checks the value after. * Tests: plugin sliders with Control alone and with Ctrl toggled during a drag The plugin window's logarithmic and whole-number sliders keep their value when Ctrl is pressed or released during a drag, and a drag with Control alone is fine. The tenth-as-far test names the parameters it drags and checks the others do not change, and the low-end test checks the value after the release.
8.9 KiB
8.9 KiB
UI parity
Last reviewed: 2026-10-25 · Last updated: 2026-10-27 · Change: minor (Cancel Zoom Toggle; Tracks and Groups and Clips in dock columns; Alt-click returns a plugin parameter to its default) · Target: Avid Pro Tools Ultimate 2026.4.1
How SoundCraft feels in the hands of a Pro Tools user: tools, modes, modifiers, shortcuts,
windows, meters. Measured from crates/model/src/session.rs (tools, modes), the command
registry (shortcuts), crates/ui-egui/src (windows, gestures) and user issues; compared with
reference screenshots kept locally under plan/protools/screenshots/ (16, never committed).
UI/UX fidelity: ~55 % ready (estimated). Remaining ≈ 60–100 h.
Legend: ✅ matches · 🟡 partial · ❌ missing.
Tools and modes
| Feature | Status | Notes |
|---|---|---|
| Tools: Zoom, Trim, Selector, Grabber, Scrubber, Pencil, Smart (7) | ✅ present | Trim variants (TCE, loop, scrub trim) and Grabber variants (separation, object) partial; Multitool fade/trim handles don't adjust audio (#5) |
| Smart-tool Fade In / Fade Out drag bounds and preview | ✅ | One thin curve replaces the dragged side's previous curve and matches its appearance after release; bounded to the clip, including full-clip fades. Hovering the curve's upper endpoint shows the fade cursor and lets the existing fade be dragged |
| Fade midpoint curvature | ✅ | Visible fades retain a small midpoint handle in Smart mode, including after release and extreme bends. Hover shows the vertical resize cursor; repeated drags change curvature without changing length. Curves sample at physical-pixel resolution; preview, playback and bounce share the envelope. Length drags retain curvature |
| Live waveform fade preview | ✅ | Waveform amplitude updates during fade-length and midpoint-curvature drags, sharing the curve's temporary envelope. Mono/stereo, waveform styles, zoom and clip gain remain effective; release preserves the displayed waveform with one undo step and cached peaks |
| Edit modes: Shuffle, Slip, Spot, Grid (absolute/relative) | ✅ | Spot dialog present |
| Grid and nudge values, all timebases | ✅ | Bars/Beats, Min:Secs, Timecode, Feet+Frames, Samples |
| Zoom Toggle | 🟡 | E (Commands focus) and the button zoom to the edit selection with Fit To Window heights and back; Alt+Shift+E and Alt-click cancel it and keep the view. The Zoom Toggle preferences (Vertical Zoom, Horizontal Zoom, Track Height, Track View, Separate Grid Settings When Zoomed In, Zoom Toggle Follows Edit Selection, Remove Range Selection After Zooming In) are not present |
| Keyboard focus modes (Commands, Clip List, Groups) | 🟡 | Commands focus single-key editing ✅; list focus partial |
| Link timeline/edit, link track/edit, Tab to transient, insertion follows playback | ✅ | |
| Mirrored MIDI, MIDI merge, layered editing | 🟡 | Stored and partly honoured |
Keyboard and mouse
| Feature | Status | Notes |
|---|---|---|
| Default shortcuts | 🟡 146 bound (measured: distinct Some("…") shortcuts in the registry) |
Pro Tools' default set is several hundred incl. numeric keypad and focus keys. Collisions: Mix/Edit toggle vs zoom (#144), Heal (#140), Export (#7) |
| Ctrl as Cmd on Windows/Linux | ✅ since #15, #41 still open in some builds | #62 shows Ctrl in labels |
| Numeric keypad transport and memory-location recall | 🟡 | Classic / Transport / Shuttle modes not all present |
| Modifier gestures (Alt for all tracks, Shift-Alt for selected, Cmd-click fine faders, Ctrl-click defaults) | 🟡 | Main ones on faders and pan; not across every control |
| Scroll/zoom: wheel, trackpad pinch | 🟡 | Anchored trackpad zoom in open PRs #112, #137 |
| Drag and drop: Clip List → tracks, files → tracks | ✅ macOS/Windows; 🟡 Wayland (PR #150) | |
| Context menus (clip, track name, ruler, Clip List) | 🟡 | Clip and track menus exist; depth lower than Pro Tools'; Clip List delete (#4); track name ▸ Scroll Into View (Edit top, Mix left) |
| Drag across checkboxes to check or uncheck several | ✅ | #399; every checkbox, as in the other Craft apps |
Windows and panels
| Window | Status | Notes |
|---|---|---|
| Edit window: rulers, track headers, view columns, Clip List, Groups, Tracks list | ✅ | Track Pin (new in 2026.4) ✅ (track.pin); Tracks and Groups and the Clip List sit in full-height dock columns at the window's sides |
| Mix window: strips, views (inserts, sends, I/O, comments, EQ curve, preamps, instruments, object) | ✅ | Narrow Mix ✅; Mix and Edit on screen at once (Window › Mix in Separate Window, its own native window) ✅; Delay Compensation view and HEAT missing |
| MIDI Editor, Score Editor, Event List | 🟡 | Dock height bug fixed (#113); notation editing shallow |
| Transport, Big Counter, Memory Locations, Automation, Video, Universe, Renderer, UI Customization | ✅ present | |
| Workspace / sound browser with previews | ❌ | G-16 |
| I/O Setup | 🟡 | Busses and paths; no hardware channel matrix (G-01) |
| Preferences | 🟡 | Many settings stored, fewer honoured |
| Window configurations, Tile/Cascade | 🟡 | Configurations ✅; Tile/Cascade in PR #151 |
| Plugin windows | 🟡 | Generic parameter sliders; Pro Tools plugins have bespoke GUIs (#138 asks for skeuomorphic design); multi-page plugin views (#6); Alt/Option-click returns a parameter to its default |
| A plugin opens when it's inserted | ✅ | #486; a hosted plugin's own editor, else its plugin window |
| Command palette (Search) | ✅ | Over every command |
Look and meters
| Feature | Status | Notes |
|---|---|---|
| Dark theme close to Pro Tools' | ✅ | Light theme (#32) and live system appearance (#85) beyond Pro Tools |
| Interface scaling | 🟡 | Slider in PR #147 |
| Meter types and ballistics (peak, RMS, VU, K-scales, gain reduction) | 🟡 | Peak/RMS; meter type choice and GR meters partial |
| Clip indicators, track colours, waveform views (peak/power/rectified/outlines) | ✅ | |
| Fader resolution, fine adjust, numeric entry | 🟡 | Ctrl/Cmd-drag moves the faders, the Strip Silence sliders and their value boxes, plugin parameter sliders, the Clip Effects sliders and the AudioSuite sliders a tenth as far |
| macOS system menu bar | ✅ | #10 |
Revision history
| Date | Change | Summary |
|---|---|---|
| 2026-10-27 | minor | Clip Effects gain supports Alt/Option-click reset to 0 dB and Ctrl/Cmd fine adjustment. Readiness estimate unchanged |
| 2026-10-25 | minor | Zoom Toggle row: Alt+Shift+E and Alt-click cancel Zoom Toggle and keep the view. Readiness estimate unchanged |
| 2026-10-25 | minor | Edit and Mix windows: Tracks and Groups and Clips in full-height dock columns. Readiness estimate unchanged |
| 2026-10-24 | minor | Plugin parameters: Alt/Option-click returns one to its default. Readiness estimate unchanged |
| 2026-10-24 | minor | Plugin parameter sliders: Ctrl/Cmd-drag moves them a tenth as far. Readiness estimate unchanged |
| 2026-10-24 | minor | Strip Silence sliders: Ctrl/Cmd-drag moves them a tenth as far. Readiness estimate unchanged |
| 2026-10-20 | minor | Preferences uses one fixed non-scrolling size with compact stacked choices, removes the duplicate meter-type list, and command-backs visual-effects reduction and undo depth alongside the UI theme |
| 2026-10-19 | minor | Preferences opens from Setup with nine searchable pages, compact grouped controls, staged apply/cancel, platform tab shortcuts and disabled placeholders for unavailable settings |
| 2026-10-16 | minor | Track name menu: Scroll Into View brings the track to the top of the Edit window and the left of the Mix. Readiness estimate unchanged |
| 2026-10-13 | minor | A plugin opens when it's inserted (#486) |
| 2026-10-13 | minor | Drag across checkboxes (#399) |
| 2026-10-13 | minor | Waveforms and fade curves share temporary envelopes during drag, without rebuilding media or editing the document before release. Readiness estimate unchanged |
| 2026-10-13 | minor | Fade curves use bounded physical-pixel sampling; midpoint handles stay visible and inside the clip, with repeat-drag coverage after extreme bends. Readiness estimate unchanged |
| 2026-10-13 | minor | Continuous fade curvature from a midpoint drag, shared UI/audio envelope, one-step undo and saved session data. Readiness estimate unchanged |
| 2026-10-13 | minor | Existing fades have draggable upper endpoints with matching hover/drag cursors, including at adjacent clip boundaries. Readiness estimate unchanged |
| 2026-10-13 | minor | Fade drags use the same thin S-curve renderer as committed fades, replacing the dragged side's old curve. Readiness estimate unchanged |
| 2026-10-13 | minor | Bounded Smart-tool fade previews and commits; full-clip fades target only the dragged clip and side. Readiness estimate unchanged |
| 2026-10-12 | minor | Mix window: Mix in Separate Window (Edit and Mix on screen at once) |
| 2026-10-10 | major | Created: tools, modes, shortcuts, windows and meters checklist against Pro Tools 2026.4.1 |