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:Stop 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 , scalex, scaley, 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.