@@ -42,15 +42,21 @@ class ATEM
4242 Program : 0x01
4343 Preview : 0x02
4444
45+ state :
46+ tallys : []
47+ channels : {}
48+ video :
49+ upstreamKeyNextState : []
50+ upstreamKeyState : []
51+ downstreamKeyOn : []
52+ downstreamKeyTie : []
53+ auxs : {}
54+ audio :
55+ channels : {}
56+
4557 constructor : (local_port = 0 ) ->
4658 local_port ||= 1024 + Math .floor (Math .random () * 64511 ) # 1024-65535
4759
48- @state = {
49- tallys : []
50- channels : {}
51- video : { upstreamKeyNextState : [], upstreamKeyState : [], auxs : {} }
52- audio : { channels : {} }
53- }
5460 @localPackedId = 1
5561
5662 @socket = dgram .createSocket ' udp4'
@@ -166,8 +172,14 @@ class ATEM
166172 @state .video .upstreamKeyNextState [2 ] = (buffer[2 ] >> 3 & 1 ) == 0x01
167173 @state .video .upstreamKeyNextState [3 ] = (buffer[2 ] >> 4 & 1 ) == 0x01
168174
175+ when ' DskS'
176+ @state .video .downstreamKeyOn [buffer[0 ]] = if buffer[1 ] == 1 then true else false
177+
178+ when ' DskP'
179+ @state .video .downstreamKeyTie [buffer[0 ]] = if buffer[1 ] == 1 then true else false
180+
169181 when ' KeOn'
170- @state .video .upstreamKeyState [buffer[1 ]] = buffer[2 ] == 1 ? true : false
182+ @state .video .upstreamKeyState [buffer[1 ]] = if buffer[2 ] == 1 then true else false
171183
172184 when ' FtbS' # Fade To Black Setting
173185 @state .video .fadeToBlack = if buffer[1 ] > 0 then true else false
@@ -302,6 +314,12 @@ class ATEM
302314 changeTransitionType : (type ) ->
303315 @ _sendCommand (' CTTp' , [0x01 , 0x00 , type, 0x02 ])
304316
317+ changeDownstreamKeyOn : (number , state ) ->
318+ @ _sendCommand (' CDsL' , [number, state, 0xff , 0xff ])
319+
320+ changeDownstreamKeyTie : (number , state ) ->
321+ @ _sendCommand (' CDsT' , [number, state, 0xff , 0xff ])
322+
305323 changeUpstreamKeyState : (number , state ) ->
306324 @ _sendCommand (' CKOn' , [0x00 , number, state, 0x90 ])
307325
0 commit comments