# Maolan Features

Last updated: 2026-04-30

## Core DAW Workflow
- Multi-track audio + MIDI session editing
- Track selection, reordering, resizing, and rename
- Session template save/load
- Track template save/load
- Group template save/load (save/load an entire track group as a single template)
- Session save/open/save-as
- Recent session tracking
- Session metadata editing:
  - Author
  - Album
  - Year (unsigned)
  - Track number (unsigned)
  - Genre

## Clip Editing
- Audio clip and MIDI clip placement on timeline
- Clip select/multi-select and marquee selection
- Clip drag-and-drop move/copy across tracks
- Clip group / ungroup on same-track, same-type selections
- Nested clip groups preserved on save/load and restore on ungroup
- Clip edge resize (left/right)
- Clip fade-in/fade-out resize
- Clip mute/unmute
- Clip rename
- Clip middle-click split at cursor/snap point
- Grouped clips cannot be split until ungrouped
- MIDI clip double-click opens piano roll
- Audio clip double-click opens per-clip plugin graph on Unix
- Per-clip FX/plugin graph for audio clips:
  - Separate from the track plugin graph
  - Stored per clip in session data
  - Applies after grouped-child summing and clip fades in the current render path
  - Supports CLAP, VST3, and LV2 on supported Unix builds
- Audio clip pitch-correction editor
- Pitch-correction workflow:
  - Open from the audio clip context menu when transport is stopped
  - Analyze source material with per-session cached pitch scans for fast revisits
  - Reopen existing clip correction without re-analyzing when correction data is already saved on the clip
  - Tune detection granularity using frame-likeness (0.05–2.00) merge behavior
  - Manual pitch-segment retargeting with click, shift-click, marquee select, and grouped vertical drag editing
  - Double-click snap-to-nearest-note for one or many selected pitch segments
  - Local pitch-correction undo/redo history while editing
  - Adjustable inertia (0–1000 ms) for smoother pitch transitions between segments
  - Optional formant compensation in render path
  - Apply pitch correction from full clip or selected source offset/length window
  - Non-destructive clip workflow: edits stay local to the editor until Apply writes them back to the clip
  - Real-time pitch-shift playback after Apply
  - Offline pitch-corrected freeze preparation using Rubber Band preview renders
- Audio warp markers with reset / half-speed / double-speed helpers

## Timeline Markers and Arrangement Aids
- Per-track editor markers
- Marker create / rename / move / delete workflow
- Snap-aware marker placement and marker dragging
- Snap-to-clip start/end for clips, loop, punch, and markers
- Ruler playhead seek
- Loop range set/clear
- Punch range set/clear

## Take Lanes and Comping
- Overlap-based take lane stacking
- Set active take
- Cycle to next active take
- Unmute all takes in range
- Take lane pin/unpin
- Take lane lock/unlock
- Take lane move up/down
- Dedicated Comp tool with swipe comping

## Automation
- Track automation lanes:
  - Volume
  - Balance
  - Mute
- Plugin automation lanes:
  - CLAP parameters
  - VST3 parameters
  - LV2 parameters (Unix)
- Lane point insert/delete/edit
- Automation ramp drawing
- Automation modes:
  - Read
  - Touch
  - Latch
  - Write
- Automation writeback from manual control changes
- Plugin automation lane creation from loaded plugin parameters

## Piano Roll / MIDI Tools
- Note editing and selection
- Velocity/controller editing
- SysEx point create/edit/move/delete
- Quantize
- Humanize (time + velocity)
- Groove (swing)
- Scale snap
- Chord generation
- Legato
- Velocity shaping
- MIDI note snapping
- Configurable scale root / major-minor mode
- Configurable chord type
- Configurable groove, humanize, and velocity-shape amounts

## Timing and Transport
- Tempo and time-signature timeline editing
- Tempo/time-signature points add/move/delete/duplicate/reset
- Numeric tempo/time-signature input with validation
- Play/pause/stop/record transport control
- GUI transport shortcuts for rewind-to-start/end, session record arm toggle, and panic
- CLI transport shortcuts for rewind-to-start/end and panic
- Toolbar panic button for hardware MIDI outputs (`CC64=0`, `CC120=0`, `CC123=0`)
- Metronome enable/disable with visual icon
- Clip playback enable/disable at transport level

## Freeze / Commit / Flatten
- Per-track freeze/unfreeze
- Freeze rendering with progress + cancel
- Reversible frozen backups
- Flatten frozen track (keep rendered audio, drop backups)
- Freeze guardrails around mutable track operations

## Routing and Mixing
- Track controls:
  - Arm
  - Mute
  - Solo
  - Input monitor
  - Disk monitor
  - Phase invert
- Aux return creation from selected tracks
- Aux send controls:
  - Level adjust
  - Pan adjust
  - Pre/Post fader toggle
- VCA-like master assignment/unassignment for tracks
- Track audio/MIDI passthrough defaults
- Per-track plugin graph routing for:
  - Audio
  - MIDI
  - Sidechain / auxiliary plugin ports
- Plugin window lifecycle and focus management

## Plugins and Integration
- CLAP plugin scan/load/unload/state restore/UI
- VST3 plugin scan/load/unload/state restore/UI
- LV2 plugin scan/load/unload/state restore/UI (Unix)
- Plugin graph and per-track routing management
- Mixed plugin graph session/template restore
- Plugin parameter automation for loaded plugins
- Offline plugin bounce path for freeze/export workflows

## Export and Render
- Mixdown and stem export (selected tracks)
- Stem modes:
  - Pre-fader
  - Post-fader
- Real-time fallback render mode
- Export master limiter + dBTP ceiling
- Normalization modes:
  - Peak
  - Loudness
- Multi-format export in one run:
  - WAV
  - MP3 (via ffmpeg)
  - OGG (Vorbis, via ffmpeg)
  - FLAC
- Codec settings:
  - MP3 mode (CBR/VBR) + bitrate
  - OGG quality
- Metadata tagging on supported formats:
  - MP3 (ID3 fields used by current encoder path)
  - OGG Vorbis comments

## Control Surface and OSC
- mixosc integration for OSC-based mixing control
- Behringer X32 dedicated view

## AI Audio Generation
- HeartMuLa text-to-audio generation through `maolan-generate`
- Prompt / lyrics driven generation with optional style tags
- Burn backend options:
  - CPU
  - Vulkan
- Model options:
  - `happy-new-year`
  - `RL`
- Burn generation controls:
  - CFG scale
  - Steps
  - Top-k
  - Temperature
  - ODE steps
  - Decoder seed
  - Output `--length` in milliseconds
- Decode-only mode from a saved frames JSON
- Decode-only CPU worker override with `--decode-threads`
- Hugging Face cache-backed model resolution for the current Burn repos:
  - `maolandaw/HeartMuLa-happy-new-year-burn`
  - `maolandaw/HeartCodec-oss-20260123-burn`
- Local model directory override with `--model-dir`

## Session Safety and Recovery
- Dirty-state tracking
- Close guard for unsaved changes
- Periodic autosave snapshots
- Startup autosave recovery prompt
- Recover latest or older autosave snapshot
- Recovery preview summary
- Fallback to older snapshots on recovery failure
- Startup recovery hint from last opened session

## Diagnostics and Tooling
- Session diagnostics report
- Diagnostics bundle export
- MIDI mappings report
- MIDI mappings import/export/clear-all
- Preferences saved to `~/.config/maolan/config.toml`
- Recent sessions menu

## MIDI Learn and Control Surface Features
- Track MIDI learn targets:
  - Volume
  - Balance
  - Mute
  - Solo
  - Arm
  - Input monitor
  - Disk monitor
- Global MIDI learn targets:
  - Play/Pause
  - Stop
  - Record toggle
- Mapping persistence in session
- Collision/conflict protection

## Widgets and UI Components
- `arch_slider` with adjustable arc shape
- Slider `on_release` option for both horizontal and vertical variants
- Stretchable ticks and meters that fill available space

## Platform Notes
- Linux and FreeBSD builds support CLAP, VST3, and LV2.
- Windows builds support WSAPI backend, CLAP, and VST3.
- macOS builds refresh CLAP and VST3 plugin support paths; LV2 is Unix-only in the current codebase.
- Linux and FreeBSD builds currently force the X11 window backend at startup.
- FreeBSD roadmap notes still mark MIDI 2.0 as N/A.

## Known Boundaries
- Plugin compatibility is still a real-world host-interop concern, especially across unusual plugins.
- Many core behaviors are unit-tested, but editor-hosting and plugin-integration paths are still more integration-heavy than fixture-heavy.
