Skip to main content

MainTrackList

context.mainTrackList is the track-list surface used for selection and track creation workflows. Also accessible as context.trackList (same object reference).

Available in performEdit (TrackEdit context) only.

Properties​

PropertyTypeWritableExampleDescription
numSelectedTracksnumberNo1Number of currently selected tracks.
numTracksnumberNo3Total number of tracks in the project.

Methods​

MethodReturnsParametersDescription
expandAll(expand, recursive)—expand (boolean, req): true = expand, false = collapse. recursive (boolean, req): true = apply to nested folders.Expands or collapses all folder tracks.
getInsertPosition()number(none)Returns the track insert position. Returns a valid index when a track is selected, -1 when no track is selected.
getTrack(index)objectindex (number, req): Track index.Returns the track at the given index. See Track Object.
getSelectedTrack(index)objectindex (number, req): Selected-track index.Returns the selected track at the given index. See Track Object. Same object as getTrack(index) for the same track.
selectTrack(track, addToSelection, exclusive)—track (object, req): A track object. addToSelection (boolean, opt): true = add to selection, false = deselect. exclusive (boolean, opt): true = unselect others first.Selects or deselects a track. Accepts 1 arg (track only) to select exclusively, or 2-3 args for fine control.
unselectAll()—(none)Clears the track selection.

Track Creation Pattern​

context.mainTrackList provides the insertion index. musicPartFunctions (see functions) creates the folder and child tracks, then moveToFolder(parentFolder, track, childIndex) moves the child track into the folder.

include_file("resource://{main}/sdk/engine.js");

var root = context.functions.root;
var musicPartFunctions = root.createFunctions("MusicPartFunctions");

var trackFormat = Host.Engine.TrackFormats.findEqual("Instrument");
var insertIndex = context.mainTrackList.getInsertPosition();

musicPartFunctions.executeImmediately = true;

var folderTrack = musicPartFunctions.addTrack(
Engine.JS.kClassFolderTrack,
insertIndex,
"Folder"
);

var childTrack = musicPartFunctions.addMediaTrack(
insertIndex + 1,
"Child",
trackFormat
);

musicPartFunctions.moveToFolder(folderTrack, childTrack, 0);