Launchpad External Control Protocol

Packet Structure
STX CMD PARAM ETX
Parameters are delimited by "*"

Definitions:
	STX = 0x5B
    ETX = 0x5D
	<DLM> = 0x2A

Commands:

	GET_OutputSurfaces = 0x41 "A"
		Reply to GET->  list of string. Format "[Index]Description" Example: "[0]Ribbon CRLF [1]Main"


	GET_ImageAndVideosList = 0x42 "B"
		Reply to GET -> list of string. Format "FileName" Example: "Coke.jpg"


	GET_BugList = 0x43 "C"
		Reply to GET -> list of string. Format "FileName" Example: "Scoreboard.tmp"

		 
	GET_Audiolist = 0x44 "D"
		Reply to GET -> list of string. Format "FileName" Example: "MyMusic.mp3"


	GET_AudioPlaylist = 0x45 "E"
		Reply to GET -> list of string. Format "FileName" Example: "MyMusicPlaylist.plA"

	
	GET_BugPlaylist = 0x46 "F"
		Reply to GET -> list of string. Format "FileName" Example: "MyBugPlaylist.plB"


	GET_VideoImagePlaylist = 0x47 "G"
		Reply to GET -> list of string. Format "FileName" Example: "MyVideoPlaylist.plV"

	[Future]
	GET_RunningItems = 0x48 "H"
		Reply to GET -> list of string. Format "[Index]Description" Example: "[0]Background.jpg CRLF [1]ScoreBug CRLF [2]LowerThird.mov"

	[Future]
	GET_MediaThumbnail = 0x49 "I"
		Reply to GET -> Serialized Bitmap as byte array 


	GET_CurrentVideoSource = 0x50 "P"
		Reply to GET -> List of input states 
		"E" - Enabled
		"D" - Disabled
		"S" - Selected
		Example: "SEEE" Ch1 Selected, CH2-4 have valid inputs but not selected
		Example: "SEED" Ch1 Selected, CH2-3 have valid inputs but not selected, CH4 has no input







	PLAY_Clip = 0x30 "0"
		Parameters(FileName<DLM>OutputSurfaceIndex<DLM>Layer<DLM>Transition<DLM>Loop<DLM>AutoClose)
		FileName = String
		OutputSurfaceIndex = int
		Layer = "BG"(Background) or "FG"(Foreground)
		Transition = "CUT", "FADE", etc
		Loop = "T" or "F"
		AutoClose = "T" or "F"
		AutoPlay = "T" or "F"
		ResizeMethod = "S" (Stretch),"Z" (AutoZoom),"C" (ZoomAndCrop) *New Option 
		Example: "[10Coke.mov<DLM>30<DLM>BG<DLM>F<DLM>T<DLM>T<DLM>T]" [Play Coke.mov on Background once and close when end is reached, auto Start]

	PLAY_PRELOADED_CLIP = 0x39 "9"
		Parameters(OutputSurfaceIndex<DLM>Layer)		
		OutputSurfaceIndex = int
		Layer = "BG"(Background) or "FG"(Foreground)
		HACK : If you send ASCII "255" in text for OuputSurfaceIndex, the receiving function will tell ALL ucPlayCntrl objects to PlayNextClip()

	PLAY_Bug = 0x31 "1"
		Parameters(FileName<DLM>OutputSurfaceIndex<DLM>Transition<DLM>Layer)
		FileName = String
		OutputSurfaceIndex = int
		Transition = "CUT", "FADE", etc
		Layer = "BG"(Background) or "FG"(Foreground)

	PLAY_Audio = 0x32 "2"
		Parameters(FileName<DLM>Fade<DLM>Loop)(Tab Separated)
		FileName = String
		Transition = "CUT", "FADE", etc
		Loop = "T" or "F"



	PLAY_VideoPlaylist = 0x33 "3"
		Parameters(FileName<DLM>OutputSurfaceIndex<DLM>Layer<DLM>Transition<DLM>Loop<DLM>Resize)
		FileName = String
		OutputSurfaceIndex = int
		Layer = "BG"(Background) or "FG"(Foreground)
		Transition = "CUT", "FADE", etc
		Loop = "T" or "F"
		ResizeMethod = "S" (Stretch),"Z" (AutoZoom),"C" (ZoomAndCrop) *New Option 



	PLAY_BugPlaylist = 0x34 "4"
		Parameters(FileName<DLM>Fade<DLM>Loop<DLM>AutoClose<DLM>Layer)
		FileName = String
		OutputSurfaceIndex = int
		Transition = "CUT", "FADE", etc
		Loop = "T" or "F"
		Layer = "BG"(Background) or "FG"(Foreground)


	PLAY_AudioPlaylist = 0x35 "5"
		Parameters(FileName<DLM>Fade<DLM>Loop<DLM>AutoClose)(Tab Separated)
		FileName = String
		Loop = "T" or "F"


	PLAY_PlayListSync_MasterPlayListMSG = 0x40 "@"
	   Parameters(CalledBy<DLM>Layer<DLM>PlayThisItem)
	   CalledBy = int [tip: src ID 255 is a message from another LaunchPad)
	   Layer = "BG"(Background) or "FG"(Foreground) or "BGBUG"(Background Bug) or "FGBUG"(Foreground Bug)
	   PlayThisItem = int (The item number of the playlist)



	STOP_Video = 0x36 "6"
		Parameters(OutputSurfaceIndex<DLM>Layer)
		OutputSurfaceIndex = int/string
		Layer = "BG"(Background) or "FG"(Foreground)


	STOP_Bug = 0x37 "7"
		Parameters(OutputSurfaceIndex<DLM>Layer)
		OutputSurfaceIndex = int/string


	STOP_Audio = 0x38 "8"
		Parameters(NONE)



	SET_Variable = 0x50 "P"
		Parameters(VariableNumber<DLM>Variable String Value<DLM>VariableDescription)


	APPLY_BrightnessPreset = 0x51 "Q"
		Parameters(ModeIndex)
		DayMode = "1"
		NightMode = "2"
		BlackOut = "3"
		// NOTE: This applies to any surface configured with custom brightness values within LaunchPad

	SET_XML_SelectedPlayer = 0x52 "R"
		Parameters(team,playername)
		Team : "H" or "G"
		Name : "First Last"

	SET_HOTKEY = 0x53 "S"
		Parameters (Character)

	SET_TOGGLELIVEINPUT = 0x54 "T"
		Parameters (OutputSurfaceIndex)
		OutputSurfaceIndex = int/string
		example : [T0] Toggle live on output #1

	SET_SwitcherInput = 0x55 "U"
		Parameters(Channel,Transition)
		Channel = "1","2","3","4"
		Transitions: Cut[1],Fade[2],wipeUp[3],WipeRight[4],WipeDown[5],WipeLeft[6]
		Example:[U1*2] = Select Input#1 with Fade Transition