UNPKG

timeline-state-resolver-types

Version:
207 lines • 7.38 kB
import { DeviceType } from '..'; export type TriCasterMixEffectName = 'main' | `v${number}`; export type TriCasterKeyerName = `dsk${number}`; export type TriCasterInputName = `input${number}`; export type TriCasterSourceName = TriCasterInputName | `ddr${number}` | `bfr${number}` | 'black'; export type TriCasterAudioChannelName = TriCasterSourceName | 'sound' | 'master'; export type TriCasterLayerName = 'a' | 'b' | 'c' | 'd'; export type TriCasterDelegateName = 'background' | TriCasterKeyerName; export type TriCasterMixOutputName = `mix${number}`; export type TriCasterMatrixOutputName = `out${number}`; export type TriCasterMixOutputSource = TriCasterSourceName | TriCasterMixEffectName | 'program' | 'preview' | 'program_clean' | 'me_program' | 'me_preview'; export type TriCasterMatrixOutputSource = TriCasterSourceName | TriCasterMixOutputName; export interface TriCasterOptions { host: string; port: number; } export declare enum TimelineContentTypeTriCaster { ME = "ME", DSK = "DSK", INPUT = "INPUT", AUDIO_CHANNEL = "AUDIO_CHANNEL", MIX_OUTPUT = "MIX_OUTPUT", MATRIX_OUTPUT = "MATRIX_OUTPUT" } export type TimelineContentTriCasterAny = TimelineContentTriCasterME | TimelineContentTriCasterDSK | TimelineContentTriCasterInput | TimelineContentTriCasterAudioChannel | TimelineContentTriCasterMixOutput | TimelineContentTriCasterMatrixOutput; export interface TimelineContentTriCasterBase { deviceType: DeviceType.TRICASTER; type: TimelineContentTypeTriCaster; /** * Priority used to sort commands that are supposed to execute at the same time * Lower means faster execution (analaogous to other device integrations) * Default: 0 */ temporalPriority?: number; } interface TriCasterMixEffectBase { transitionEffect?: TriCasterTransitionEffect; keyers?: Record<TriCasterKeyerName, TriCasterKeyer>; /** Default: 'background' */ delegates?: TriCasterDelegateName[]; } export interface TriCasterMixEffectInMixMode extends TriCasterMixEffectBase { programInput?: string; /** Duration in seconds, applicable to effects other than 'cut' */ transitionDuration?: number; } export interface TriCasterMixEffectWithPreview extends TriCasterMixEffectInMixMode { previewInput?: string; transitionEffect?: 'cut'; } export interface TriCasterMixEffectInEffectMode extends TriCasterMixEffectBase { /** Use only in conjunction with effects that use M/E rows as layers (e.g. LiveSets) */ layers?: Partial<Record<TriCasterLayerName, TriCasterLayer>>; transitionEffect?: number; } export type TriCasterMixEffect = TriCasterMixEffectInEffectMode | TriCasterMixEffectWithPreview | TriCasterMixEffectInMixMode; export interface TimelineContentTriCasterME extends TimelineContentTriCasterBase { type: TimelineContentTypeTriCaster.ME; me: TriCasterMixEffect; } /** * Convenience object for the keyers in the Main M/E */ export interface TimelineContentTriCasterDSK extends TimelineContentTriCasterBase { type: TimelineContentTypeTriCaster.DSK; keyer: TriCasterKeyer; } export interface TriCasterInput { videoActAsAlpha?: boolean; videoSource?: string; } export interface TimelineContentTriCasterInput extends TimelineContentTriCasterBase { type: TimelineContentTypeTriCaster.INPUT; input: TriCasterInput; } export interface TriCasterAudioChannel { isMuted?: boolean; /** * Volume (dB) * Default: 0 */ volume?: number; } export interface TimelineContentTriCasterAudioChannel extends TimelineContentTriCasterBase { type: TimelineContentTypeTriCaster.AUDIO_CHANNEL; audioChannel: TriCasterAudioChannel; } export interface TimelineContentTriCasterMixOutput extends TimelineContentTriCasterBase { type: TimelineContentTypeTriCaster.MIX_OUTPUT; /** * Any of the named Inputs, Media Players and Buffers ('inputN', 'ddrN', 'bfrN') e.g. 'input12' * or any of the MEs ('vN') e.g. 'v1' * or 'program', 'preview', 'program_clean', 'me_program', 'me_preview' */ source: TriCasterMixOutputSource; /** * Whether the clean version of the ME should be selected */ meClean?: boolean; } /** * Output from the Internal Matrix Router (crosspoint) */ export interface TimelineContentTriCasterMatrixOutput extends TimelineContentTriCasterBase { type: TimelineContentTypeTriCaster.MATRIX_OUTPUT; /** * Any of the named Inputs, Media Players and Buffers ('inputN', 'ddrN', 'bfrN') e.g. 'input12' * or mix outputs ('mixN') e.g. 'mix2' */ source: TriCasterMatrixOutputSource; } export type TriCasterTransitionEffect = 'cut' | 'fade' | number; /** * Properties of a layer in effect mode (as opposed to transition mode) * Value ranges in this type adhere to the API and may differ from the GUI */ export interface TriCasterLayer { input?: string; /** * Enables position, scale, rotation, crop and feather, but it's weird, * so setting it to false while any of said properties are defined may * lead to unwanted behaviour */ positioningAndCropEnabled?: boolean; position?: { /** * Horizontal translation * Default: 0.0 (center) * Frame width: 3.555... (-3.555 is fully off-screen to the left at scale=1.0) */ x: number; /** * Vertical translation * Default: 0.0 (center) * Frame height: 2.0 (-2.0 is fully off-screen to the top at scale=1.0) */ y: number; }; scale?: { /** * Horizontal scale factor * Default: 1.0; Range: 0.0 to 5.0 */ x: number; /** * Vertical scale factor * Default: 1.0; Range: 0.0 to 5.0 */ y: number; }; rotation?: { /** * X-axis rotation (degrees) * Default: 0.0; Range: -1440.0 to 1440.0 */ x: number; /** * Y-axis rotation (degrees) * Default: 0.0; Range: -1440.0 to 1440.0 */ y: number; /** * Z-axis rotation (perpendicular to screen plane) (degrees) * Default: 0.0; Range: -1440.0 to 1440.0 */ z: number; }; crop?: { /** * Crop left (percentage) * Default: 0.0 (center); Range: 0.0 to 100.0 */ left: number; /** * Crop right (percentage) * Default: 0.0 (center); Range: 0.0 to 100.0 */ right: number; /** * Crop up (from the top, hence called "Bottom" in the UI) (percentage) * Default: 0.0 (center); Range: 0.0 to 100.0 */ up: number; /** * Crop down (from the top, hence called "Top" in the UI) (percentage) * Default: 0.0 (center); Range: 0.0 to 100.0 */ down: number; }; /** * Border feather (percentage) * Default: 0.0; Range: 0.0 to 100.0 */ feather?: number; } /** * Properties of a keyer * Value ranges in this type adhere to the API and may differ from the GUI */ export interface TriCasterKeyer extends TriCasterLayer { onAir?: boolean; transitionEffect?: TriCasterTransitionEffect; /** Duration in seconds, applicable to effects other than 'cut' */ transitionDuration?: number; } export {}; //# sourceMappingURL=tricaster.d.ts.map