Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_id: IDs.playerClip, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_ABSOLUTE, value: 0 },
priority: 1,
duration: 0, // hold at end
LLayer: LLayers.casparcg_player_clip,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'mam/' + clip
}
}
}),
literal({
_id: IDs.atemSrv1, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.playerClip}.start + ${CasparOutputDelay}` },
priority: 1,
duration: 0,
LLayer: LLayers.atem_me_program,
content: {
type: TimelineContentTypeAtem.ME,
attributes: {
input: AtemSource.Server1,
transition: Atem_Enums.TransitionStyle.CUT
}
}
}),
// server1 to -15db/-inf
literal({
_id: IDs.lawo_clip, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.playerClip}.start + ${CasparOutputDelay}` },
priority: 1,
duration: 0,
LLayer: LLayers.atem_me_program,
content: {
type: TimelineContentTypeAtem.ME,
attributes: {
input: AtemSource.Server1,
transition: Atem_Enums.TransitionStyle.CUT
}
}
}),
// server1 to -15db/-inf
literal({
_id: IDs.lawo_clip, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.playerClip}.start + ${CasparOutputDelay}` },
priority: 1,
duration: 0,
LLayer: LLayers.lawo_source_clip,
content: {
type: TimelineContentTypeLawo.LAWO,
value: {
value: {
value: clipLevel,
type: EmberPlusValueType.REAL
},
transitionDuration: LawoFadeInDuration,
}
}
}),
// automix mic hot
LLayer: LLayers.lawo_source_clip,
content: {
type: TimelineContentTypeLawo.SOURCE,
attributes: {
'Fader/Motor dB Value': {
value: -15,
transitionDuration: LawoFadeInDuration,
}
}
}
}),
// preroll gfx a couple of frames before cutting to it
literal({
_id: IDs.atemSrv1, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.lawo_automix}.start + ${CasparOutputDelay} + 80` },
priority: 1,
duration: 0,
LLayer: LLayers.atem_me_program,
content: {
type: TimelineContentTypeAtem.ME,
attributes: {
input: AtemSource.Grafikk,
transition: Atem_Enums.TransitionStyle.CUT
}
}
}),
// play bed
literal({
_id: IDs.playerBed, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.lawo_automix}.start + 0` },
trigger: { type: TriggerType.TIME_ABSOLUTE, value: 0 },
priority: 1,
duration: 3640,
LLayer: LLayers.casparcg_player_wipe,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'assets/wipe1'
}
}
}),
// wipe audio punktum
literal({
_id: IDs.wipeAudioPunktum, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.wipeVideo}.start + 0` },
priority: 1,
duration: 3640,
LLayer: LLayers.casparcg_player_soundeffect,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'assets/DK_punktum_head'
},
mixer: {
volume: 0.25
}
}
}),
// run the transition
literal({
LLayer: LLayers.casparcg_player_soundeffect,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'assets/DK_punktum_head'
},
mixer: {
volume: 0.25
}
}
}),
// run the transition
literal({
_id: IDs.atemSrv1Transition, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.wipeVideo}.start + 0` },
priority: 3,
duration: 0,
LLayer: LLayers.atem_me_program,
content: {
type: TimelineContentTypeAtem.ME,
attributes: {
input: KamFirstInput + cameraInput - 1,
transition: Atem_Enums.TransitionStyle.WIPE,
transitionSettings: AtemWipeSettings
}
}
}),
// fade out vignett audio
literal({
_id: IDs.vignettTransition, deviceId: [''], siId: '', roId: '',
LLayer: tlfSource,
content: {
type: TimelineContentTypeLawo.SOURCE,
attributes: {
'Fader/Motor dB Value': {
value: 0,
transitionDuration: LawoFadeInDuration,
}
}
}
}) : undefined),
// preroll gfx a couple of frames before cutting to it
literal({
_id: IDs.atemSrv1, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.lawo_automix}.start + ${CasparOutputDelay} + 80` },
priority: 1,
duration: 0,
LLayer: LLayers.atem_me_program,
content: {
type: TimelineContentTypeAtem.ME,
attributes: {
input: AtemSource.Grafikk,
transition: Atem_Enums.TransitionStyle.CUT
}
}
}),
])
}
}))
return {
trigger: { type: TriggerType.TIME_ABSOLUTE, value: 0 },
priority: 1,
duration: 0, // hold at end
LLayer: LLayers.casparcg_player_clip,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'mam/' + clip
}
}
}),
// mic host muted
literal({
_id: IDs.lawo_automix, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.playerClip}.start + ${CasparOutputDelay}` },
priority: 1,
duration: 0,
LLayer: LLayers.lawo_source_automix,
content: {
type: TimelineContentTypeLawo.LAWO,
value: {
value: {
value: -191,
type: EmberPlusValueType.REAL
},
transitionDuration: LawoFadeInDuration,
}
}
}),
// audio FULL 0
for (let i = 0; i < res.length; i++) {
const r = clone(res[i].obj) as TimelineObjGeneric
let trigger: TimelineTrigger = {
type: TriggerType.TIME_ABSOLUTE,
value: 1 // Absolute 0 without a group doesnt work
}
if (i !== 0) {
const prevObj = res[i - 1].obj
const prevHasDelayFlag = (prevObj.classes || []).indexOf('_lookahead_start_delay') !== -1
// Start with previous item
const startOffset = prevHasDelayFlag ? 1000 : 0
trigger = {
type: TriggerType.TIME_RELATIVE,
value: `#${prevObj._id}.start + ${startOffset}`
}
}
r._id = 'lookahead_' + i + '_' + r._id
r.priority = 0.1
const finiteDuration = res[i].partId === activeRundown.currentPartId || (currentPart && currentPart.autoNext && res[i].partId === activeRundown.nextPartId)
r.duration = finiteDuration ? `#${res[i].obj._id}.start - #.start` : 0
r.trigger = trigger
r.isBackground = true
delete r.inGroup // force it to be cleared
if (m.lookahead === LookaheadMode.PRELOAD) {
r.originalLLayer = r.LLayer
r.LLayer += '_lookahead'
}
trigger: { type: TriggerType.TIME_ABSOLUTE, value: 0 },
priority: 1,
duration: 3360,
LLayer: LLayers.casparcg_player_wipe,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'assets/wipe1'
}
}
}),
// wipe audio skille between
literal({
_id: IDs.wipeAudioSkille, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.wipeVideo}.start + 0` },
priority: 1,
duration: 3360,
LLayer: LLayers.casparcg_player_soundeffect,
content: {
type: TimelineContentTypeCasparCg.VIDEO,
attributes: {
file: 'assets/DK_skille_head'
},
mixer: {
volume: 0.25
}
}
}),
// play HEAD
// @todo refactor to make this block less duplicated
content: {
type: TimelineContentTypeLawo.SOURCE,
attributes: {
'Fader/Motor dB Value': {
value: -15,
transitionDuration: LawoFadeInDuration,
}
}
}
}) : undefined),
// mic2 hot
(lawoLayer2 ?
literal({
_id: IDs.lawo_layer2, deviceId: [''], siId: '', roId: '',
trigger: { type: TriggerType.TIME_RELATIVE, value: `#${IDs.atemSSrc}.start + 0` },
priority: 1,
duration: 0,
LLayer: lawoLayer2,
content: {
type: TimelineContentTypeLawo.SOURCE,
attributes: {
'Fader/Motor dB Value': {
value: -15,
transitionDuration: LawoFadeInDuration,
}
}
}
}) : undefined),
])
}
}))