Skip to content

Regions

Regions are rectangular clips placed on tracks that represent audio, MIDI, video, or text content. Each region has a position (in ticks), a duration, and a reference to its source content.

TypeDescription
AudioReferences a WAV/AIFF asset file. Has sample-accurate start/end positions.
MIDIContains MIDI note events and CC data. Routed to instruments.
VideoReferences a video asset. Composited visually.
TextContains text content (lyrics, captions, cue notes).
AutomationContains CC automation curves linked to parameters.
PropertyTypeDefaultDescription
idstringautoUnique region identifier
namestringDisplay name
region_typeenumAudio, MIDI, Video, Text, Automation
colorstring"#3B82F6"Color as hex string
ticki640Position on timeline in ticks (960 PPQ)
durationi64Length in ticks (minimum 240 = 1/16 note)
offseti640Offset into source content (how far into the file to start reading)
lockboolfalsePosition lock mode
starti640Start position in samples (audio/video regions)
endi640End position in samples (audio/video regions)
asset_idstring?NoneReferenced asset ID (audio/video regions)
gainf641.0Region gain multiplier
panf640.0Region pan (−1.0 to +1.0)
mutedboolfalseMute this region
fade_inf640.0Fade-in duration
fade_outf640.0Fade-out duration
warp_enabledboolfalseTime-stretch / warp mode
parent_idNodeRef?NoneParent node for hierarchical grouping
CommandShortcutDescription
region:moveMove a region to a new tick position (same or different track)
region:resizeResize a region (change duration)
region:trim-startTrim the start of a region (adjusts offset, position, and duration)
region:deleteDelete a region from the timeline
region:create-textCreate an empty text region at the playhead
region:select-nextSelect the next region on the current track
region:select-prevSelect the previous region on the current track
region:select-next-add⇧→Add next region to selection
region:select-prev-add⇧←Add previous region to selection
edit:cut-at-playheadYSplit selected regions at the playhead
edit:copy⌘CCopy selected regions to clipboard
edit:paste⌘VPaste regions from clipboard at playhead
edit:delete-selectedDelete all selected regions
region:check-asset-usageCheck if a region’s asset is used by other regions

Click and drag a region to move it along the timeline or between tracks. If snapping is enabled, the region will snap to the nearest grid position.

For audio and video regions, moving also updates the sample-accurate start/end positions to keep playback synchronized.

-- Move region to tick 3840 (bar 2) on the same track
pl.cmd("region:move", {
track_id = 1,
region_id = "r_abc_0",
tick = 3840
})
-- Move region to a different track
pl.cmd("region:move", {
track_id = 1,
region_id = "r_abc_0",
target_track_id = 2,
tick = 0
})

Drag the right edge of a region to change its duration. The minimum duration is 240 ticks (one sixteenth note). For audio/video regions, resizing also updates the sample-accurate end position.

-- Resize region to 2 bars (7680 ticks in 4/4)
pl.cmd("region:resize", {
track_id = 1,
region_id = "r_abc_0",
duration = 7680
})

Drag the left edge of a region to trim the start. This simultaneously adjusts the region’s position, offset, and duration — the end point stays fixed while the start moves.

-- Trim region start to tick 480 (offset 480 ticks into source)
pl.cmd("region:trim-start", {
track_id = 1,
region_id = "r_abc_0",
tick = 480,
offset = 480,
duration = 3360
})

Place the playhead at the desired split point and press Y (or Edit > Split at Playhead). All selected regions that span the playhead position will be split into two separate regions.

-- Split selected regions at the playhead
pl.cmd("edit:cut-at-playhead")

The split operation:

  1. Creates a new region starting at the playhead position
  2. Adjusts the original region’s duration to end at the playhead
  3. Handles child regions (parent-child hierarchies are preserved)

Select regions and use ⌘C to copy, then ⌘V to paste. The pasted regions are placed at the current playhead position.

-- Copy selection
pl.cmd("edit:copy")
-- Paste at playhead
pl.cmd("edit:paste")

Select one or more regions and press to delete them.

-- Delete a specific region
pl.cmd("region:delete", {
track_id = 1,
region_id = "r_abc_0"
})
-- Delete all selected regions
pl.cmd("edit:delete-selected")

Navigate between regions on the current track with the arrow keys.

ShortcutCommandDescription
region:select-nextSelect the next region
region:select-prevSelect the previous region
⇧→region:select-next-addExtend selection to next region
⇧←region:select-prev-addExtend selection to previous region
-- Select the next region on the current track
pl.cmd("region:select-next")
-- Extend selection to include next region
pl.cmd("region:select-next-add")

Text regions hold lyrics, cue notes, or scene descriptions. Create them on text tracks with the region:create-text command.

-- Create a text region at the playhead
pl.cmd("region:create-text")

Text regions support:

  • text_content — Raw text content
  • text_words — Word-level timing data
  • text_notes — Editable text notes
  • text_language — Language code (BCP-47)
  • text_link_group — Group ID for linked text regions

Regions on the same track cannot overlap. When moving or duplicating regions, the operation is rejected if it would cause an overlap with existing regions on the target track.

All region operations (move, resize, trim, split, delete, copy, paste) support full undo/redo. Press ⌘Z to undo and ⌘⇧Z to redo.

  • Timeline — Track management and timeline overview
  • Automation — Automation lanes and curves
  • Audio — Audio recording and processing
  • MIDI — MIDI recording and editing