Using the JSON interface to receive notifications and send commands to Dragonframe via UDP.

The JSON interface is a UDP based protocol in Dragonframe, that uses the JSON format for messages.

You can send commands to Dragonframe and receive notifications from it. It may be a useful integration point for using Dragonframe with other devices or applications.

After creating a device that sends/receives these messages, use the program’s Scene | Connections and add a connection of type JSON.

Note: The optional ‘view frame updates’ feature can be turned on with command = ‘viewFrameUpdates’. This instructs Dragonframe to send a ‘viewFrame’ message every time the user toggles to a different frame.

We provide a sample Qt application that implements this interface. You can find the sample JSON project here. You must compile it with Qt 5.3 or newer.

Messages to Control Dragonframe

Shoot{ "command" : "shoot", "frames" : 1 }
Delete{ "command" : "delete" }
Play/Stop{ "command" : "play" }
Go to Live{ "command" : "live" }
Mute{ "command" : "mute" }
Toggle Play to black{ "command" : "black" }
Toggle Looping{ "command" : "loop" }
Opacity Down{ "command" : "opacityDown" }
Opacity Up{ "command" : "opacityUp" }
Step Forward{ "command" : "stepForward" }
Step Backward{ "command" : "stepBackward" }
Short Play{ "command" : "shortPlay" }
Live Toggle (Press){ "command" : "liveToggle", "state" : "pressed" }
Live Toggle (Release){ "command" : "liveToggle", "state" : "released" }
Auto Toggle{ "command" : "autoToggle" }
Toggle High-Res/Video-Assist{ "command" : "highResToggle" }
Trigger real-time motion control playback{ "command" : "runMocoMove" }
Set View Frame Updates{ "command" : "viewFrameUpdates", "active" : true|false }

Messages from Dragonframe

Shooting Frame{ "event" : "shoot",
"production" : "[PRODUCTION]",
"scene" : "[SCENE]",
"take" : "[TAKE]",
"frame" : [FRAME],
"exposure" : [EXPOSURE],
"exposure" : "[EXPOSURE NAME]",
"stereoIndex" : [INDEX] }
Deleting Frame{ "event" : "delete",
"production" : "[PRODUCTION]",
"scene" : "[SCENE]",
"take" : "[TAKE]" }
Position Frame (Move to Frame){ "event" : "position",
"production" : "[PRODUCTION]",
"scene" : "[SCENE]",
"take" : "[TAKE]",
"frame" : [FRAME],
"mocoFrame" : [MOCO FRAME],
"exposure" : [EXPOSURE],
"exposure" : "[EXPOSURE NAME]",
"stereoIndex" : [INDEX] }
Capture Complete{ "event" : "captureComplete",
"production" : "[PRODUCTION]",
"scene" : "[SCENE]",
"take" : "[TAKE]",
"frame" : [FRAME],
"exposure" : [EXPOSURE],
"exposure" : "[EXPOSURE NAME]",
"stereoIndex" : [INDEX],
"imageFileName" : "[IMAGE FILE NAME]" }
Frame Complete{ "event" : "frameComplete",
"production" : "[PRODUCTION]",
"scene" : "[SCENE]",
"take" : "[TAKE]",
"frame" : [FRAME],
"exposure" : [EXPOSURE],
"exposure" : "[EXPOSURE NAME]",
"stereoIndex" : [INDEX],
"imageFileName" : "[IMAGE FILE NAME]" }
View Frame{ "event" : "viewFrame",
"frame" : [FRAME],
"exposure" : [EXPOSURE] }