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

# TransportManager

TransportManager controls a single track at a time,  
allowing a wide variety of external control methods.

It contains a `player` member which is the local live view of the playback status.

See also: [Transports Guide](/plugins/guides/transports)

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

## Nested Classes

-   [SendTransportCommandsMode](/python-api/docs/transportmanager.sendtransportcommandsmode#sendtransportcommandsmode)

## Properties

#### **customFpsType** : _[CustomFpsType](/python-api/docs/customfpstype#customfpstype)_

Synonym for ‘enableCustomFps’

#### **customTimelineFps** : _float_

If the custom FPS override is set to ‘Custom’, this is the FPS to use.

#### **enableCustomFps** : _[CustomFpsType](/python-api/docs/customfpstype#customfpstype)_

Select the type of FPS override for the transport commands

#### **engaged** : _bool_

Synonym for `status` - if disabled, external commands are ignored.

#### **local\_transports** : _List\[[EventTransport](/python-api/docs/eventtransport#eventtransport)\]_

The set of local transport sources. These are always used, even if disengaged.

_Category: Event Transports  
UserName: Local Transports_

#### **monitorString** : _str_

Timecode monitor

#### **on\_clock\_lost** : _int_

What to do when the Timecode is lost.

_Options: {0: ‘Keep Playing’, 1: ‘Stop’}  
Category: Timecode  
UserName: On clock lost_

#### **on\_clock\_regained** : _int_

What to do when Timecode is regained

_Options: {0: ‘Reset to start’, 1: ‘Play from current’}  
Category: Timecode  
UserName: On clock regained_

#### **play\_mode** : _int_

Play mode to use when chasing timecode.

_Options: {0: ‘Play’, 1: ‘Play To End Of Section’, 2: ‘Loop Section’}  
Category: Timecode  
UserName: Play mode_

#### **playbackStatusMonitor** : _[PlaybackStatusMonitor](/python-api/docs/playbackstatusmonitor#playbackstatusmonitor)_

A device used to externally monitor current playback status.

#### **player** : _[TrackPlayer](/python-api/docs/trackplayer#trackplayer)_ _(Read-Only)_

The player responsible for updating the compositor

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

If timecode is prerolling, how long until playback, in seconds.

#### **remote\_transports** : _List\[[EventTransport](/python-api/docs/eventtransport#eventtransport)\]_

The set of show-wide external transport sources. These are ignored if the transport is disengaged.

_Category: Event Transports  
UserName: Remote Transports_

#### **remotetransportmode** : _int_

Allow editors to interact with the session (controls live update, transport locking)

#### **schedule** : _Schedule_

Used to automatically control the transport manager.

_Category: Schedule  
UserName: Schedule_

#### **sendTransportCommands** : _int_

Whether transport commands should be sent or blocked (stops actors getting updates)

#### **sendTransportCommandsMode** : _[TransportManager.SendTransportCommandsMode](/python-api/docs/transportmanager.sendtransportcommandsmode#sendtransportcommandsmode)_

Synonym for `sendTransportCommands` - if set to “Do not send”, transport commands are not sent to connected devices.

#### **setList** : _[SetList](/python-api/docs/setlist#setlist)_

The set list determines the set of available tracks (e.g. for timecode or other global cue matching)

_Category: Set List  
UserName: Set list_

#### **status** : _int_

If disabled, external sources are ignored

#### **statusString** : _str_

Timecode status

#### **tcStatusString** : _str_ _(Read-Only)_

The same as `statusString`, before the ‘Forced’ behaviour is applied

#### **timecode** : _[TimecodeTransport](/python-api/docs/timecodetransport#timecodetransport)_

Timecode source

_Category: Timecode  
UserName: Timecode_

#### **timecode\_can\_change\_track** : _int_

If set, then timecode is allowed to change tracks

_Options: {0: ‘No’, 1: ‘Yes’}  
Category: Timecode  
UserName: Timecode can change track_

#### **traceLevel** : _int_

What level of debug tracing to issue commands at.

0: off, 1: all CMDs except Status, 2: all CMDs

#### **track** : _[Track](/python-api/docs/track#track)_ _(Read-Only)_

Convenience wrapper to get currently selected track (see `player`)

#### **trackToLoad** : _str_

The track used before the transport manager receives any track-selecting commands.

## Variables

#### **custom** : _Final\[[CustomFpsType](/python-api/docs/customfpstype#customfpstype)\]_ = CustomFpsType.CUSTOM

#### **globalRefreshRate** : _Final\[[CustomFpsType](/python-api/docs/customfpstype#customfpstype)\]_ = CustomFpsType.GLOBAL\_REFRESH\_RATE

#### **none** : _Final\[[CustomFpsType](/python-api/docs/customfpstype#customfpstype)\]_ = CustomFpsType.NONE

## Methods

#### **addCommand**(self, trCmd: _[TransportCommand](/python-api/docs/transportcommand#transportcommand)_)

Adds a command to the transport manager’s local queue.

This method adds a command to the transport manager’s local queue, which is used to manage the transport of data between the client and server.

**Parameters**:

-   trCmd: The command to add to the local queue.

#### **beatToTimecode**(self, tBeat: _float_) -> _[Timecode](/python-api/docs/timecode#timecode)_

Converts a beat to a timecode.

This method converts a beat value to a timecode using the transport manager’s SMPTE clock type and custom frame rate.

**Parameters**:

-   tBeat: The beat value to convert.

**Returns** The corresponding timecode.

#### **customFps**(self) -> _optional\[float\]_

Returns the custom FPS value if set, otherwise an empty optional.

This method returns the custom FPS value if it has been set using the `setCustomFps` method, or an empty optional if no custom FPS value has been set.

**Returns** The custom FPS value, or an empty optional if no custom FPS value has been set.

#### **forceJump**(self)

Forces a jump in the transport manager.

This method forces a jump in the transport manager, indicating that bias or tag has changed while playing so force a jump.

#### **lockToDirector**(self, source: _[Resource](/python-api/docs/resource#resource)_, jumpDirectorToMe: _bool_)

Locks the transport to the director.

**Parameters**:

-   source: The resource that triggered the locking, used as the TransportCommand source.
-   jumpDirectorToMe: If true, the local machine does not move, but the director (and the rest of the session) does.

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

Returns the SMPTE clock type used for timecode interpretation.

If a timecode transport is set, returns the transport’s SMPTE clock type.  
Otherwise, falls back to the project clock type.

Note: the Custom Timeline FPS setting (GLOBAL\_REFRESH\_RATE / CUSTOM) affects  
timeline stepping via timeStepSec(), not timecode interpretation here.

**Returns** The SMPTE clock type used by the transport manager.
