This protocol allows you to control the Modulo Player application with a TCP/IP client connected to the Modulo Player application.

We use this convention to separate each command :
At the end of each command, you need to add a separator: ‘\n’ in ascii (or 0×0A in hexadecimal).
To separate each argument in a command, you need to use the separator: ‘?’

PC controls: Port 28670

start\n: Start Modulo-Player

terminate\n:Sstop Modulo-Player

reboot\n: Reboot the server

halt\n: Halt the server

loadByNameSession|session’s name\n: Load a session with the session’s name
For example, loadByNameSession?spare1\n will load the session named «spare1»

Modulo Player controls: Port 28686

playItem?playlistIndex?cueIndex\n
► Launch a cue on a playlist
playlistIndex: playlist index between 1 and n
cueIndex: cue index between 1 and n

locatePlayListCue?playlistIndex?cueIndex?playState?time\n
► Locate a cue of a playlist at a timecode
playlistIndex: playlist index between 1 and n
cueIndex: cue index between 1 and n
playState: 1 for play, 0 for pause
time: timecode in ms from the start of the cue

setPlayState?playlistindex?playState\n
► set the reading state of the current cue of a playlist
playlistIndex: playlist index between 1 and n
playState: 1 for play, 0 for pause

setFaderPlayList?playlistIndex?value\n
► Set the fader value of a playlist
playlistIndex: playlist index between 1 and n
value: between 0.0 et 1.0

setFaderWithTimePlayList?playlistIndex?value?time\n
► Set the fader value of a playlist with a fade time
playlistIndex: playlist index between 1 and n
value: between 0.0 et 1.0
time: fade time en ms

getPlayListGrandMaster?playlistIndex\n
► Return the fader value of a playlist
playlistIndex: playlist index between 1 and n

getPlayListCueIndex?playlistIndex\n
► Return the string «playListCueIndex?xx\n» (xx: active cue index between 1 et n)
playlistIndex: playlist index between 1 and n

getPlayListCueTimecode?playlistIndex\n
► Return the string «playListCueTimecode?xx\n» (xx: timecode of the current cue)
playlistIndex: playlist index between 1 and n

getPlayListCueName?playlistIndex\n
► Return the string «playListIsPlay?xx\n» (xx=1 for play, xx=0 for pause)
playlistIndex: playlist index between 1 and n

playnextcue?playlistIndex\n

► Play the next cue on a playlist

playlistIndex: playlist index between 1 and n

playpreviouscue?playlistIndex\n

► Play the previous cue on a playlist

playlistIndex: playlist index between 1 and n

preloadcue?playlistIndex?cueIndex\n

► Preload a cue on a playlist

playlistIndex: playlist index between 1 and n

cueIndex: cue index between 1 and n

getallplaylistswithuuid\n

► Return allplaylistswithuuid?uuid|xxx;uuid|yyy;uuid|zzz;uuid|ddd;uuid|dddsz\n (playlists names)

getallcueswithuuid?playlistIndex\n

► Return allcueswithuuid?playlistuuid?cueuuid|xxx;cueuuid|xd;cueuuid|gf;e\n (cues names)

getallmediaswithuuid\n

► Return allmediaswithuuid?id1|hello.mov;id2|toto.png;xxxxxx\n

getalltaskswithuuid\n

► Return alltaskswithuuid?uuid|xxx;uuid|yyy;uuid|zzz;uuid|ddd;uuid|dddsz\n (task names)

AppliReady\n
► Return the string «Online»

rescanMedias\n
► Return the string «RescanDone» once the media update is done

launchTask?x\n
► Launch the task number x (between 1 and n)

setUserKeyValue?key?value\n
► Set a value for a user key

userKeyValue?key?value\n

getUserKeyValue?key\n
► Return connected user Key value

userKeyValue?key?value\n

getConnectedController\n
► Return connectedController?x\n

getAllPlayLists\n
► Return AllPlayLists?xxx;yyy;zzz;ddd;dddsz\n (playlists names)

getAllCues\n
► Return AllCues?playlistindex?xxx;xd;gf;e\n (cues names)

getAllMedias\n
► Return AllMedias?id1|hello.mov;id2|toto.png;xxxxxx\n

getAllMediasWithInfos\n

getMediaCount\n
► MediaCount?450\n

getPlayListCount\n
► PlayListCount?2\n

getCueCount?playlistindex\n
► CueCount?playlistindex?45\n

setPlayListProperty\n
► // Not implemented at the moment // to be modified …

backupShow\n
► Request an archive with date + time

saveShow\n
► Request a save of the show

addCue?playlistindex?cueIndex\n

deleteCue?playlistindex?cueIndex\n

addNoRefreshCue?playlistindex?cueIndex\n*
► Does not send the information to the remote to avoid making the player ram

deleteNoRefreshCue?playlistindex?cueIndex\n
► Does not send the information to the remote to avoid making the player ram

sendToRemotePlaylist?playlistindex\n
► Return playlist to the active remote
(Eg after a series of action on the playlist without refresh)

copyToSlavePlaylist?playlistindex\n
► Sends an order to copy playlist to slaves

getMediaProperty?idmedia?property\n
► Return MediaProperty?idmedia?property?value
available properties: name, info, fileName, folder, extension, size, lastModified,
thumbnail jpg(base 64)

getPlayListProperty?playlistindex?property\n
► Return PlayListProperty?playlistindex?property?value\n
available properties: name,cueIndex, cueName, cueIsPlay, cueTimecode , grandMaster

getCueProperty?playlistindex?cueindex?property\n
► Return CueProperty?playlistindex?cueindex?property?value\n

setCueProperty?playlistindex?cueindex?property?value\n
► Property disponible : name
► Trigger (0:go, 1 : follow, 2:wait, 3 : TC)
► TriggerValue (eg. time in ms for the wait or the TC)

setCueLayerProperty?playlistindex?cueIndex?layerIndex?property?xx\n

getCueLayerProperty?playlistindex?cueIndex?layerIndex?property\n

► CueLayerProperty?playlistindex?cueIndex?layerIndex?property?xx\n
available properties: media (idmedia in param), fadein (time in ms), fadeout (time in
ms), x ,y , scale x, scale y, rotation, opacity

TCP/IP Example:

In the example below, using Hercules, a free toool , we configure the Hercules application:
• IP: 192.168.0.132 (the address of your test Modulo Player server, adapt to your IP address)
• Port: 28670
• Click and send a reboot command in Hexadecimal:
• End separator: ‘\n’ 0×0A
• Argument Separator: ‘?’ click
Server will reboot, and connection will be closed.

Need more help with this?
Don’t hesitate to contact us here.

Thanks for your feedback.