timeline-state-resolver-types
Version:
Have timeline, control stuff
398 lines • 11.7 kB
TypeScript
import { DeviceType } from '..';
export declare enum TimelineContentTypeAtem {
ME = "me",
DSK = "dsk",
AUX = "aux",
SSRC = "ssrc",
SSRCPROPS = "ssrcProps",
MEDIAPLAYER = "mp",
AUDIOCHANNEL = "audioChan",
MACROPLAYER = "macroPlayer",
AUDIOROUTING = "audioRouting",
COLORGENERATOR = "colorGenerator"
}
export declare enum AtemTransitionStyle {
MIX = 0,
DIP = 1,
WIPE = 2,
DVE = 3,
STING = 4,
CUT = 5,
DUMMY = 6
}
export declare enum MediaSourceType {
Still = 1,
Clip = 2
}
export declare enum BorderBevel {
None = 0,
InOut = 1,
In = 2,
Out = 3
}
export declare enum FlyKeyKeyFrame {
None = 0,
A = 1,
B = 2,
Full = 3,
RunToInfinite = 4
}
export declare enum FlyKeyDirection {
CentreOfKey = 0,
TopLeft = 1,
TopCentre = 2,
TopRight = 3,
MiddleLeft = 4,
MiddleCentre = 5,
MiddleRight = 6,
BottomLeft = 7,
BottomCentre = 8,
BottomRight = 9
}
export type SuperSourceBox = {
enabled?: boolean;
source?: number;
/** -4800 - 4800 */
x?: number;
/** -2700 - 2700 */
y?: number;
/** 70 - 1000 */
size?: number;
cropped?: boolean;
/** 0 - 18000 */
cropTop?: number;
/** 0 - 18000 */
cropBottom?: number;
/** 0 - 32000 */
cropLeft?: number;
/** 0 - 32000 */
cropRight?: number;
};
export interface AtemTransitionSettings {
mix?: {
rate: number;
};
dip?: {
rate: number;
input: number;
};
stinger?: {
/** index of the mediaplayer (0-3) - note: putting this at a number that the mixer doesn't support may crash the connection */
source: number;
preMultipliedKey?: boolean;
clip?: number;
/** 0 - 1000 */
gain?: number;
invert?: boolean;
preroll?: number;
clipDuration?: number;
triggerPoint?: number;
mixRate?: number;
};
wipe?: {
/** 1 - 250 frames */
rate?: number;
/** 0 - 17 */
pattern?: number;
/** 0 - 10000 */
borderWidth?: number;
borderInput?: number;
/** 0 - 10000 */
symmetry?: number;
/** 0 - 10000 */
borderSoftness?: number;
/** 0 - 10000 */
xPosition?: number;
/** 0 - 10000 */
yPosition?: number;
reverseDirection?: boolean;
flipFlop?: boolean;
};
}
export type TimelineContentAtemAny = TimelineContentAtemME | TimelineContentAtemDSK | TimelineContentAtemAUX | TimelineContentAtemSsrc | TimelineContentAtemSsrcProps | TimelineContentAtemMacroPlayer | TimelineContentAtemAudioChannel | TimelineContentAtemMediaPlayer | TimelineContentAtemAudioRouting | TimelineContentAtemColorGenerator;
export interface TimelineContentAtemBase {
deviceType: DeviceType.ATEM;
type: TimelineContentTypeAtem;
}
type Without<T, U> = {
[P in Exclude<keyof T, keyof U>]?: never;
};
type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
export interface TimelineContentAtemME extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.ME;
me: XOR<{
input: number;
transition: AtemTransitionStyle;
}, {
/** Cut directly to program */
programInput?: number;
/**
* Set preview input.
* Cannot be used in conjunction with `input`;
* `programInput` must be used instead if control of program and preview are both needed.
*/
previewInput?: number;
}> & {
/** Is ME in transition state */
inTransition?: boolean;
/** Should preview transition */
transitionPreview?: boolean;
/** Position of T-bar */
transitionPosition?: number;
/** Settings for mix rate, wipe style */
transitionSettings?: AtemTransitionSettings;
upstreamKeyers?: {
readonly upstreamKeyerId: number;
onAir?: boolean;
/** 0: Luma, 1: Chroma, 2: Pattern, 3: DVE */
mixEffectKeyType?: number;
/** Use flying key */
flyEnabled?: boolean;
/** Fill */
fillSource?: number;
/** Key */
cutSource?: number;
/** Mask keyer */
maskEnabled?: boolean;
/** -9000 -> 9000 */
maskTop?: number;
/** -9000 -> 9000 */
maskBottom?: number;
/** -16000 -> 16000 */
maskLeft?: number;
/** -16000 -> 16000 */
maskRight?: number;
dveSettings?: AtemDVESettings;
flyKeyframes?: [AtemFlyKeyframe | undefined, AtemFlyKeyframe | undefined];
flyProperties?: {
isAtKeyFrame?: FlyKeyKeyFrame;
runToInfiniteIndex?: FlyKeyDirection;
};
lumaSettings?: {
/** Premultiply key */
preMultiplied?: boolean;
/** 0-1000 */
clip?: number;
/** 0-1000 */
gain?: number;
/** Invert key */
invert?: boolean;
};
}[];
};
}
export interface TimelineContentAtemDSK extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.DSK;
dsk: {
onAir: boolean;
sources?: {
/** Fill */
fillSource: number;
/** Key */
cutSource: number;
};
properties?: {
/** On at next transition */
tie?: boolean;
/** 1 - 250 frames */
rate?: number;
/** Premultiply key */
preMultiply?: boolean;
/** 0 - 1000 */
clip?: number;
/** 0 - 1000 */
gain?: number;
/** Invert key */
invert?: boolean;
mask?: {
enabled: boolean;
/** -9000 -> 9000 */
top?: number;
/** -9000 -> 9000 */
bottom?: number;
/** -16000 -> 16000 */
left?: number;
/** -16000 -> 16000 */
right?: number;
};
};
};
}
export interface TimelineContentAtemAUX extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.AUX;
aux: {
input: number;
};
}
export interface TimelineContentAtemSsrc extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.SSRC;
ssrc: {
boxes: Array<SuperSourceBox>;
};
}
interface AtemSSrcPropsBase {
/** Fill source */
artFillSource: number;
/** Key source */
artCutSource: number;
/** 0: Art Source in background, 1: Art Source in foreground */
artOption: number;
}
interface AtemSSrcPropsPreMultiplied extends AtemSSrcPropsBase {
/** Premultiply key for Art Source */
artPreMultiplied: true;
}
interface AtemSSrcPropsStraight extends AtemSSrcPropsBase {
/** Premultiply key for Art Source */
artPreMultiplied: false;
/** Linear keyer Clip value for Art Source, 0-1000 */
artClip: number;
/** Linear keyer Gain value for Art Source, 0-1000 */
artGain: number;
/** Invert keyer Key input */
artInvertKey: boolean;
}
interface AtemSSrcPropsNoBorder {
/** Enable borders on boxes */
borderEnabled?: false;
}
interface AtemSSrcPropsBorder {
/** Enable borders on boxes */
borderEnabled?: true;
/** Border Bevel mode:
* 0: no bevel, 1: in/out, 2: in, 3: out
*/
borderBevel: number;
/** Width of the outer side of the bevel, 0-1600 */
borderOuterWidth: number;
/** Width of the inner side of the bevel, 0-1600 */
borderInnerWidth: number;
/** Softness of the outer side of the bevel, 0-100 */
borderOuterSoftness: number;
/** Softness of the inner side of the bevel, 0-100 */
borderInnerSoftness: number;
/** Softness of the bevel, 0-100 */
borderBevelSoftness: number;
/** Position of the bevel, 0-100 */
borderBevelPosition: number;
/** Hue of the border color, 0-3599 */
borderHue: number;
/** Saturation of the border color, 0-1000 */
borderSaturation: number;
/** Luminance of the border color, 0-1000 */
borderLuma: number;
/** Light source direction for rendering the bevel, 0-3590 */
borderLightSourceDirection: number;
/** Light source altitude for rendering the bevel, 10-100 */
borderLightSourceAltitude: number;
}
interface AtemDVESettings extends AtemDVEBaseSettings {
/** whether the DVE should have a border */
borderEnabled?: boolean;
/** whether the DVE should have a shadow */
shadowEnabled?: boolean;
/** what type of bevel the border has, defaults to none */
borderBevel?: BorderBevel;
/** 1 - 250 */
rate?: number;
}
interface AtemDVEBaseSettings {
/** 0 - 99990 */
sizeX?: number;
/** 0 - 99990 */
sizeY?: number;
/** -1000000 - 1000000 */
positionX?: number;
/** -1000000 - 1000000 */
positionY?: number;
/** -332230 - 332230 */
rotation?: number;
/** 0 - 1600 */
borderOuterWidth?: number;
/** 0 - 1600 */
borderInnerWidth?: number;
/** 0 - 100 */
borderOuterSoftness?: number;
/** 0 - 100 */
borderInnerSoftness?: number;
/** 0 - 100 */
borderBevelSoftness?: number;
/** 0 - 100 */
borderBevelPosition?: number;
/** 0 - 100 */
borderOpacity?: number;
/** 0 - 3599 */
borderHue?: number;
/** 0 - 1000 */
borderSaturation?: number;
/** 0 - 1000 */
borderLuma?: number;
/** 0 - 3559 */
lightSourceDirection?: number;
/** 0 - 100 */
lightSourceAltitude?: number;
maskEnabled?: boolean;
/** 0 - 38000 */
maskTop?: number;
/** 0 - 38000 */
maskBottom?: number;
/** 0 - 52000 */
maskLeft?: number;
/** 0 - 52000 */
maskRight?: number;
}
type AtemFlyKeyframe = Omit<AtemDVEBaseSettings, 'maskEnabled'>;
export interface TimelineContentAtemSsrcProps extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.SSRCPROPS;
ssrcProps: (AtemSSrcPropsPreMultiplied | AtemSSrcPropsStraight) & (AtemSSrcPropsNoBorder | AtemSSrcPropsBorder);
}
export interface TimelineContentAtemMediaPlayer extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.MEDIAPLAYER;
mediaPlayer: {
sourceType: MediaSourceType;
clipIndex: number;
stillIndex: number;
playing: boolean;
loop: boolean;
atBeginning: boolean;
clipFrame: number;
};
}
export interface TimelineContentAtemAudioChannel extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.AUDIOCHANNEL;
audioChannel: {
/** 0 - 65381 */
gain?: number;
/** -10000 - 10000 */
balance?: number;
/** 0: Off, 1: On, 2: AFV */
mixOption?: number;
};
}
export interface TimelineContentAtemMacroPlayer extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.MACROPLAYER;
macroPlayer: {
macroIndex: number;
isRunning: boolean;
loop?: boolean;
};
}
export interface TimelineContentAtemAudioRouting extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.AUDIOROUTING;
audioRouting: {
sourceId: number;
};
}
export interface TimelineContentAtemColorGenerator extends TimelineContentAtemBase {
type: TimelineContentTypeAtem.COLORGENERATOR;
colorGenerator: {
/** 0-3599 */
hue: number;
/** 0-1000 */
saturation: number;
/** 0-1000 */
luma: number;
};
}
export {};
//# sourceMappingURL=atem.d.ts.map