---
title: "SuperTrack"
description: "API documentation for SuperTrack"
url: https://developer.disguise.one/python-api/docs/supertrack/
---

# SuperTrack

See also: [Track & Sequencing Guide](/plugins/guides/track-and-sequencing)

Base class (inherits properties and methods): _[Resource](/python-api/docs/resource#resource)_

Subclasses: _[Look](/python-api/docs/look#look)_, _[Track](/python-api/docs/track#track)_

## Nested Classes

-   [AudioSection](/python-api/docs/supertrack.audiosection#audiosection)

## Properties

#### **DMX\_fixtures** : _int_

_Options: {0: ‘Off’, 1: ‘On’}_

#### **arrows** : _List\[[Arrow](/python-api/docs/arrow#arrow)\]_

#### **audio\_sections** : _List\[[SuperTrack.AudioSection](/python-api/docs/supertrack.audiosection#audiosection)\]_

#### **bpm** : _float_

#### **clock\_divide** : _float_

#### **count\_in\_beats** : _float_

#### **layerColourRuleSet** : _[LayerColourRuleSet](/python-api/docs/layercolourruleset#layercolourruleset)_

Customize how layers appear on the timeline

_UserName: Layer colour rules_

#### **layers** : _List\[[SuperLayer](/python-api/docs/superlayer#superlayer)\]_

#### **lengthInBeats** : _float_

#### **lengthInSec** : _float_ _(Read-Only)_

#### **quant** : _int_

_Options: {0: ‘0’, 1: ‘1’, 2: ‘4’}_

## Variables

#### **DontTouchLayers** : _Final\[[AffectLayers](/python-api/docs/affectlayers#affectlayers)\]_ = AffectLayers.DontTouchLayers

#### **EditEnd** : _Final\[[LayerEdit](/python-api/docs/layeredit#layeredit)\]_ = LayerEdit.EditEnd

#### **EditStart** : _Final\[[LayerEdit](/python-api/docs/layeredit#layeredit)\]_ = LayerEdit.EditStart

#### **MoveLayers** : _Final\[[AffectLayers](/python-api/docs/affectlayers#affectlayers)\]_ = AffectLayers.MoveLayers

#### **Next** : _Final\[[Direction](/python-api/docs/direction#direction)\]_ = Direction.Next

#### **Prev** : _Final\[[Direction](/python-api/docs/direction#direction)\]_ = Direction.Prev

#### **StretchLayers** : _Final\[[AffectLayers](/python-api/docs/affectlayers#affectlayers)\]_ = AffectLayers.StretchLayers

## Methods

#### **addLayer**(self, l: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, t: _float_, iLayer: _int_)

#### **addLayerToGroup**(self, l: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, g: _[GroupLayer](/python-api/docs/grouplayer#grouplayer)_)

#### **addNewLayer**(self, moduleType: _type_, t: _float_, length: _float_, name: _str_) -> _[Layer](/python-api/docs/layer#layer)_

#### **audioTrack**(self, iBeat: _float_) -> _[AudioTrack](/python-api/docs/audiotrack#audiotrack)_

#### **beatIsEnd**(self, iBeat: _float_) -> _bool_

#### **beatIsStart**(self, iBeat: _float_) -> _bool_

#### **beatIsValid**(self, iBeat: _float_) -> _bool_

#### **beatToTime**(self, iBeat: _float_) -> _float_

#### **bpmAt**(self, iBeat: _float_) -> _float_

#### **clear**(self)

Clear all layers, arrows and audio sections from the track.

#### **clearArrows**(self)

#### **contains**(self, sl: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, searchLeafOnly: _bool_ = True) -> _bool_

Whether the track contains the layer sl

**Parameters**:

-   sl: The superlayer to search for
-   searchLeafOnly: If true, only leaf layers will be searched, otherwise all layers (including GroupLayer instances) will be searched.

return: Whether the superlayer is found in the track

#### **duplicateLayer**(self, layer: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, duplicateName: _str_) -> _[SuperLayer](/python-api/docs/superlayer#superlayer)_

#### **duplicateLayerIndex**(self, l: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, duplicateName: _str_, index: _int_) -> _[SuperLayer](/python-api/docs/superlayer#superlayer)_

#### **enableRender**(self, onOff: _bool_)

#### **extractLayerFromGroup**(self, l: _[SuperLayer](/python-api/docs/superlayer#superlayer)_)

#### **findLayerByName**(self, name: _str_) -> _[Layer](/python-api/docs/layer#layer)_

#### **findLayerIndex**(self, layer: _[SuperLayer](/python-api/docs/superlayer#superlayer)_) -> _int_

#### **getLayersAssociatedWithPatch**(self, patch: _[ControlPatch](/python-api/docs/controlpatch#controlpatch)_) -> _List\[[Layer](/python-api/docs/layer#layer)\]_

#### **getLeafLayers**(self, type: _type_) -> _List\[[Layer](/python-api/docs/layer#layer)\]_

#### **getUnsupportedLayers**(self, sl: _[SuperLayer](/python-api/docs/superlayer#superlayer)_) -> _List\[str\]_

Gets a list of layers in the given SuperLayer which are not supported for this type of track.

**Parameters**:

-   sl The SuperLayer to check for unsupported layers.

**Returns** A vector of strings representing the description of unsupported layers.

#### **globalBeatToLocalBeat**(self, tGlobal: _float_) -> _float_

#### **groupLayers**(self, layers: _List\[[SuperLayer](/python-api/docs/superlayer#superlayer)\]_, name: _str_, smart: _bool_)

#### **insertAudioBeats**(self, iBeat: _float_, nBeats: _float_, affect: _[AffectLayers](/python-api/docs/affectlayers#affectlayers)_)

Insert audio bars into the track at position iBeat, shifting everything after that point forward by nBeats.

After manipulating audio sections, this also inserts beats into the track and adjusts layers accordingly.

**Parameters**:

-   iBeat The beat position at which to insert new audio bars.
-   nBeats The number of beats to insert.
-   affect Specifies how layers should be affected:
-   DontTouchLayers: Only the track length is changed; layers remain unaffected.
-   MoveLayers: Layers starting at or after iBeat are moved backward by nBeats.
-   StretchLayers: Layers starting at or after iBeat are compressed to accommodate the removed beats.

#### **insertBeats**(self, iBeat: _float_, nBeats: _float_, affect: _[AffectLayers](/python-api/docs/affectlayers#affectlayers)_)

Insert beats into the track at position iBeat, shifting everything after that point forward by nBeats.

Note this does not affect audio sections; use insertAudioBeats() for that.

**Parameters**:

-   iBeat The beat position at which to insert new beats.
-   nBeats The number of beats to insert.
-   affect Specifies how layers should be affected:
-   DontTouchLayers: Only the track length is changed; layers remain unaffected.
-   MoveLayers: Layers starting at or after iBeat are moved forward by nBeats.
-   StretchLayers: Layers starting at or after iBeat are stretched to accommodate the new beats.

#### **insertBlank**(self, iBeat: _float_, nBeats: _float_, affect: _[AffectLayers](/python-api/docs/affectlayers#affectlayers)_)

Insert blank space into the track at position iBeat, shifting all layers and keys forward by nBeats.

Note this does not affect any Cues or audio sections; use insertBeats() / insertAudioBeats() for that.

**Parameters**:

-   iBeat The beat position at which to insert blank space.
-   nBeats The number of beats of blank space to insert.
-   affect Specifies how layers should be affected:
-   DontTouchLayers: Only the track length is changed; layers remain unaffected.
-   MoveLayers: Layers starting at or after iBeat are moved backward by nBeats.
-   StretchLayers: Layers starting at or after iBeat are compressed to accommodate the removed beats.

#### **insertSilentAudioBeats**(self, iBeat: _float_, nBeats: _float_, affect: _[AffectLayers](/python-api/docs/affectlayers#affectlayers)_)

Insert silent audio bars into the track at position iBeat, shifting everything after that point forward by nBeats.

After manipulating audio sections, this also inserts beats into the track and adjusts layers accordingly.

**Parameters**:

-   iBeat The beat position at which to insert new audio bars.
-   nBeats The number of beats to insert.
-   affect Specifies how layers should be affected:
-   DontTouchLayers: Only the track length is changed; layers remain unaffected.
-   MoveLayers: Layers starting at or after iBeat are moved backward by nBeats.
-   StretchLayers: Layers starting at or after iBeat are compressed to accommodate the removed beats.

#### **makeArrow**(self, src: _[Module](/python-api/docs/module#module)_, dest: _[Module](/python-api/docs/module#module)_)

#### **moduleIsSupported**(self, moduleType: _type_) -> _bool_

Whether the given module type is supported in this track

**Parameters**:

-   moduleType: The type of the module to check, e.g. VariableVideoModule\`

**Returns**: True if the module is supported, otherwise False

#### **moveLayerToIndex**(self, l: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, newIndex: _int_)

#### **moveLayerToIndexInGroup**(self, l: _[SuperLayer](/python-api/docs/superlayer#superlayer)_, newIndex: _int_)

#### **moveLayersDown**(self, layers: _List\[[SuperLayer](/python-api/docs/superlayer#superlayer)\]_)

#### **moveLayersUp**(self, layers: _List\[[SuperLayer](/python-api/docs/superlayer#superlayer)\]_)

#### **nLayers**(self) -> _int_

#### **removeArrow**(self, arrow: _[Arrow](/python-api/docs/arrow#arrow)_)

#### **removeAudioBeats**(self, iBeat: _float_, nBeats: _float_, deleteBars: _bool_)

Remove audio bars from the track starting at position iBeat, shifting everything after that point backward by nBeats.

After manipulating audio sections, this also removes beats from the track and adjusts layers accordingly.

**Parameters**:

-   iBeat The beat position at which to insert new audio bars.
-   nBeats The number of beats to insert.
-   affect Specifies how layers should be affected:
-   DontTouchLayers: Only the track length is changed; layers remain unaffected.
-   MoveLayers: Layers starting at or after iBeat are moved backward by nBeats.
-   StretchLayers: Layers starting at or after iBeat are compressed to accommodate the removed beats.

#### **removeBeats**(self, iBeat: _float_, nBeats: _float_, affect: _[AffectLayers](/python-api/docs/affectlayers#affectlayers)_)

Remove beats from the track starting at position iBeat, shifting everything after that point backward by nBeats.

Note this does not affect audio sections; use removeAudioBeats() for that.

**Parameters**:

-   iBeat The beat position from which to start removing beats.
-   nBeats The number of beats to remove.
-   affect Specifies how layers should be affected:
-   DontTouchLayers: Only the track length is changed; layers remain unaffected.
-   MoveLayers: Layers starting at or after iBeat are moved backward by nBeats.
-   StretchLayers: Layers starting at or after iBeat are compressed to accommodate the removed beats.

#### **removeInvalidLayers**(self)

#### **removeLayer**(self, layer: _[SuperLayer](/python-api/docs/superlayer#superlayer)_) -> _int_

#### **removeLayers**(self, iBeat: _float_, nBeats: _float_)

Remove layers & sequencing from the track starting at position iBeat, shifting all layers and keys afterward backward by nBeats.

Note this does not affect any Cues or audio sections; use removeBeats() / removeAudioBeats() for that.

**Parameters**:

-   iBeat The beat position from which to start removing space.
-   nBeats The number of beats of space to remove.

#### **setAudioTrack**(self, track: _[AudioTrack](/python-api/docs/audiotrack#audiotrack)_)

Replaces the audio track on this SuperTrack. Any existing audio sections on the SuperTrack are discarded and replaced with a single section spanning the new track.

#### **splitLayersAtBeat**(self, layers: _List\[[SuperLayer](/python-api/docs/superlayer#superlayer)\]_, t: _float_) -> _List\[[SuperLayer](/python-api/docs/superlayer#superlayer)\]_

#### **timeToBeat**(self, tSec: _float_) -> _float_

#### **ungroupLayer**(self, g: _[GroupLayer](/python-api/docs/grouplayer#grouplayer)_)
