maolan 0.2.2

Rust DAW application for recording, editing, routing, automation, export, and plugin hosting
# Maolan Shortcuts and Gestures

Last updated: 2026-05-21

## Keyboard Shortcuts
### Global / Session
- `Ctrl+N`: New session
- `Ctrl+O`: Open session
- `Ctrl+S`: Save session
- `Ctrl+Shift+S`: Save session as
- `Ctrl+I`: Import files
- `Ctrl+E`: Open export dialog
- `Ctrl+T`: Add track
- `Ctrl+A`: Select all (in pitch-correction view: selects all segments)
- `Ctrl+R`: Toggle session record arm
- `Ctrl+L`: Send transport panic / MIDI panic
- `Ctrl+Z`: Undo
- `Ctrl+Shift+Z`: Redo
- `Ctrl+Y`: Redo
- `Delete` or `Backspace`: Remove selected item(s)
- `Escape`: Cancel or clear the current context-dependent interaction
- `N`: Toggle the Shortcuts pane
- `C`: Toggle the cut indicator (a vertical guide line showing where a cut would land; only visible in workspace view)

### Transport
- `Space`: Toggle play/stop
- `Shift+Space`: Pause (arrangement); stop all session clips when Session view is focused
- `Home`: Rewind to start
- `End`: Rewind to end

### Session View
- `Tab`: Toggle between Workspace and Session view
- `` / `` / `` / ``: Navigate selected clip slot
- `Return`: Launch or stop the selected slot
- `Shift+Space`: Stop all session clips
- `Rec to Arr` button: Start recording playing session clips into the arrangement

### Piano Tools
- `Q`: Quantize selected notes
- `H`: Humanize selected notes
- `G`: Groove selected notes

## Mouse Actions and Gestures
### Workspace / Track List
- `Left click track`: Select track
- `Ctrl+Left click track`: Add track to the current selection
- `Double click track`: Open the track plugin/routing graph
- `Right click track`: Open track context menu
  - Track actions such as automation lanes, rename, sends/returns, MIDI learn, freeze/flatten, and template save depending on track state
- `Drag track` (grab track body): Reorder track
- `Drag bottom track edge`: Resize track height

### Timeline Clips
- `Left click clip`: Select clip
- `Left click empty editor`: Deselect clips
- `Left drag clip`: Drag/move clip (or group if multi-selected)
- `Ctrl + drag clip`: Copy clip while dragging
- `Drag clip left/right edge`: Resize clip bounds
- `Shift + drag clip left/right edge`: Stretch audio clip with Rubber Band on drop, when `rubberband` is available on `PATH`
- Snapping is applied during drag-and-drop based on the current snap mode; the "Clips" snap mode enables snapping to other clip start/end positions
- `Drag clip fade handles`: Resize fade-in/fade-out
- `Middle click clip`: Split clip at current cursor/snap position
- `Double click MIDI clip`: Open MIDI piano roll
- `Double click audio clip`: Open per-clip plugin graph on supported Unix builds
- `Right click clip`: Open clip context menu
  - Clip actions such as group/ungroup, rename, take-lane controls, mute/unmute, pitch correction, fade toggle, and audio stretch actions for audio clips

### Track Header Markers
- `Right click empty marker/header area`: Open the create-marker dialog at the snapped timeline position
- `Left drag marker`: Move marker horizontally; snapping is applied on drop (supports "Clips" snap mode)
- `Right click marker`: Rename marker
- `Middle click marker`: Delete marker

### Selection Gestures
- `Left drag on empty editor`: Marquee clip selection rectangle
- `Right drag on MIDI lane`: Create empty MIDI clip

### Automation Lanes
- `Right drag empty area`: Draw a straight automation ramp between the press and release points (same interaction as the MIDI controller lane). A click without movement inserts a single point.
- `Right click point`: Delete automation point

### Ruler (Top Timeline)
- `Left click`: Move transport playhead
- `Left drag`: Set loop range (snap-aware, supports "Clips" snap mode)
- `Right drag inside loop range`: Move the entire loop range
- `Middle drag loop edge`: Adjust loop start or end point
- `Right click`: Clear loop range

### Zoom Controls
- Main editor zoom: Bottom-right horizontal slider
- Piano roll horizontal zoom: Bottom slider in the MIDI editor
- Piano roll vertical zoom: Right-side vertical slider in the MIDI editor

### Tempo / Time Signature Lane
- `Left click marker`: Select marker
- `Shift+Left click marker`: Add/remove marker from selection
- `Left drag selected marker(s)`: Move marker(s) in time (supports "Clips" snap mode)
- `Left click empty timing lane`: Clear timing selection and move the playhead
- `Left drag empty timing lane`: Clear timing selection and set punch range (supports "Clips" snap mode)
- `Right click marker`: Open marker context menu
  - Duplicate
  - Reset to previous
  - Delete
- `Right click empty timing lane`: Clear timing selection and clear punch range
- `Right drag empty timing lane`: Clear timing selection and set punch range (supports "Clips" snap mode)
- `Middle click` on tempo lane: Add tempo point (supports "Clips" snap mode)
- `Middle click` on time-signature lane: Add time-signature point (supports "Clips" snap mode)
- `Middle drag` an existing punch-range edge: Adjust punch start or end (supports "Clips" snap mode)
- `Mouse wheel` over left control zone on tempo row: Adjust tempo
- `Mouse wheel` over left control zone on time-signature row, left half: Adjust numerator
- `Mouse wheel` over left control zone on time-signature row, right half: Adjust denominator

### Piano Roll (Mouse)
- `Click/drag notes`: Select and move notes
- `Drag note edge`: Resize note start/end
- `Left drag empty area`: Box-select notes
- `Right drag empty area`: Create notes
- `Middle click note`: Delete note
- `Mouse wheel over note`: Adjust note velocity
- `Controller lanes`: Left drag adjusts a point/value, middle click/drag erases, right drag draws
- `Mouse wheel over controller event`: Adjust controller value
- `SysEx lane`: Left drag moves SysEx event, double click opens SysEx editor

### Pitch Correction
- `Right click audio clip -> Pitch Correction`: Open the pitch-correction editor when transport is stopped
- `Left click pitch segment`: Select one segment
- `Shift+Left click pitch segment`: Add/remove a segment from the selection
- `Left drag selected pitch segment(s)`: Retarget one or many selected segments vertically
- `Left drag empty area`: Box-select pitch segments
- `Shift+Left drag empty area`: Add box-selected segments to the current selection
- `Double click pitch segment`: Snap the clicked segment, or the current selected group, to the nearest semitone
- `Ctrl+A` in pitch-correction view: Select all segments
- `Ctrl+Z` / `Ctrl+Shift+Z` / `Ctrl+Y` in pitch-correction view: Undo/redo local pitch-segment edits

### Plugin Graph
- `Drag plugin node`: Move plugin node in graph
- `Drag from port to port`: Create audio or MIDI connection
- `Select connection + delete`: Remove selected graph connection
- `Select plugin + delete`: Remove selected plugin instance

## Shortcuts Pane
The in-app Shortcuts pane can be shown or hidden with `N` or via **View → Shortcuts**. It displays context-sensitive shortcuts for the active view (workspace, piano roll, pitch correction, or plugin graph) and highlights the relevant entry when hovering a widget that has a shortcut hint.

## Notes
- Current keyboard handling is `Ctrl`-based in code paths (including on macOS builds).
- Some actions are context-dependent (current view/tool/selection state).
- The `Q` / `H` / `G` piano shortcuts act on the current piano-roll note selection.
- In pitch-correction view, undo/redo applies to the local correction editor instead of global engine history until you leave the view or press `Apply`.
- Audio clip stretching is only available when the `rubberband` executable can be found on `PATH`.
- The main editor zoom is geometric rather than linear, so equal slider movement produces equal zoom-ratio changes.
- `Group` is only enabled when the current selection contains two or more non-group clips from the same track and clip type.
- `Split` is blocked for grouped clips; ungroup first.
- Per-clip plugin graphs are audio-only and are currently built for Unix non-macOS code paths.