├── OBS.js
├── README.md
├── icon.png
└── module.json
/OBS.js:
--------------------------------------------------------------------------------
1 | var tempo = "";
2 | var OBSSave = {};
3 | var EnumScenes = {};
4 | var EnumItems = {};
5 | var IndexItemTab = []; //associative array with sceneName as key and
6 |
7 | function parseHex(str) {
8 | var result = [];
9 | for (var i = 0; i < str.length; i += 2) {
10 | var n = parseInt("0x" + str.substring(i, i + 2));
11 | result.push(n);
12 | }
13 | return result;
14 | }
15 |
16 | /* Utilitary Function */
17 | function valueBoolParameter(value, data) {
18 | if (local.values.getChild(value) == null) {
19 | local.values.addBoolParameter(value, "", data);
20 | local.values.getChild(value).setAttribute("readonly", true);
21 | } else {
22 | local.values.getChild(value).set(data);
23 | }
24 | }
25 |
26 | function valueStringParameter(value, data) {
27 | if (local.values.getChild(value) == null) {
28 | local.values.addStringParameter(value, "", data);
29 | local.values.getChild(value).setAttribute("readonly", true);
30 | } else {
31 | local.values.getChild(value).set(data);
32 | }
33 | }
34 |
35 | function valueBoolContainerParameter(container, value, data) {
36 | local.values.addContainer(container);
37 | if (local.values.getChild(container).getChild(value) == null) {
38 | local.values.getChild(container).addBoolParameter(value, "", data);
39 | local.values.getChild(container).getChild(value).setAttribute("readonly", true);
40 | } else {
41 | local.values.getChild(container).getChild(value).set(data);
42 | }
43 | }
44 |
45 | function valueStringContainerParameter(container, value, data) {
46 | local.values.addContainer(container);
47 | if (local.values.getChild(container).getChild(value) == null) {
48 | local.values.getChild(container).addStringParameter(value, "", data);
49 | local.values.getChild(container).getChild(value).setAttribute("readonly", true);
50 | } else {
51 | local.values.getChild(container).getChild(value).set(data);
52 | }
53 | }
54 |
55 | function colorToInt(color) {
56 | var r = parseInt(color[0] * 255);
57 | var g = parseInt(color[1] * 255);
58 | var b = parseInt(color[2] * 255);
59 | return r + (g << 0x8) + (b << 0x10);
60 | }
61 |
62 | function removeAllValues() {
63 | local.values.removeContainer("Scenes");
64 | local.values.removeContainer("Inputs");
65 | local.values.removeParameter("CurrentScene");
66 | local.values.removeContainer("Groups");
67 | local.values.removeParameter("CurrentCollection");
68 | local.values.removeContainer("Collections");
69 | local.values.removeParameter("outputActive");
70 | local.values.removeParameter("outputState");
71 | local.values.removeParameter("RecordStateChanged");
72 | local.values.removeContainer("Audio Input");
73 | local.values.removeContainer("Stream");
74 | local.values.removeContainer("Record");
75 | script.log("All values have been deleted");
76 | }
77 |
78 | /*
79 | This function will be called each time a value of this module has changed, meaning a parameter or trigger inside the "Values" panel of this module
80 | This function only exists because the script is in a module
81 | */
82 | function moduleValueChanged(value) {
83 | if (value.name == "removeAllValues") {
84 | removeAllValues();
85 | }
86 | }
87 |
88 |
89 | function toDecimal(v) {
90 | return parseInt(v, 2);
91 | }
92 |
93 | /* ************************************************************************* */
94 | /* ***************** WEBSOCKET MESSAGE RECEIVED *************************** */
95 |
96 | /* ************************************************************************* */
97 | function wsMessageReceived(message) {
98 | /* ************************* CONNECTION ******************************** */
99 | var obsObj = JSON.parse(message);
100 | var d = obsObj.d;
101 |
102 | if (obsObj.op == 0) {
103 | var newEventSub = 0; // Start with EventSubscription::None
104 |
105 | // Add event subscriptions based on parameters
106 | if (local.parameters.eventSub.general.get()) newEventSub += (1 << 0); // EventSubscription::General
107 | if (local.parameters.eventSub.config.get()) newEventSub += (1 << 1); // EventSubscription::Config
108 | if (local.parameters.eventSub.scenes.get()) newEventSub += (1 << 2); // EventSubscription::Scenes
109 | if (local.parameters.eventSub.inputs.get()) newEventSub += (1 << 3); // EventSubscription::Inputs
110 | if (local.parameters.eventSub.transitions.get()) newEventSub += (1 << 4); // EventSubscription::Transitions
111 | if (local.parameters.eventSub.filters.get()) newEventSub += (1 << 5); // EventSubscription::Filters
112 | if (local.parameters.eventSub.outputs.get()) newEventSub += (1 << 6); // EventSubscription::Outputs
113 | if (local.parameters.eventSub.sceneItems.get()) newEventSub += (1 << 7); // EventSubscription::SceneItems
114 | if (local.parameters.eventSub.mediaInputs.get()) newEventSub += (1 << 8); // EventSubscription::MediaInputs
115 | if (local.parameters.eventSub.vendors.get()) newEventSub += (1 << 9); // EventSubscription::Vendors
116 | if (local.parameters.eventSub.ui.get()) newEventSub += (1 << 10); // EventSubscription::Ui
117 | if (local.parameters.eventSub.inputVolumeMeters.get()) newEventSub += (1 << 16); // EventSubscription::InputVolumeMeters
118 | if (local.parameters.eventSub.inputActiveStateChanged.get()) newEventSub += (1 << 17); // EventSubscription::InputActiveStateChanged
119 | if (local.parameters.eventSub.inputShowStateChanged.get()) newEventSub += (1 << 18); // EventSubscription::InputShowStateChanged
120 | if (local.parameters.eventSub.sceneItemTransformChanged.get()) newEventSub += (1 << 19); // EventSubscription::SceneItemTransformChanged
121 |
122 | if (d.authentication != null) {
123 | var mdp = local.parameters.password.get() + d.authentication.salt;
124 | var Encode1 = util.toBase64(parseHex(util.encodeSHA256(mdp)));
125 | var Encode2 = util.toBase64(parseHex(util.encodeSHA256(Encode1 + d.authentication.challenge)));
126 | local.send('{"d":{"authentication": "' + Encode2 + '", "eventSubscriptions": ' + toDecimal(newEventSub) + ', "rpcVersion": 1}, "op": 1}');
127 | } else {
128 | local.send('{"op": 1,"d": {"rpcVersion": 1,"authentication": "Chataigne","eventSubscriptions": ' + toDecimal(newEventSub) + '} }');
129 | }
130 | } else if (obsObj.op == 2) {
131 | //TODO
132 | GetStudioModeEnabled(7);
133 | removeAllValues();
134 | GetSceneList(7);
135 | GetInputList(7);
136 | GetCurrentProgramScene(7);
137 |
138 | }
139 | /* ************ CHANGED VALUES WITH MESSAGE RECEIVED ******************** */
140 | //GetSceneCollectionList
141 | if (d.requestType == "GetSceneCollectionList") {
142 | var n = 0;
143 | local.values.addContainer("Collections");
144 | valueStringParameter("CurrentCollection", d.responseData.currentSceneCollectionName);
145 | while (d.responseData.sceneCollections[n] != null) {
146 | var collection = d.responseData.sceneCollections[n];
147 | local.values.getChild("Collections").addStringParameter("Collection" + n, "", collection);
148 | local.values.getChild("Collections").getChild("Collection" + n).setAttribute("readonly", true);
149 | n++;
150 | }
151 | }
152 |
153 | if (d.requestType == "GetStudioModeEnabled") {
154 | local.values.controlsStatus.studioModeStatus.set(d.responseData.studioModeEnabled);
155 | if (d.responseData.studioModeEnabled) {
156 | GetCurrentPreviewScene(7);
157 | }
158 | }
159 | //GetSceneList
160 | if (d.requestType == "GetSceneList") {
161 | var n = 0;
162 | if (local.values.getChild("Scenes") == null) {
163 | local.values.addContainer("Scenes");
164 | EnumScenes = local.values.getChild("Scenes").addEnumParameter("Slct Scene", "The scene selected for controller");
165 | EnumItems = local.values.getChild("Scenes").addEnumParameter("Slct Item", "The item selected for controller");
166 | }
167 |
168 | while (d.responseData['scenes'][n].sceneIndex != null) {
169 | var index = d.responseData['scenes'][n].sceneIndex;
170 | var scene = d.responseData['scenes'][n].sceneName;
171 | if (local.values.getChild("Scenes").getChild(scene) == null) {
172 | local.values.getChild("Scenes").addContainer(scene);
173 | local.values.getChild("Scenes").getChild(scene).addStringParameter("sceneIndex", "", index);
174 | local.values.getChild("Scenes").getChild(scene).getChild("sceneIndex").setAttribute("readonly", true);
175 | local.values.getChild("Scenes").getChild(scene).addStringParameter("sceneName", "", scene);
176 | local.values.getChild("Scenes").getChild(scene).getChild("sceneName").setAttribute("readonly", true);
177 | }
178 | local.values.getChild("Scenes").getChild(scene).getChild("sceneIndex").set(index);
179 | local.values.getChild("Scenes").getChild(scene).getChild("sceneName").set(scene);
180 | GetSceneItemList("updateSceneContainer_" + scene, scene);
181 | OBSSave[scene] = {};
182 | //local.values.getChild("Scenes").getChild("Slct Scene").addOption(scene,index);
183 | EnumScenes.addOption(scene, scene);
184 | n++;
185 | }
186 | valueStringParameter("CurrentScene", d.responseData.currentProgramSceneName);
187 | if (d.responseData.currentPreviewSceneName != null) {
188 | EnumScenes.set(d.responseData.currentPreviewSceneName);
189 | GetSceneItemList("active_items_" + d.responseData.currentPreviewSceneName, d.responseData.currentPreviewSceneName);
190 | } else {
191 | EnumScenes.set(d.responseData.currentProgramSceneName);
192 | GetSceneItemList("active_items_" + d.responseData.currentProgramSceneName, d.responseData.currentProgramSceneName);
193 | }
194 | }
195 |
196 | //GetInputList
197 | if (d.requestType == "GetInputList") {
198 | var n = 0;
199 | if (local.values.getChild("Inputs") == null) {
200 | local.values.addContainer("Inputs");
201 | }
202 | while (d.responseData['inputs'][n].inputKind != null) {
203 | var inputKind = d.responseData['inputs'][n].inputKind;
204 | var inputName = d.responseData['inputs'][n].inputName;
205 | if (local.values.getChild("Inputs").getChild(inputName) == null) {
206 | local.values.getChild("Inputs").addContainer(inputName);
207 | local.values.getChild("Inputs").getChild(inputName).addStringParameter("inputName", "", inputName);
208 | local.values.getChild("Inputs").getChild(inputName).getChild("inputName").setAttribute("readonly", true);
209 | local.values.getChild("Inputs").getChild(inputName).addStringParameter("inputKind", "", inputKind);
210 | local.values.getChild("Inputs").getChild(inputName).getChild("inputKind").setAttribute("readonly", true);
211 | }
212 | local.values.getChild("Inputs").getChild(inputName).getChild("inputName").set(inputName);
213 | local.values.getChild("Inputs").getChild(inputName).getChild("inputKind").set(inputKind);
214 | n++;
215 | }
216 | }
217 |
218 | //GetCurrentProgramScene
219 | if (d.requestType == "GetCurrentProgramScene") {
220 | valueStringParameter("CurrentScene", d.responseData.currentProgramSceneName);
221 | if (!local.values.controlsStatus.studioModeStatus.get()) {
222 | EnumScenes.set(d.responseData.currentProgramSceneName);
223 | GetSceneItemList("active_items_" + d.responseData.currentProgramSceneName, d.responseData.currentProgramSceneName);
224 | }
225 | }
226 |
227 | //SetCurrentProgramScene
228 | if (d.requestType == "SetCurrentProgramScene") {
229 | valueStringParameter("CurrentScene", tempo);
230 | }
231 |
232 | //GetGroupList
233 | if (d.requestType == "GetGroupList") {
234 | var n = 0;
235 | local.values.addContainer("Groups");
236 | while (d.responseData.groups[n] != null) {
237 | var group = d.responseData.groups[n];
238 | local.values.getChild("Groups").addStringParameter("NameGroup" + n, "", group);
239 | local.values.getChild("Groups").getChild("NameGroup" + n).setAttribute("readonly", true);
240 | n++;
241 | }
242 | }
243 |
244 | //GetSceneItemList
245 | if (d.requestType == "GetSceneItemList") {
246 | var n = 0;
247 | if (d.requestId.startsWith("updateSceneContainer_")) {
248 | var scene = d.requestId.replace("updateSceneContainer_", "");
249 | while (d.responseData['sceneItems'][n].sourceName != null) {
250 | var sceneItemId = d.responseData['sceneItems'][n].sceneItemId;
251 | var sourceName = d.responseData['sceneItems'][n].sourceName;
252 | local.values.getChild("Scenes").getChild(scene).addContainer(sourceName);
253 | if (local.values.getChild("Scenes").getChild(scene).getChild(sourceName).getChild("IndexItem") == null) {
254 | local.values.getChild("Scenes").getChild(scene).getChild(sourceName).addStringParameter("IndexItem", "", sceneItemId);
255 | local.values.getChild("Scenes").getChild(scene).getChild(sourceName).getChild("IndexItem").setAttribute("readonly", true);
256 | } else {
257 | local.values.getChild("Scenes").getChild(scene).getChild(sourceName).getChild("IndexItem").set(sceneItemId);
258 | }
259 | OBSSave[scene][sourceName] = {};
260 | OBSSave[scene][sourceName]['sceneItemId'] = sceneItemId;
261 | n++;
262 | }
263 | }
264 |
265 | //Complete EnumScenes and EnumItems menu on scene change
266 | if (d.requestId.startsWith("active_items_")) {
267 | EnumItems.removeOptions();
268 | if (d.responseData['sceneItems'][0]) {
269 | var n = 0;
270 | while (d.responseData['sceneItems'][n].sourceName != null) {
271 | var sceneItemId = d.responseData['sceneItems'][n].sceneItemId;
272 | var sourceName = d.responseData['sceneItems'][n].sourceName;
273 | EnumItems.addOption(sourceName, sceneItemId);
274 | n++;
275 | }
276 | EnumItems.setPrevious(true);
277 | GetSceneItemTransform('active_item_parameter', EnumScenes.get(), EnumItems.get());
278 | }
279 | }
280 |
281 | }
282 |
283 | //GetSceneItemTransform get transform parameters for the active item
284 | if (d.requestType == "GetSceneItemTransform") {
285 | if (d.requestId.startsWith("active_item_parameter")) {
286 | local.values.getChild("Active Item Transform").positionX.set(d.responseData.sceneItemTransform.positionX);
287 | local.values.getChild("Active Item Transform").positionY.set(d.responseData.sceneItemTransform.positionY);
288 | local.values.getChild("Active Item Transform").getChild("Zoom").set(d.responseData.sceneItemTransform.scaleX);
289 | local.values.getChild("Active Item Transform").rotation.set(d.responseData.sceneItemTransform.rotation);
290 | local.values.getChild("Active Item Transform").cropBottom.set(d.responseData.sceneItemTransform.cropBottom);
291 | local.values.getChild("Active Item Transform").cropLeft.set(d.responseData.sceneItemTransform.cropLeft);
292 | local.values.getChild("Active Item Transform").cropRight.set(d.responseData.sceneItemTransform.cropRight);
293 | local.values.getChild("Active Item Transform").cropTop.set(d.responseData.sceneItemTransform.cropTop);
294 |
295 | }
296 | }
297 |
298 | //StreamStateChanged Event
299 | if (d.eventType == "StreamStateChanged") {
300 | valueBoolContainerParameter("Stream", "outputActive", d.eventData.outputActive);
301 | valueStringContainerParameter("Stream", "outputState", d.eventData.outputState);
302 | }
303 | //RecordStateChanged Event
304 | if (d.eventType == "RecordStateChanged") {
305 | valueBoolContainerParameter("Record", "outputActive", d.eventData.outputActive);
306 | valueStringContainerParameter("Record", "outputState", d.eventData.outputState);
307 | valueStringContainerParameter("Record", "outputPath", d.eventData.outputPath);
308 | }
309 | //CurrentProgramSceneChanged Event
310 | if (d.eventType == "CurrentProgramSceneChanged") {
311 | if (!local.values.controlsStatus.studioModeStatus.get()) {
312 | EnumScenes.set(d.eventData.sceneName);
313 | GetSceneItemList("active_items_" + d.eventData.sceneName, d.eventData.sceneName);
314 | }
315 | valueStringParameter("CurrentScene", d.eventData.sceneName);
316 | }
317 | //StudioModeStateChanged Event
318 | if (d.eventType == "StudioModeStateChanged") {
319 | local.values.controlsStatus.studioModeStatus.set(d.eventData.studioModeEnabled);
320 | if (!d.eventData.studioModeEnabled) {
321 | GetCurrentProgramScene(7);
322 | }
323 | }
324 | //CurrentPreviewSceneChanged Event (need for studio mode)
325 | if (d.eventType == "CurrentPreviewSceneChanged") {
326 | EnumScenes.set(d.eventData.sceneName);
327 | GetSceneItemList("active_items_" + d.eventData.sceneName, d.eventData.sceneName);
328 | }
329 |
330 | //InputMuteStateChanged
331 | if (d.eventType == "InputMuteStateChanged") {
332 | valueBoolContainerParameter("Audio Input", d.eventData.inputName, d.eventData.inputMuted);
333 | }
334 |
335 | //SceneItemTransformChanged
336 | if (d.eventType == "SceneItemTransformChanged") {
337 | if (d.eventData.sceneName == EnumScenes.get() && d.eventData.sceneItemId == local.values.getChild("Scenes").getChild(EnumScenes.get()).getChild(EnumItems.getKey()).getChild("IndexItem").get()) {
338 | local.values.getChild("Active Item Transform").positionX.set(d.eventData.sceneItemTransform.positionX);
339 | local.values.getChild("Active Item Transform").positionY.set(d.eventData.sceneItemTransform.positionY);
340 | local.values.getChild("Active Item Transform").getChild("Zoom").set(d.eventData.sceneItemTransform.scaleX);
341 | local.values.getChild("Active Item Transform").rotation.set(d.eventData.sceneItemTransform.rotation);
342 | local.values.getChild("Active Item Transform").cropBottom.set(d.eventData.sceneItemTransform.cropBottom);
343 | local.values.getChild("Active Item Transform").cropLeft.set(d.eventData.sceneItemTransform.cropLeft);
344 | local.values.getChild("Active Item Transform").cropRight.set(d.eventData.sceneItemTransform.cropRight);
345 | local.values.getChild("Active Item Transform").cropTop.set(d.eventData.sceneItemTransform.cropTop);
346 | }
347 | }
348 |
349 | if (d.eventType == "SceneItemSelected") {
350 | var options = EnumItems.getAllOptions();
351 | var i = 0;
352 | for (i = 0; i < options.length; i++) {
353 | if (d.eventData.sceneItemId == options[i].value) {
354 | EnumItems.set(options[i].key);
355 | GetSceneItemTransform('active_item_parameter', d.eventData.sceneName, d.eventData.sceneItemId);
356 | }
357 | }
358 | }
359 |
360 | if (d.eventType == "SceneItemCreated") {
361 | EnumItems.addOption(d.eventData.sourceName, d.eventData.sceneItemId);
362 | local.values.getChild("Scenes").getChild(d.eventData.sceneName).addContainer(d.eventData.sourceName);
363 | local.values.getChild("Scenes").getChild(d.eventData.sceneName).getChild(d.eventData.sourceName).addStringParameter("IndexItem", "", d.eventData.sceneItemId);
364 | local.values.getChild("Scenes").getChild(d.eventData.sceneName).getChild(d.eventData.sourceName).getChild("IndexItem").setAttribute("readonly", true);
365 | }
366 |
367 | if (d.eventType == "SceneItemRemoved") {
368 | local.values.getChild("Scenes").getChild(d.eventData.sceneName).removeContainer(d.eventData.sourceName);
369 | }
370 |
371 | if (d.eventType == "SceneCreated") {
372 | EnumScenes.addOption(d.eventData.sceneName, d.eventData.sceneName);
373 | local.values.getChild("Scenes").addContainer(d.eventData.sceneName);
374 | }
375 |
376 | if (d.eventType == "SceneRemoved") {
377 | local.values.getChild("Scenes").removeContainer(d.eventData.sceneName);
378 | }
379 |
380 | if (d.eventType == "SceneNameChanged") {
381 | local.values.getChild("Scenes").getChild(d.eventData.oldSceneName).setName(d.eventData.sceneName);
382 | local.values.getChild("Scenes").getChild(d.eventData.sceneName).getChild("sceneName").set(d.eventData.sceneName);
383 | GetSceneList(7);
384 | }
385 |
386 | if (d.eventType == "InputCreated") {
387 | local.values.getChild("Inputs").addContainer(d.eventData.inputName);
388 | local.values.getChild("Inputs").getChild(d.eventData.inputName).addStringParameter("inputName", "", d.eventData.inputName);
389 | local.values.getChild("Inputs").getChild(d.eventData.inputName).getChild("inputName").setAttribute("readonly", true);
390 | local.values.getChild("Inputs").getChild(d.eventData.inputName).addStringParameter("inputKind", "", d.eventData.inputKind);
391 | local.values.getChild("Inputs").getChild(d.eventData.inputName).getChild("inputKind").setAttribute("readonly", true);
392 | }
393 |
394 | if (d.eventType == "InputRemoved") {
395 | local.values.getChild("Inputs").removeContainer(d.eventData.inputName);
396 | }
397 |
398 | if (d.eventType == "InputNameChanged") {
399 | var tempoEnumItem = EnumItems.getKey();
400 | local.values.getChild("Inputs").getChild(d.eventData.oldInputName).getChild("inputName").set(d.eventData.inputName);
401 | local.values.getChild("Inputs").getChild(d.eventData.oldInputName).setName(d.eventData.inputName);
402 | var sceneList = util.getObjectProperties(local.values.getChild("Scenes"), true, false);
403 | for (var i = 0; i < sceneList.length; i++) {
404 | if (sceneList[i] != "slctScene" && sceneList[i] != "slctItem") {
405 | if (local.values.getChild("Scenes")[sceneList[i]].getChild(d.eventData.oldInputName) != null) {
406 | local.values.getChild("Scenes")[sceneList[i]].getChild(d.eventData.oldInputName).setName(d.eventData.inputName);
407 | }
408 | }
409 | }
410 | GetSceneItemList("active_items_" + EnumScenes.get(), EnumScenes.get());
411 | util.delayThreadMS(500);
412 | EnumItems.set(tempoEnumItem);
413 | }
414 | }
415 |
416 | function wsDataReceived(data) {
417 | script.log("Websocket data received : " + data);
418 | }
419 |
420 | /* ********** STREAMING MODULE (UDP, TCP, SERIAL, WEBSOCKET) SPECIFIC SCRIPTING ********************* */
421 | /*
422 |
423 | Websoskets modules can be used as standard Streaming Module and use the dataReceived function above,
424 | but you can also intercept messages and data directly from the streaming, before it is processed, using specific
425 | event callbacks below
426 | */
427 |
428 |
429 | //---------------------------------------------------------------------------------
430 | /*send requests*/
431 | function sendObsCommand(req, data, reqId) {
432 | var send = {};
433 | var para = {};
434 | para["requestType"] = req;
435 | para["requestId"] = reqId;
436 | para["requestData"] = data;
437 |
438 | /*!== undefined ? data : {}*/
439 | send["op"] = 6;
440 | send["d"] = para;
441 |
442 | local.send(JSON.stringify(send));
443 | }
444 |
445 | function sendObsRawCommand(json) {
446 | local.send(json);
447 | }
448 |
449 | //---------------------------------------------------------------------------------
450 | /*General Requests Menu*/
451 | function GetVersion(reqId) {
452 | var data = {};
453 | sendObsCommand("GetVersion", data, reqId);
454 | }
455 |
456 | function GetStats(reqId) {
457 | var data = {};
458 | sendObsCommand("GetStats", data, reqId);
459 | }
460 |
461 | function BroadcastCustomEvent(reqId) {
462 | var data = {};
463 | sendObsCommand("BroadcastCustomEvent", data, reqId);
464 | }
465 |
466 | function CallVendorRequest(reqId, vendorName, requestType, requestData) {
467 | var data = {};
468 | data["vendorName"] = vendorName;
469 | data["requestType"] = requestType;
470 | data["requestData"] = JSON.parse(requestData);
471 | sendObsCommand("CallVendorRequest", data, reqId);
472 | }
473 |
474 | function GetHotkeyList(reqId) {
475 | var data = {};
476 | sendObsCommand("GetHotkeyList", data, reqId);
477 | }
478 |
479 | function TriggerHotkeyByName(reqId, hotkeyName) {
480 | var data = {};
481 | data["hotkeyName"] = hotkeyName;
482 | sendObsCommand("TriggerHotkeyByName", data, reqId);
483 | }
484 |
485 | function TriggerHotkeyByKeySequence(reqId, keyId, shift, control, alt, command) {
486 | var data = {
487 | "keyId": keyId,
488 | "keyModifiers": {
489 | "shift": shift,
490 | "control": control,
491 | "alt": alt,
492 | "command": command
493 | }
494 | };
495 | sendObsCommand("TriggerHotkeyByKeySequence", data, reqId);
496 | }
497 |
498 | //---------------------------------------------------------------------------------
499 | /*Config requests Menu*/
500 | function Sleep(reqId, sleepMillis, sleepFrames) {
501 | var data = {};
502 | data["sleepMillis"] = sleepMillis;
503 | data["sleepFrames"] = sleepFrames;
504 | sendObsCommand("Sleep", data, reqId);
505 | }
506 |
507 | function GetPersistentData(reqId, realm, slotName) {
508 | var data = {};
509 | data["realm"] = realm;
510 | data["slotName"] = slotName;
511 | sendObsCommand("GetPersistentData", data, reqId);
512 | }
513 |
514 | function SetPersistentData(reqId, realm, slotName, slotValue) {
515 | var data = {};
516 | data["realm"] = realm;
517 | data["slotName"] = slotName;
518 | data["slotValue"] = slotValue;
519 | sendObsCommand("SetPersistentData", data, reqId);
520 | }
521 |
522 | function GetSceneCollectionList(reqId) {
523 | var data = {};
524 | sendObsCommand("GetSceneCollectionList", data, reqId);
525 | }
526 |
527 | function SetCurrentSceneCollection(reqId, sceneCollectionName) {
528 | var data = {};
529 | data["sceneCollectionName"] = sceneCollectionName;
530 | sendObsCommand("SetCurrentSceneCollection", data, reqId);
531 | }
532 |
533 | function CreateSceneCollection(reqId, sceneCollectionName) {
534 | var data = {};
535 | data["sceneCollectionName"] = sceneCollectionName;
536 | sendObsCommand("CreateSceneCollection", data, reqId);
537 | }
538 |
539 | function GetProfileList(reqId) {
540 | var data = {};
541 | sendObsCommand("GetProfileList", data, reqId);
542 | }
543 |
544 | function SetCurrentProfile(reqId, profileName) {
545 | var data = {};
546 | data["profileName"] = profileName;
547 | sendObsCommand("SetCurrentProfile", data, reqId);
548 | }
549 |
550 | function CreateProfile(reqId, profileName) {
551 | var data = {};
552 | data["profileName"] = profileName;
553 | sendObsCommand("CreateProfile", data, reqId);
554 | }
555 |
556 | function RemoveProfile(reqId, profileName) {
557 | var data = {};
558 | data["profileName"] = profileName;
559 | sendObsCommand("RemoveProfile", data, reqId);
560 | }
561 |
562 | function GetProfileParameter(reqId, parameterCategory, parameterName) {
563 | var data = {};
564 | data["parameterCategory"] = parameterCategory;
565 | data["parameterName"] = parameterName;
566 | sendObsCommand("GetProfileParameter", data, reqId);
567 | }
568 |
569 | function SetProfileParameter(reqId, parameterCategory, parameterName, parameterValue) {
570 | var data = {};
571 | data["parameterCategory"] = parameterCategory;
572 | data["parameterName"] = parameterName;
573 | data["parameterValue"] = parameterValue;
574 | sendObsCommand("SetProfileParameter", data, reqId);
575 | }
576 |
577 | function GetVideoSettings(reqId) {
578 | var data = {};
579 | sendObsCommand("GetVideoSettings", data, reqId);
580 | }
581 |
582 | function SetVideoSettings(reqId, fpsNumerator, fpsDenominator, baseWidth, baseHeight, outputWidth, outputHeight) {
583 | var data = {};
584 | data["fpsNumerator"] = fpsNumerator;
585 | data["fpsDenominator"] = fpsDenominator;
586 | data["parametbaseWidtherValue"] = baseWidth;
587 | data["baseHeight"] = baseHeight;
588 | data["outputWidth"] = outputWidth;
589 | data["outputHeight"] = outputHeight;
590 | sendObsCommand("SetVideoSettings", data, reqId);
591 | }
592 |
593 | function GetStreamServiceSettings(reqId) {
594 | var data = {};
595 | sendObsCommand("GetStreamServiceSettings", data, reqId);
596 | }
597 |
598 | function SetStreamServiceSettings(reqId, streamServiceType, streamServiceSettings) {
599 | var data = {};
600 | data["streamServiceType"] = streamServiceType;
601 | data["streamServiceSettings"] = JSON.parse(streamServiceSettings);
602 | sendObsCommand("SetStreamServiceSettings", data, reqId);
603 | }
604 |
605 | function GetRecordDirectory(reqId) {
606 | var data = {};
607 | sendObsCommand("GetRecordDirectory", data, reqId);
608 | }
609 |
610 | //---------------------------------------------------------------------------------
611 | /*Sources Requests Menu*/
612 | function GetSourceActive(reqId, sourceName) {
613 | var data = {};
614 | data["sourceName"] = sourceName;
615 | sendObsCommand("GetSourceActive", data, reqId);
616 | }
617 |
618 | function GetSourceScreenshot(reqId, sourceName, imageFormat, imageWidth, imageHeight, imageCompressionQuality) {
619 | var data = {};
620 | data["sourceName"] = sourceName;
621 | data["imageFormat"] = imageFormat;
622 | data["imageWidth"] = imageWidth;
623 | data["imageHeight"] = imageHeight;
624 | data["imageCompressionQuality"] = imageCompressionQuality;
625 | sendObsCommand("GetSourceScreenshot", data, reqId);
626 | }
627 |
628 | function SaveSourceScreenshot(reqId, sourceName, imageFormat, imageFilePath, imageWidth, imageHeight, imageCompressionQuality) {
629 | var data = {};
630 | data["sourceName"] = sourceName;
631 | data["imageFormat"] = imageFormat;
632 | data["imageFilePath"] = imageFilePath;
633 | data["imageWidth"] = imageWidth;
634 | data["imageHeight"] = imageHeight;
635 | data["imageCompressionQuality"] = imageCompressionQuality;
636 | sendObsCommand("SaveSourceScreenshot", data, reqId);
637 | }
638 |
639 | //---------------------------------------------------------------------------------
640 | /*Scenes Requests menu*/
641 | function GetSceneList(reqId) {
642 | var data = {};
643 | sendObsCommand("GetSceneList", data, reqId);
644 |
645 | }
646 |
647 | function GetGroupList(reqId) {
648 | var data = {};
649 | sendObsCommand("GetGroupList", data, reqId);
650 | }
651 |
652 | function GetCurrentProgramScene(reqId) {
653 | var data = {};
654 | sendObsCommand("GetCurrentProgramScene", data, reqId);
655 | }
656 |
657 | function SetCurrentProgramScene(reqId, sceneName) {
658 | var data = {};
659 | tempo = sceneName;
660 | data["sceneName"] = sceneName;
661 | sendObsCommand("SetCurrentProgramScene", data, reqId);
662 | }
663 |
664 | function GetCurrentPreviewScene(reqId) {
665 | var data = {};
666 | sendObsCommand("GetCurrentPreviewScene", data, reqId);
667 | }
668 |
669 | function SetCurrentPreviewScene(reqId, sceneName) {
670 | var data = {};
671 | data["sceneName"] = sceneName;
672 | sendObsCommand("SetCurrentPreviewScene", data, reqId);
673 | }
674 |
675 | function CreateScene(reqId, sceneName) {
676 | var data = {};
677 | data["sceneName"] = sceneName;
678 | sendObsCommand("CreateScene", data, reqId);
679 | }
680 |
681 | function RemoveScene(reqId, sceneName) {
682 | var data = {};
683 | data["sceneName"] = sceneName;
684 | sendObsCommand("RemoveScene", data, reqId);
685 | }
686 |
687 | function SetSceneName(reqId, sceneName, newSceneName) {
688 | var data = {};
689 | data["sceneName"] = sceneName;
690 | data["newSceneName"] = newSceneName;
691 | sendObsCommand("SetSceneName", data, reqId);
692 | }
693 |
694 | function GetSceneSceneTransitionOverride(reqId, sceneName) {
695 | var data = {};
696 | data["sceneName"] = sceneName;
697 | sendObsCommand("GetSceneSceneTransitionOverride", data, reqId);
698 | }
699 |
700 | function SetSceneSceneTransitionOverride(reqId, sceneName, transitionName, transitionDuration) {
701 | var data = {};
702 | data["sceneName"] = sceneName;
703 | data["transitionName"] = transitionName;
704 | data["transitionDuration"] = transitionDuration;
705 | sendObsCommand("SetSceneSceneTransitionOverride", data, reqId);
706 | }
707 |
708 | //---------------------------------------------------------------------------------
709 | /*Inputs Requests menu*/
710 | function GetInputList(reqId, inputKind) {
711 | var data = {};
712 | if (data["inputKind"] != undefined) {
713 | data["inputKind"] = inputKind;
714 | } else {
715 |
716 | data["inputKind"] = null;
717 | }
718 | sendObsCommand("GetInputList", data, reqId);
719 | }
720 |
721 | function GetInputKindList(reqId, unversioned) {
722 | var data = {};
723 | data["unversioned"] = unversioned;
724 | sendObsCommand("GetInputKindList", data, reqId);
725 | }
726 |
727 | function GetSpecialInputs(reqId) {
728 | var data = {};
729 | sendObsCommand("GetSpecialInputs", data, reqId);
730 | }
731 |
732 | function CreateInput(reqId, sceneName, inputName, inputKind, inputSettings, sceneItemEnabled) {
733 | var data = {};
734 | data["sceneName"] = sceneName;
735 | data["inputName"] = inputName;
736 | data["inputKind"] = inputKind;
737 | data["inputSettings"] = JSON.parse(inputSettings);
738 | data["sceneItemEnabled"] = sceneItemEnabled;
739 | sendObsCommand("CreateInput", data, reqId);
740 | }
741 |
742 | function RemoveInput(reqId, inputName) {
743 | var data = {};
744 | data["inputName"] = inputName;
745 | sendObsCommand("RemoveInput", data, reqId);
746 | }
747 |
748 | function SetInputName(reqId, inputName, newInputName) {
749 | var data = {};
750 | data["inputName"] = inputName;
751 | data["newInputName"] = newInputName;
752 | sendObsCommand("SetInputName", data, reqId);
753 | }
754 |
755 | function GetInputDefaultSettings(reqId, inputKind) {
756 | var data = {};
757 | data["inputKind"] = inputKind;
758 | sendObsCommand("GetInputDefaultSettings", data, reqId);
759 | }
760 |
761 | function GetInputSettings(reqId, inputName) {
762 | var data = {};
763 | data["inputName"] = inputName;
764 | sendObsCommand("GetInputSettings", data, reqId);
765 | }
766 |
767 | function SetInputSettings(reqId, inputName, inputSettings, overlay) {
768 | var data = {};
769 | data["inputName"] = inputName;
770 | data["inputSettings"] = JSON.parse(inputSettings);
771 | data["overlay"] = overlay;
772 | sendObsCommand("SetInputSettings", data, reqId);
773 | }
774 |
775 | function GetInputMute(reqId, inputName) {
776 | var data = {};
777 | data["inputName"] = inputName;
778 | sendObsCommand("GetInputMute", data, reqId);
779 | }
780 |
781 | function SetInputMute(reqId, inputName, inputMuted) {
782 | var data = {};
783 | data["inputName"] = inputName;
784 | data["inputMuted"] = inputMuted;
785 | sendObsCommand("SetInputMute", data, reqId);
786 | }
787 |
788 | function ToggleInputMute(reqId, inputName) {
789 | var data = {};
790 | data["inputName"] = inputName;
791 | sendObsCommand("ToggleInputMute", data, reqId);
792 | }
793 |
794 | function GetInputVolume(reqId, inputName) {
795 | var data = {};
796 | data["inputName"] = inputName;
797 | sendObsCommand("GetInputVolume", data, reqId);
798 | }
799 |
800 | function SetInputVolume(reqId, inputName, Dbsettings, inputVolumeMul, inputVolumeDb) {
801 | var data = {};
802 | data["inputName"] = inputName;
803 |
804 | if (Dbsettings == false) {
805 | data["inputVolumeMul"] = inputVolumeMul;
806 | } else if (Dbsettings == true) {
807 | data["inputVolumeDb"] = inputVolumeDb;
808 | }
809 | sendObsCommand("SetInputVolume", data, reqId);
810 | }
811 |
812 | function GetInputAudioBalance(reqId, inputName) {
813 | var data = {};
814 | data["inputName"] = inputName;
815 | sendObsCommand("GetInputAudioBalance", data, reqId);
816 | }
817 |
818 | function SetInputAudioBalance(reqId, inputName, inputAudioBalance) {
819 | var data = {};
820 | data["inputName"] = inputName;
821 | data["inputAudioBalance"] = inputAudioBalance;
822 | sendObsCommand("SetInputAudioBalance", data, reqId);
823 | }
824 |
825 | function GetInputAudioSyncOffset(reqId, inputName) {
826 | var data = {};
827 | data["inputName"] = inputName;
828 | sendObsCommand("GetInputAudioSyncOffset", data, reqId);
829 | }
830 |
831 | function SetInputAudioSyncOffset(reqId, inputName, inputAudioSyncOffset) {
832 | var data = {};
833 | data["inputName"] = inputName;
834 | data["inputAudioSyncOffset"] = inputAudioSyncOffset;
835 | sendObsCommand("SetInputAudioSyncOffset", data, reqId);
836 | }
837 |
838 | function GetInputAudioMonitorType(reqId, inputName) {
839 | var data = {};
840 | data["inputName"] = inputName;
841 | sendObsCommand("GetInputAudioMonitorType", data, reqId);
842 | }
843 |
844 | function SetInputAudioMonitorType(reqId, inputName, monitorType) {
845 | var data = {};
846 | data["inputName"] = inputName;
847 | data["monitorType"] = monitorType;
848 | sendObsCommand("SetInputAudioMonitorType", data, reqId);
849 | }
850 |
851 | function GetInputAudioTracks(reqId, inputName) {
852 | var data = {};
853 | data["inputName"] = inputName;
854 | sendObsCommand("GetInputAudioTracks", data, reqId);
855 | }
856 |
857 | function SetInputAudioTracks(reqId, inputName, inputAudioTracks) {
858 | var data = {};
859 | data["inputName"] = inputName;
860 | data["inputAudioTracks"] = JSON.parse(inputAudioTracks);
861 | sendObsCommand("SetInputAudioTracks", data, reqId);
862 | }
863 |
864 | function GetInputPropertiesListPropertyItems(reqId, inputName, propertyName) {
865 | var data = {};
866 | data["inputName"] = inputName;
867 | data["propertyName"] = propertyName;
868 | sendObsCommand("GetInputPropertiesListPropertyItems", data, reqId);
869 | }
870 |
871 | function PressInputPropertiesButton(reqId, inputName, propertyName) {
872 | var data = {};
873 | data["inputName"] = inputName;
874 | data["propertyName"] = propertyName;
875 | sendObsCommand("PressInputPropertiesButton", data, reqId);
876 | }
877 |
878 | //---------------------------------------------------------------------------------
879 | /*Transitions Requests menu*/
880 | function GetTransitionKindList(reqId, transitionKinds) {
881 | var data = {};
882 | data["transitionKinds"] = transitionKinds;
883 | sendObsCommand("GetTransitionKindList", data, reqId);
884 | }
885 |
886 | function GetSceneTransitionList(reqId, currentSceneTransitionName, currentSceneTransitionKind, transitions) {
887 | var data = {};
888 | data["currentSceneTransitionName"] = currentSceneTransitionName;
889 | data["currentSceneTransitionKind"] = currentSceneTransitionKind;
890 | data["transitions"] = transitions;
891 | sendObsCommand("GetSceneTransitionList", data, reqId);
892 | }
893 |
894 | function GetCurrentSceneTransition(reqId, transitionName, transitionKind, transitionFixed, transitionDuration, transitionConfigurable, transitionSettings) {
895 | var data = {};
896 | data["transitionName"] = transitionName;
897 | data["transitionKind"] = transitionKind;
898 | data["transitionFixed"] = transitionFixed;
899 | data["transitionDuration"] = transitionDuration;
900 | data["transitionConfigurable"] = transitionConfigurable;
901 | data["transitionSettings"] = transitionSettings;
902 | sendObsCommand("GetCurrentSceneTransition", data, reqId);
903 | }
904 |
905 | function SetCurrentSceneTransition(reqId, transitionName) {
906 | var data = {};
907 | data["transitionName"] = transitionName;
908 | sendObsCommand("SetCurrentSceneTransition", data, reqId);
909 | }
910 |
911 | function SetCurrentSceneTransitionDuration(reqId, transitionDuration) {
912 | var data = {};
913 | data["transitionDuration"] = transitionDuration;
914 | sendObsCommand("SetCurrentSceneTransitionDuration", data, reqId);
915 | }
916 |
917 | function SetCurrentSceneTransitionSettings(reqId, transitionSettings, overlay) {
918 | var data = {};
919 | data["transitionSettings"] = JSON.parse(transitionSettings);
920 | data["overlay"] = overlay;
921 | sendObsCommand("SetCurrentSceneTransitionSettings", data, reqId);
922 | }
923 |
924 | function GetCurrentSceneTransitionCursor(reqId, transitionCursor) {
925 | var data = {};
926 | data["transitionCursor"] = transitionCursor;
927 | sendObsCommand("GetCurrentSceneTransitionCursor", data, reqId);
928 | }
929 |
930 | function TriggerStudioModeTransition(reqId) {
931 | var data = {};
932 | sendObsCommand("TriggerStudioModeTransition", data, reqId);
933 | }
934 |
935 | function SetTBarPosition(reqId, position, release) {
936 | var data = {};
937 | data["position"] = position;
938 | data["release"] = release;
939 | sendObsCommand("SetTBarPosition", data, reqId);
940 | }
941 |
942 | //---------------------------------------------------------------------------------
943 | /*Filters Requests menu*/
944 | function GetSourceFilterList(reqId, sourceName) {
945 | var data = {};
946 | data["sourceName"] = sourceName;
947 | sendObsCommand("GetSourceFilterList", data, reqId);
948 | }
949 |
950 | function GetSourceFilterDefaultSettings(reqId, filterKind) {
951 | var data = {};
952 | data["filterKind"] = filterKind;
953 | sendObsCommand("GetSourceFilterDefaultSettings", data, reqId);
954 | }
955 |
956 | function CreateSourceFilter(reqId, sourceName, filterName, filterKind, filterSettings) {
957 | var data = {};
958 | data["sourceName"] = sourceName;
959 | data["filterName"] = filterName;
960 | data["filterKind"] = filterKind;
961 | data["filterSettings"] = JSON.parse(filterSettings);
962 | sendObsCommand("CreateSourceFilter", data, reqId);
963 | }
964 |
965 | function RemoveSourceFilter(reqId, sourceName, filterName) {
966 | var data = {};
967 | data["sourceName"] = sourceName;
968 | data["filterName"] = filterName;
969 | sendObsCommand("RemoveSourceFilter", data, reqId);
970 | }
971 |
972 | function SetSourceFilterName(reqId, sourceName, filterName, newFilterName) {
973 | var data = {};
974 | data["sourceName"] = sourceName;
975 | data["filterName"] = filterName;
976 | data["newFilterName"] = newFilterName;
977 | sendObsCommand("SetSourceFilterName", data, reqId);
978 | }
979 |
980 | function GetSourceFilter(reqId, sourceName, filterName) {
981 | var data = {};
982 | data["sourceName"] = sourceName;
983 | data["filterName"] = filterName;
984 | sendObsCommand("GetSourceFilter", data, reqId);
985 | }
986 |
987 | function SetSourceFilterIndex(reqId, sourceName, filterName, filterIndex) {
988 | var data = {};
989 | data["sourceName"] = sourceName;
990 | data["filterName"] = filterName;
991 | data["filterIndex"] = filterIndex;
992 | sendObsCommand("SetSourceFilterIndex", data, reqId);
993 | }
994 |
995 | function SetSourceFilterSettings(reqId, sourceName, filterName, filterSettings, overlay) {
996 | var data = {};
997 | data["sourceName"] = sourceName;
998 | data["filterName"] = filterName;
999 | data["filterSettings"] = JSON.parse(filterSettings);
1000 | data["overlay"] = overlay;
1001 | sendObsCommand("SetSourceFilterSettings", data, reqId);
1002 | }
1003 |
1004 | function SetSourceFilterColorCorrectionSettings(reqId, sourceName, filterName, gamma, contrast, brightness, saturation, hue, opacity, colorMultiply, colorAdd, overlay) {
1005 | var data = {};
1006 | data["sourceName"] = sourceName;
1007 | data["filterName"] = filterName;
1008 | data["filterSettings"] = {
1009 | "gamma": gamma,
1010 | "contrast": contrast,
1011 | "brightness": brightness,
1012 | "saturation": saturation,
1013 | "hue_shift": hue,
1014 | "opacity": opacity,
1015 | "color_multiply": colorToInt(colorMultiply),
1016 | "color_add": colorToInt(colorAdd)
1017 | };
1018 | data["overlay"] = overlay;
1019 | sendObsCommand("SetSourceFilterSettings", data, reqId);
1020 | }
1021 |
1022 | function SetSourceFilterEnabled(reqId, sourceName, filterName, filterEnabled) {
1023 | var data = {};
1024 | data["sourceName"] = sourceName;
1025 | data["filterName"] = filterName;
1026 | data["filterEnabled"] = filterEnabled;
1027 | sendObsCommand("SetSourceFilterEnabled", data, reqId);
1028 | }
1029 |
1030 | //---------------------------------------------------------------------------------
1031 | /*Scene Items Requests Menu*/
1032 | function GetSceneItemList(reqId, sceneName) {
1033 | var data = {};
1034 | tempo = sceneName;
1035 | data["sceneName"] = sceneName;
1036 | sendObsCommand("GetSceneItemList", data, reqId);
1037 | }
1038 |
1039 | function GetGroupSceneItemList(reqId, sceneName) {
1040 | var data = {};
1041 | data["sceneName"] = sceneName;
1042 | sendObsCommand("GetGroupSceneItemList", data, reqId);
1043 | }
1044 |
1045 | function GetSceneItemId(reqId, sceneName, sourceName, searchOffset) {
1046 | var data = {};
1047 | data["sceneName"] = sceneName;
1048 | data["sourceName"] = sourceName;
1049 | data["searchOffset"] = searchOffset;
1050 | sendObsCommand("GetSceneItemId", data, reqId);
1051 | }
1052 |
1053 | function CreateSceneItem(reqId, sceneName, sourceName, sceneItemEnabled) {
1054 | var data = {};
1055 | data["sceneName"] = sceneName;
1056 | data["sourceName"] = sourceName;
1057 | data["sceneItemEnabled"] = sceneItemEnabled;
1058 | sendObsCommand("CreateSceneItem", data, reqId);
1059 | }
1060 |
1061 | function RemoveSceneItem(reqId, sceneName, sceneItemId) {
1062 | var data = {};
1063 | data["sceneName"] = sceneName;
1064 | data["sceneItemId"] = sceneItemId;
1065 | sendObsCommand("RemoveSceneItem", data, reqId);
1066 | }
1067 |
1068 | function DuplicateSceneItem(reqId, sceneName, destinationSceneName) {
1069 | var data = {};
1070 | data["sceneName"] = sceneName;
1071 | data["sceneId"] = sceneId;
1072 | data["destinationSceneName"] = destinationSceneName;
1073 | sendObsCommand("DuplicateSceneItem", data, reqId);
1074 | }
1075 |
1076 | function GetSceneItemTransform(reqId, sceneName, sceneItemId) {
1077 | var data = {};
1078 | data["sceneName"] = sceneName;
1079 | data["sceneItemId"] = sceneItemId;
1080 | sendObsCommand("GetSceneItemTransform", data, reqId);
1081 | }
1082 |
1083 | function SetSceneItemTransform(reqId, sceneName, sceneItemId, positionXBool, positionX, positionYBool, positionY, scaleXBool, scaleX, scaleYBool, scaleY, rotationBool, rotation, cropBottomBool, cropBottom, cropTopBool, cropTop, cropLeftBool, cropLeft, cropRightBool, cropRight) {
1084 | var data = {};
1085 | data["sceneName"] = sceneName;
1086 | data["sceneItemId"] = sceneItemId;
1087 | //
1088 | data["sceneItemTransform"] = {};
1089 | if (positionXBool == true) {
1090 | data["sceneItemTransform"]["positionX"] = positionX;
1091 | }
1092 | if (positionYBool == true) {
1093 | data["sceneItemTransform"]["positionY"] = positionY;
1094 | }
1095 | if (scaleXBool == true) {
1096 | data["sceneItemTransform"]["scaleX"] = scaleX;
1097 | }
1098 | if (scaleYBool == true) {
1099 | data["sceneItemTransform"]["scaleY"] = scaleY;
1100 | }
1101 | // Completing transform parameters for an OBS item
1102 | if (rotationBool == true) {
1103 | data["sceneItemTransform"]["rotation"] = rotation;
1104 | }
1105 | if (cropBottomBool == true) {
1106 | data["sceneItemTransform"]["cropBottom"] = cropBottom;
1107 | }
1108 | if (cropTopBool == true) {
1109 | data["sceneItemTransform"]["cropTop"] = cropTop;
1110 | }
1111 | if (cropLeftBool == true) {
1112 | data["sceneItemTransform"]["cropLeft"] = cropLeft;
1113 | }
1114 | if (cropRightBool == true) {
1115 | data["sceneItemTransform"]["cropRight"] = cropRight;
1116 | }
1117 | //data["sceneItemTransform"] = JSON.parse(sceneItemTransform);
1118 | sendObsCommand("SetSceneItemTransform", data, reqId);
1119 | }
1120 |
1121 | function GetSceneItemEnabled(reqId, sceneName, sceneItemId) {
1122 | var data = {};
1123 | data["sceneName"] = sceneName;
1124 | data["sceneItemId"] = sceneItemId;
1125 | sendObsCommand("GetSceneItemEnabled", data, reqId);
1126 | }
1127 |
1128 | function SetSceneItemEnabled(reqId, sceneName, sceneItemId, sceneItemEnabled) {
1129 | var data = {};
1130 | data["sceneName"] = sceneName;
1131 | data["sceneItemId"] = sceneItemId;
1132 | data["sceneItemEnabled"] = sceneItemEnabled;
1133 | sendObsCommand("SetSceneItemEnabled", data, reqId);
1134 | }
1135 |
1136 | function GetSceneItemLocked(reqId, sceneName, sceneItemId) {
1137 | var data = {};
1138 | data["sceneName"] = sceneName;
1139 | data["sceneItemId"] = sceneItemId;
1140 | sendObsCommand("GetSceneItemLocked", data, reqId);
1141 | }
1142 |
1143 | function SetSceneItemLocked(reqId, sceneName, sceneItemId, sceneItemLocked) {
1144 | var data = {};
1145 | data["sceneName"] = sceneName;
1146 | data["sceneItemId"] = sceneItemId;
1147 | data["sceneItemLocked"] = sceneItemLocked;
1148 | sendObsCommand("SetSceneItemLocked", data, reqId);
1149 | }
1150 |
1151 | function GetSceneItemIndex(reqId, sceneName, sceneItemId) {
1152 | var data = {};
1153 | data["sceneName"] = sceneName;
1154 | data["sceneItemId"] = sceneItemId;
1155 | sendObsCommand("GetSceneItemIndex", data, reqId);
1156 | }
1157 |
1158 | function SetSceneItemIndex(reqId, sceneName, sceneItemId, sceneItemIndex) {
1159 | var data = {};
1160 | data["sceneName"] = sceneName;
1161 | data["sceneItemId"] = sceneItemId;
1162 | data["sceneItemIndex"] = sceneItemIndex;
1163 | sendObsCommand("SetSceneItemIndex", data, reqId);
1164 | }
1165 |
1166 | function GetSceneItemBlendMode(reqId, sceneName, sceneItemId) {
1167 | var data = {};
1168 | data["sceneName"] = sceneName;
1169 | data["sceneItemId"] = sceneItemId;
1170 | sendObsCommand("GetSceneItemBlendMode", data, reqId);
1171 | }
1172 |
1173 | function SetSceneItemBlendMode(reqId, sceneName, sceneItemId, sceneItemBlendMode) {
1174 | var data = {};
1175 | data["sceneName"] = sceneName;
1176 | data["sceneItemId"] = sceneItemId;
1177 | data["sceneItemBlendMode"] = sceneItemBlendMode;
1178 | sendObsCommand("SetSceneItemBlendMode", data, reqId);
1179 | }
1180 |
1181 | //---------------------------------------------------------------------------------
1182 | /*Outputs Requests Menu*/
1183 | function GetVirtualCamStatus(reqId) {
1184 | var data = {};
1185 | sendObsCommand("GetVirtualCamStatus", data, reqId);
1186 | }
1187 |
1188 | function ToggleVirtualCam(reqId) {
1189 | var data = {};
1190 | sendObsCommand("ToggleVirtualCam", data, reqId);
1191 | }
1192 |
1193 | function StartVirtualCam(reqId) {
1194 | var data = {};
1195 | sendObsCommand("StartVirtualCam", data, reqId);
1196 | }
1197 |
1198 |
1199 | function StopVirtualCam(reqId) {
1200 | var data = {};
1201 | sendObsCommand("StopVirtualCam", data, reqId);
1202 | }
1203 |
1204 | function GetReplayBufferStatus(reqId) {
1205 | var data = {};
1206 | sendObsCommand("GetReplayBufferStatus", data, reqId);
1207 | }
1208 |
1209 | function ToggleReplayBuffer(reqId) {
1210 | var data = {};
1211 | sendObsCommand("ToggleReplayBuffer", data, reqId);
1212 | }
1213 |
1214 | function StartReplayBuffer(reqId) {
1215 | var data = {};
1216 | sendObsCommand("StartReplayBuffer", data, reqId);
1217 | }
1218 |
1219 | function StopReplayBuffer(reqId) {
1220 | var data = {};
1221 | sendObsCommand("StopReplayBuffer", data, reqId);
1222 | }
1223 |
1224 | function SaveReplayBuffer(reqId) {
1225 | var data = {};
1226 | sendObsCommand("SaveReplayBuffer", data, reqId);
1227 | }
1228 |
1229 | function GetLastReplayBufferReplay(reqId) {
1230 | var data = {};
1231 | sendObsCommand("GetLastReplayBufferReplay", data, reqId);
1232 | }
1233 |
1234 | function GetOutputList(reqId) {
1235 | var data = {};
1236 | sendObsCommand("GetOutputList", data, reqId);
1237 | }
1238 |
1239 | function GetOutputStatus(reqId, outputName) {
1240 | var data = {};
1241 | data["outputName"] = outputName;
1242 | sendObsCommand("GetOutputStatus", data, reqId);
1243 | }
1244 |
1245 | function ToggleOutput(reqId, outputName) {
1246 | var data = {};
1247 | data["outputName"] = outputName;
1248 | sendObsCommand("ToggleOutput", data, reqId);
1249 | }
1250 |
1251 | function StartOutput(reqId, outputName) {
1252 | var data = {};
1253 | data["outputName"] = outputName;
1254 | sendObsCommand("StartOutput", data, reqId);
1255 | }
1256 |
1257 | function StopOutput(reqId, outputName) {
1258 | var data = {};
1259 | data["outputName"] = outputName;
1260 | sendObsCommand("StopOutput", data, reqId);
1261 | }
1262 |
1263 | function GetOutputSettings(reqId, outputName) {
1264 | var data = {};
1265 | data["outputName"] = outputName;
1266 | sendObsCommand("GetOutputSettings", data, reqId);
1267 | }
1268 |
1269 | function SetOutputSettings(reqId, outputName, outputSettings) {
1270 | var data = {};
1271 | data["outputName"] = outputName;
1272 | data["outputSettings"] = JSON.parse(outputSettings);
1273 | sendObsCommand("SetOutputSettings", data, reqId);
1274 | }
1275 |
1276 | //---------------------------------------------------------------------------------
1277 | /*Stream Requests Menu*/
1278 | function GetStreamStatus(reqId) {
1279 | var data = {};
1280 | sendObsCommand("GetStreamStatus", data, reqId);
1281 | }
1282 |
1283 | function ToggleStream(reqId) {
1284 | var data = {};
1285 | sendObsCommand("ToggleStream", data, reqId);
1286 | }
1287 |
1288 |
1289 | function StartStream(reqId) {
1290 | var data = {};
1291 | sendObsCommand("StartStream", data, reqId);
1292 | }
1293 |
1294 | function StopStream(reqId) {
1295 | var data = {};
1296 | sendObsCommand("StopStream", data, reqId);
1297 | }
1298 |
1299 | function SendStreamCaption(reqId, captionText) {
1300 | var data = {};
1301 | data["captionText"] = captionText;
1302 | sendObsCommand("SendStreamCaption", data, reqId);
1303 | }
1304 |
1305 | //---------------------------------------------------------------------------------
1306 | /*Record Requests Menu*/
1307 | function GetRecordStatus(reqId) {
1308 | var data = {};
1309 | sendObsCommand("GetRecordStatus", data, reqId);
1310 | }
1311 |
1312 | function ToggleRecord(reqId) {
1313 | var data = {};
1314 | sendObsCommand("ToggleRecord", data, reqId);
1315 | }
1316 |
1317 | function StartRecord(reqId) {
1318 | var data = {};
1319 | sendObsCommand("StartRecord", data, reqId);
1320 | }
1321 |
1322 | function StopRecord(reqId) {
1323 | var data = {};
1324 | sendObsCommand("StopRecord", data, reqId);
1325 | }
1326 |
1327 | function ToggleRecordPause(reqId) {
1328 | var data = {};
1329 | sendObsCommand("ToggleRecordPause", data, reqId);
1330 | }
1331 |
1332 | function PauseRecord(reqId) {
1333 | var data = {};
1334 | sendObsCommand("PauseRecord", data, reqId);
1335 | }
1336 |
1337 | function ResumeRecord(reqId) {
1338 | var data = {};
1339 | sendObsCommand("ResumeRecord", data, reqId);
1340 | }
1341 |
1342 | //---------------------------------------------------------------------------------
1343 | /*Media Inputs Requests Menu*/
1344 | function GetMediaInputStatus(reqId, inputName) {
1345 | var data = {};
1346 | data["inputName"] = inputName;
1347 | sendObsCommand("GetMediaInputStatus", data, reqId);
1348 | }
1349 |
1350 | function SetMediaInputCursor(reqId, inputName, mediaCursor) {
1351 | var data = {};
1352 | data["inputName"] = inputName;
1353 | data["mediaCursor"] = mediaCursor;
1354 | sendObsCommand("SetMediaInputCursor", data, reqId);
1355 | }
1356 |
1357 | function OffsetMediaInputCursor(reqId, inputName, mediaCursorOffset) {
1358 | var data = {};
1359 | data["inputName"] = inputName;
1360 | data["mediaCursorOffset"] = mediaCursorOffset;
1361 | sendObsCommand("OffsetMediaInputCursor", data, reqId);
1362 | }
1363 |
1364 | function TriggerMediaInputAction(reqId, inputName, mediaAction) {
1365 | var data = {};
1366 | data["inputName"] = inputName;
1367 | data["mediaAction"] = mediaAction;
1368 | sendObsCommand("TriggerMediaInputAction", data, reqId);
1369 | }
1370 |
1371 | //---------------------------------------------------------------------------------
1372 | /*UI Requests Menu*/
1373 | function GetStudioModeEnabled(reqId) {
1374 | var data = {};
1375 | sendObsCommand("GetStudioModeEnabled", data, reqId);
1376 | }
1377 |
1378 | function SetStudioModeEnabled(reqId, studioModeEnabled) {
1379 | var data = {};
1380 | data["studioModeEnabled"] = studioModeEnabled;
1381 | sendObsCommand("SetStudioModeEnabled", data, reqId);
1382 | }
1383 |
1384 | function OpenInputPropertiesDialog(reqId, inputName) {
1385 | var data = {};
1386 | data["inputName"] = inputName;
1387 | sendObsCommand("OpenInputPropertiesDialog", data, reqId);
1388 | }
1389 |
1390 | function OpenInputFiltersDialog(reqId, inputName) {
1391 | var data = {};
1392 | data["inputName"] = inputName;
1393 | sendObsCommand("OpenInputFiltersDialog", data, reqId);
1394 | }
1395 |
1396 | function OpenInputInteractDialog(reqId, inputName) {
1397 | var data = {};
1398 | data["inputName"] = inputName;
1399 | sendObsCommand("OpenInputInteractDialog", data, reqId);
1400 | }
1401 |
1402 | function GetMonitorList(reqId) {
1403 | var data = {};
1404 | sendObsCommand("GetMonitorList", data, reqId);
1405 | }
1406 |
1407 | function OpenVideoMixProjector(reqId, videoMixType, monitorIndex, projectorGeometry) {
1408 | var data = {};
1409 | data["videoMixType"] = videoMixType;
1410 | data["monitorIndex"] = monitorIndex;
1411 | data["projectorGeometry"] = projectorGeometry;
1412 | sendObsCommand("OpenVideoMixProjector", data, reqId);
1413 | }
1414 |
1415 | function OpenSourceProjector(reqId, sourceName, monitorIndex, projectorGeometry) {
1416 | var data = {};
1417 | data["sourceName"] = sourceName;
1418 | data["monitorIndex"] = monitorIndex;
1419 | data["projectorGeometry"] = projectorGeometry;
1420 | sendObsCommand("OpenSourceProjector", data, reqId);
1421 | }
1422 |
1423 | function SwitchActiveItem(direction) {
1424 | if (local.values.controlsStatus.controllerStatus.get()) {
1425 | if (direction == "Next") {
1426 | EnumScenes.setNext(true);
1427 | } else {
1428 | EnumScenes.setPrevious(true);
1429 | }
1430 | GetSceneItemList("active_items_" + EnumScenes.get(), EnumScenes.get());
1431 | } else {
1432 | if (direction == "Next") {
1433 | EnumItems.setNext(true);
1434 | } else {
1435 | EnumItems.setPrevious(true);
1436 | }
1437 | GetSceneItemTransform('active_item_parameter', EnumScenes.get(), EnumItems.get());
1438 | }
1439 | }
1440 |
1441 | function ActiveItemTransform(negative, position_type) {
1442 | var data = {};
1443 | data["sceneName"] = EnumScenes.get();
1444 | data["sceneItemId"] = EnumItems.get();
1445 | data["sceneItemTransform"] = {};
1446 | var step = local.values.getChild("Active Item Transform").getChild("Steppers").x_Y_Crop_RotStep.get();
1447 | if (position_type == "Zoom") {
1448 | step = local.values.getChild("Active Item Transform").getChild("Steppers").zoomStep.get();
1449 | if (negative) {
1450 | step = -1 * step;
1451 | }
1452 | data["sceneItemTransform"]["scaleX"] = local.values.getChild("Active Item Transform").getChild("Zoom").get() + step;
1453 | data["sceneItemTransform"]["scaleY"] = local.values.getChild("Active Item Transform").getChild("Zoom").get() + step;
1454 | } else {
1455 | if (negative) {
1456 | step = -1 * step;
1457 | }
1458 | var position = local.values.getChild("Active Item Transform")[position_type].get() + step;
1459 | data["sceneItemTransform"][position_type] = position;
1460 | }
1461 | sendObsCommand("SetSceneItemTransform", data, "transformDelta");
1462 | }
1463 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OBS-Websocket-Chataigne-Module
2 | A simple module to use OBS Websocket V5 with the Chataigne Software
3 |
4 | To know all parameters for your requests, see protocol.md of OBS-Websocket at this link :
5 | Protocol.md OBS_Websocket
6 |
7 | link : Chataigne Software By Benjamin Kuperberg
8 |
9 |
10 |
11 |
12 | Table of Contents
13 |
14 | - Getting Started
15 |
19 |
20 |
21 |
22 | - Contributing
23 |
24 | - Contact
25 | - Acknowledgments
26 |
27 |
28 |
29 |
30 | ## Prerequisites
31 |
32 | ### Chataigne
33 | Compatible version with module: 1.9.8b3 or more
34 | Creator: Benjamin Kuperberg
35 | GitHub: Chataigne website
36 | Website: Chataigne website
37 | Resum: Chataigne is made with one goal in mind : create a common tool for artists, technicians and developers who wish to use technology and synchronize softwares for shows, interactive installations or prototyping. It aims to be as simple as possible for basic interactions, but can be easily extended to create complex interactions.
38 |
39 | ### obs-websocket
40 | Compatible version with module: obs-websocket 5 or more
41 |
42 |
43 | ## Contributing
44 | Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
45 |
46 | If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
47 | Don't forget to give the project a star! Thanks again!
48 |
49 | 1. Fork the Project
50 | 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
51 | 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
52 | 4. Push to the Branch (`git push origin feature/AmazingFeature`)
53 | 5. Open a Pull Request
54 |
55 |
56 | ## Contact
57 |
58 | Tainalo2: GitHub - https://github.com/tainalo2
59 | Twitch - https://www.twitch.tv/tainalo2
60 | YouTube - https://www.youtube.com/channel/UC2MYhnsKCZJs3B3wROu1B8w
61 |
62 | DrMicka: GitHub - https://github.com/DrMicka
63 | Twitch - https://www.twitch.tv/dr_micka
64 | YouTube - https://www.youtube.com/channel/UCX11UiUYZ_dqAi-FaR2IvxA
65 |
66 | Edrig: GitHub - https://github.com/Edrig
67 |
68 |
69 | Project Link: [https://github.com/Edrig/OBS-Websocket-Chataigne-Module/](https://github.com/Edrig/OBS-Websocket-Chataigne-Module/)
70 |
71 |
72 | ## Acknowledgments
73 | Thanks to Benjamin Kuperberg for his help and his reactivity to upgrade the Chataigne software to make it compatible with this module
74 |
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Edrig/OBS-Websocket-Chataigne-Module/58baa735a5a7129e802dd53cd7f20ebdeda4a120/icon.png
--------------------------------------------------------------------------------
/module.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "OBS Websocket",
3 | "type": "WebSocket Client",
4 | "path": "Software",
5 | "version": "2.0.8",
6 | "description": "To control OBS by Websocket. Module compatible with OBS Websocket 5 or more (directly integrated in OBS 28 or more). To know all requests and parameters, see this link :https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#requests ",
7 | "url": "https://github.com/Edrig/OBS-Websocket-Chataigne-Module",
8 | "downloadURL": "https://github.com/Edrig/OBS-Websocket-Chataigne-Module/archive/master.zip",
9 | "hasInput": true,
10 | "hasOutput": true,
11 | "hideDefaultCommands": true,
12 | "hideDefaultParameters": [
13 | "autoAdd",
14 | "protocol",
15 | "messageStructure",
16 | "firstValueIsTheName",
17 | "useSecureConnection",
18 | "connected"
19 | ],
20 | "defaults": {
21 | "Protocol": "Lines",
22 | "autoAdd": false,
23 | "serverPath": "127.0.0.1:4455"
24 | },
25 | "parameters": {
26 | "Enable Authentification": {
27 | "type": "Boolean",
28 | "default": true
29 | },
30 | "Password": {
31 | "type": "String",
32 | "dependency": {
33 | "source": "Enable Authentification",
34 | "value": true,
35 | "check": "equals",
36 | "action": "show"
37 | }
38 | },
39 | "EventSub": {
40 | "type": "Container",
41 | "General": {
42 | "type": "Boolean",
43 | "default": true
44 | },
45 | "Config": {
46 | "type": "Boolean",
47 | "default": false
48 | },
49 | "Scenes": {
50 | "type": "Boolean",
51 | "default": true
52 | },
53 | "Inputs": {
54 | "type": "Boolean",
55 | "default": true
56 | },
57 | "Transitions": {
58 | "type": "Boolean",
59 | "default": false
60 | },
61 | "Filters": {
62 | "type": "Boolean",
63 | "default": false
64 | },
65 | "Outputs": {
66 | "type": "Boolean",
67 | "default": false
68 | },
69 | "SceneItems": {
70 | "type": "Boolean",
71 | "default": true
72 | },
73 | "MediaInputs": {
74 | "type": "Boolean",
75 | "default": false
76 | },
77 | "Vendors": {
78 | "type": "Boolean",
79 | "default": false
80 | },
81 | "Ui": {
82 | "type": "Boolean",
83 | "default": true
84 | },
85 | "InputVolumeMeters": {
86 | "type": "Boolean",
87 | "default": false
88 | },
89 | "InputActiveStateChanged": {
90 | "type": "Boolean",
91 | "default": false
92 | },
93 | "InputShowStateChanged": {
94 | "type": "Boolean",
95 | "default": false
96 | },
97 | "SceneItemTransformChanged": {
98 | "type": "Boolean",
99 | "default": true
100 | }
101 | },
102 | "See all requests of OBS": {
103 | "type": "String",
104 | "default": "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#requests "
105 | }
106 | },
107 | "values": {
108 | "removeAllValues": {
109 | "type": "Trigger",
110 | "callback": "removeAllValues"
111 | },
112 | "ControlsStatus":{
113 | "type":"Container",
114 | "ControllerStatus": {
115 | "type":"Boolean",
116 | "description": "false = scenes, true = items",
117 | "default": false
118 | },
119 | "CropBotTopStatus": {
120 | "type":"Boolean",
121 | "description": "false = top, true = bot",
122 | "default": false
123 | },
124 | "CropLeftRightStatus": {
125 | "type":"Boolean",
126 | "description": "false = left, true = right",
127 | "default": false
128 | },
129 | "StudioModeStatus": {
130 | "type":"Boolean",
131 | "description": "OBS studio mode status; false = unactive, true = active",
132 | "default": false
133 | }
134 | },
135 | "Active Item Transform": {
136 | "type": "Container",
137 | "X": {
138 | "type": "Integer",
139 | "min": -9999,
140 | "max": 9999,
141 | "description": "X position",
142 | "shortName": "positionX"
143 | },
144 | "Y": {
145 | "type": "Integer",
146 | "min": -9999,
147 | "max": 9999,
148 | "description": "Y position",
149 | "shortName": "positionY"
150 | },
151 | "Zoom": {
152 | "type": "Float",
153 | "min": -5,
154 | "max": 5,
155 | "description": "Zoom in multiplicator"
156 | },
157 | "Rotation": {
158 | "type": "Integer",
159 | "min": -9999,
160 | "max": 9999,
161 | "description": "In degree",
162 | "shortName": "rotation"
163 | },
164 | "Crop_Left": {
165 | "type": "Integer",
166 | "min": -9999,
167 | "max": 9999,
168 | "shortName": "cropLeft"
169 | },
170 | "Crop_Right": {
171 | "type": "Integer",
172 | "min": -9999,
173 | "max": 9999,
174 | "shortName": "cropRight"
175 | },
176 | "Crop_Top": {
177 | "type": "Integer",
178 | "min": -9999,
179 | "max": 9999,
180 | "shortName": "cropTop"
181 | },
182 | "Crop_Bot": {
183 | "type": "Integer",
184 | "min": -9999,
185 | "max": 9999,
186 | "shortName": "cropBottom"
187 | },
188 | "Steppers": {
189 | "type": "Container",
190 | "X/Y/Crop/Rot Step": {
191 | "type": "Integer",
192 | "min": -9999,
193 | "max": 9999,
194 | "description": "Precision step",
195 | "default": 1
196 | },
197 | "Zoom Step": {
198 | "type": "Float",
199 | "min": -5,
200 | "max": 5,
201 | "description": "Precision step",
202 | "default": 0.001
203 | }
204 | }
205 | }
206 | },
207 | "scripts": [
208 | "OBS.js"
209 | ],
210 | "commands": {
211 | "Raw Command": {
212 | "menu": "",
213 | "callback": "sendObsRawCommand",
214 | "parameters": {
215 | "data": {
216 | "type": "String"
217 | }
218 | }
219 | },
220 | "GetVersion": {
221 | "menu": "General Requests",
222 | "callback": "GetVersion",
223 | "parameters": {
224 | "request Id": {
225 | "type": "String"
226 | }
227 | }
228 | },
229 | "GetStats": {
230 | "menu": "General Requests",
231 | "callback": "GetStats",
232 | "parameters": {
233 | "request Id": {
234 | "type": "String"
235 | }
236 | }
237 | },
238 | "BroadcastCustomEvent": {
239 | "menu": "General Requests",
240 | "callback": "BroadcastCustomEvent",
241 | "parameters": {
242 | "request Id": {
243 | "type": "String"
244 | }
245 | }
246 | },
247 | "CallVendorRequest": {
248 | "menu": "General Requests",
249 | "callback": "CallVendorRequest",
250 | "parameters": {
251 | "request Id": {
252 | "type": "String"
253 | },
254 | "vendorName": {
255 | "type": "String"
256 | },
257 | "requestType": {
258 | "type": "String"
259 | },
260 | "?requestData": {
261 | "type": "String"
262 | }
263 | }
264 | },
265 | "GetHotkeyList": {
266 | "menu": "General Requests",
267 | "callback": "GetHotkeyList",
268 | "parameters": {
269 | "request Id": {
270 | "type": "String"
271 | }
272 | }
273 | },
274 | "TriggerHotkeyByName": {
275 | "menu": "General Requests",
276 | "callback": "TriggerHotkeyByName",
277 | "parameters": {
278 | "request Id": {
279 | "type": "String"
280 | },
281 | "hotkeyName": {
282 | "type": "String"
283 | }
284 | }
285 | },
286 | "TriggerHotkeyByKeySequence": {
287 | "menu": "General Requests",
288 | "callback": "TriggerHotkeyByKeySequence",
289 | "parameters": {
290 | "request Id": {
291 | "type": "String"
292 | },
293 | "?keyId": {
294 | "type": "String"
295 | },
296 | "Shift": {
297 | "type": "Boolean"
298 | },
299 | "Ctrl": {
300 | "type": "Boolean"
301 | },
302 | "Alt": {
303 | "type": "Boolean"
304 | },
305 | "Cmd/Win/Mac": {
306 | "type": "Boolean"
307 | }
308 | }
309 | },
310 | "Sleep": {
311 | "menu": "General Requests",
312 | "callback": "Sleep",
313 | "parameters": {
314 | "request Id": {
315 | "type": "String"
316 | },
317 | "sleepMillis": {
318 | "type": "Integer",
319 | "min": 0,
320 | "max": 50000
321 | },
322 | "sleepFrames": {
323 | "type": "Integer",
324 | "min": 0,
325 | "max": 10000
326 | }
327 | }
328 | },
329 | "GetPersistentData": {
330 | "menu": "Config Requests",
331 | "callback": "GetPersistentData",
332 | "parameters": {
333 | "request Id": {
334 | "type": "String"
335 | },
336 | "realm": {
337 | "type": "String"
338 | },
339 | "slotName": {
340 | "type": "String"
341 | }
342 | }
343 | },
344 | "SetPersistentData": {
345 | "menu": "Config Requests",
346 | "callback": "SetPersistentData",
347 | "parameters": {
348 | "request Id": {
349 | "type": "String"
350 | },
351 | "realm": {
352 | "type": "String"
353 | },
354 | "slotName": {
355 | "type": "String"
356 | },
357 | "slotValue": {
358 | "type": "String"
359 | }
360 | }
361 | },
362 | "GetSceneCollectionList": {
363 | "menu": "Config Requests",
364 | "callback": "GetSceneCollectionList",
365 | "parameters": {
366 | "request Id": {
367 | "type": "String"
368 | }
369 | }
370 | },
371 | "SetCurrentSceneCollection": {
372 | "menu": "Config Requests",
373 | "callback": "SetCurrentSceneCollection",
374 | "parameters": {
375 | "request Id": {
376 | "type": "String"
377 | },
378 | "sceneCollectionName": {
379 | "type": "String"
380 | }
381 | }
382 | },
383 | "CreateSceneCollection": {
384 | "menu": "Config Requests",
385 | "callback": "CreateSceneCollection",
386 | "parameters": {
387 | "request Id": {
388 | "type": "String"
389 | },
390 | "sceneCollectionName": {
391 | "type": "String"
392 | }
393 | }
394 | },
395 | "GetProfileList": {
396 | "menu": "Config Requests",
397 | "callback": "GetProfileList",
398 | "parameters": {
399 | "request Id": {
400 | "type": "String"
401 | }
402 | }
403 | },
404 | "SetCurrentProfile": {
405 | "menu": "Config Requests",
406 | "callback": "SetCurrentProfile",
407 | "parameters": {
408 | "request Id": {
409 | "type": "String"
410 | },
411 | "profileName": {
412 | "type": "String"
413 | }
414 | }
415 | },
416 | "CreateProfile": {
417 | "menu": "Config Requests",
418 | "callback": "CreateProfile",
419 | "parameters": {
420 | "request Id": {
421 | "type": "String"
422 | },
423 | "profileName": {
424 | "type": "String"
425 | }
426 | }
427 | },
428 | "RemoveProfile": {
429 | "menu": "Config Requests",
430 | "callback": "RemoveProfile",
431 | "parameters": {
432 | "request Id": {
433 | "type": "String"
434 | },
435 | "profileName": {
436 | "type": "String"
437 | }
438 | }
439 | },
440 | "GetProfileParameter": {
441 | "menu": "Config Requests",
442 | "callback": "GetProfileParameter",
443 | "parameters": {
444 | "request Id": {
445 | "type": "String"
446 | },
447 | "parameterCategory": {
448 | "type": "String"
449 | },
450 | "parameterName": {
451 | "type": "String"
452 | }
453 | }
454 | },
455 | "SetProfileParameter": {
456 | "menu": "Config Requests",
457 | "callback": "SetProfileParameter",
458 | "parameters": {
459 | "request Id": {
460 | "type": "String"
461 | },
462 | "parameterCategory": {
463 | "type": "String"
464 | },
465 | "parameterName": {
466 | "type": "String"
467 | },
468 | "parameterValue": {
469 | "type": "String"
470 | }
471 | }
472 | },
473 | "GetVideoSettings": {
474 | "menu": "Config Requests",
475 | "callback": "GetVideoSettings",
476 | "parameters": {
477 | "request Id": {
478 | "type": "String"
479 | }
480 | }
481 | },
482 | "SetVideoSettings": {
483 | "menu": "Config Requests",
484 | "callback": "SetVideoSettings",
485 | "parameters": {
486 | "request Id": {
487 | "type": "String"
488 | },
489 | "?fpsNumerator": {
490 | "type": "Integer",
491 | "min": 1
492 | },
493 | "?fpsDenominator": {
494 | "type": "Integer",
495 | "min": 1
496 | },
497 | "?baseWidth": {
498 | "type": "Integer",
499 | "min": 1,
500 | "max": 4096
501 | },
502 | "?baseHeight": {
503 | "type": "Integer",
504 | "min": 1,
505 | "max": 4096
506 | },
507 | "?outputWidth": {
508 | "type": "Integer",
509 | "min": 1,
510 | "max": 4096
511 | },
512 | "?outputHeight": {
513 | "type": "Integer",
514 | "min": 1,
515 | "max": 4096
516 | }
517 | }
518 | },
519 | "GetStreamServiceSettings": {
520 | "menu": "Config Requests",
521 | "callback": "GetStreamServiceSettings",
522 | "parameters": {
523 | "request Id": {
524 | "type": "String"
525 | }
526 | }
527 | },
528 | "SetStreamServiceSettings": {
529 | "menu": "Config Requests",
530 | "callback": "SetStreamServiceSettings",
531 | "parameters": {
532 | "request Id": {
533 | "type": "String"
534 | },
535 | "streamServiceType": {
536 | "type": "String"
537 | },
538 | "streamServiceSettings": {
539 | "type": "String"
540 | }
541 | }
542 | },
543 | "GetRecordDirectory": {
544 | "menu": "Config Requests",
545 | "callback": "GetRecordDirectory",
546 | "parameters": {
547 | "request Id": {
548 | "type": "String"
549 | }
550 | }
551 | },
552 | "GetSourceActive": {
553 | "menu": "Sources Requests",
554 | "callback": "GetSourceActive",
555 | "parameters": {
556 | "request Id": {
557 | "type": "String"
558 | },
559 | "sourceName": {
560 | "type": "String"
561 | }
562 | }
563 | },
564 | "GetSourceScreenshot": {
565 | "menu": "Sources Requests",
566 | "callback": "GetSourceScreenshot",
567 | "parameters": {
568 | "request Id": {
569 | "type": "String"
570 | },
571 | "sourceName": {
572 | "type": "String"
573 | },
574 | "imageFormat": {
575 | "type": "String"
576 | },
577 | "?imageWidth": {
578 | "type": "Integer",
579 | "min": 8,
580 | "max": 4096
581 | },
582 | "?imageHeight": {
583 | "type": "Integer",
584 | "min": 8,
585 | "max": 4096
586 | },
587 | "?imageCompressionQuality": {
588 | "type": "Integer",
589 | "min": -1,
590 | "max": 100,
591 | "default": -1
592 | }
593 | }
594 | },
595 | "SaveSourceScreenshot": {
596 | "menu": "Sources Requests",
597 | "callback": "SaveSourceScreenshot",
598 | "parameters": {
599 | "request Id": {
600 | "type": "String"
601 | },
602 | "sourceName": {
603 | "type": "String"
604 | },
605 | "imageFilePath": {
606 | "type": "String"
607 | },
608 | "imageFormat": {
609 | "type": "Enum",
610 | "options": {
611 | "bmp": "bmp",
612 | "jpeg": "jpeg",
613 | "jpg": "jpg",
614 | "pbm": "pbm",
615 | "pgm": "pgm",
616 | "png": "png",
617 | "ppm": "ppm",
618 | "xbm": "xbm",
619 | "xpm": "xpm"
620 | }
621 | },
622 | "?imageWidth": {
623 | "type": "Integer",
624 | "min": 8,
625 | "max": 4096
626 | },
627 | "?imageHeight": {
628 | "type": "Integer",
629 | "min": 8,
630 | "max": 4096
631 | },
632 | "?imageCompressionQuality": {
633 | "type": "Integer",
634 | "min": -1,
635 | "max": 100,
636 | "default": -1
637 | }
638 | }
639 | },
640 | "GetSceneList": {
641 | "menu": "Scenes Requests",
642 | "callback": "GetSceneList",
643 | "parameters": {
644 | "request Id": {
645 | "type": "String"
646 | }
647 | }
648 | },
649 | "GetGroupList": {
650 | "menu": "Scenes Requests",
651 | "callback": "GetGroupList",
652 | "parameters": {
653 | "request Id": {
654 | "type": "String"
655 | }
656 | }
657 | },
658 | "GetCurrentProgramScene": {
659 | "menu": "Scenes Requests",
660 | "callback": "GetCurrentProgramScene",
661 | "parameters": {
662 | "request Id": {
663 | "type": "String"
664 | }
665 | }
666 | },
667 | "SetCurrentProgramScene": {
668 | "menu": "Scenes Requests",
669 | "callback": "SetCurrentProgramScene",
670 | "parameters": {
671 | "request Id": {
672 | "type": "String"
673 | },
674 | "sceneName": {
675 | "type": "String"
676 | }
677 | }
678 | },
679 | "GetCurrentPreviewScene": {
680 | "menu": "Scenes Requests",
681 | "callback": "GetCurrentPreviewScene",
682 | "parameters": {
683 | "request Id": {
684 | "type": "String"
685 | }
686 | }
687 | },
688 | "SetCurrentPreviewScene": {
689 | "menu": "Scenes Requests",
690 | "callback": "SetCurrentPreviewScene",
691 | "parameters": {
692 | "request Id": {
693 | "type": "String"
694 | },
695 | "sceneName": {
696 | "type": "String"
697 | }
698 | }
699 | },
700 | "CreateScene": {
701 | "menu": "Scenes Requests",
702 | "callback": "CreateScene",
703 | "parameters": {
704 | "request Id": {
705 | "type": "String"
706 | },
707 | "sceneName": {
708 | "type": "String"
709 | }
710 | }
711 | },
712 | "RemoveScene": {
713 | "menu": "Scenes Requests",
714 | "callback": "RemoveScene",
715 | "parameters": {
716 | "request Id": {
717 | "type": "String"
718 | },
719 | "sceneName": {
720 | "type": "String"
721 | }
722 | }
723 | },
724 | "SetSceneName": {
725 | "menu": "Scenes Requests",
726 | "callback": "SetSceneName",
727 | "parameters": {
728 | "request Id": {
729 | "type": "String"
730 | },
731 | "sceneName": {
732 | "type": "String"
733 | },
734 | "newSceneName": {
735 | "type": "String"
736 | }
737 | }
738 | },
739 | "GetSceneSceneTransitionOverride": {
740 | "menu": "Scenes Requests",
741 | "callback": "GetSceneSceneTransitionOverride",
742 | "parameters": {
743 | "request Id": {
744 | "type": "String"
745 | },
746 | "sceneName": {
747 | "type": "String"
748 | }
749 | }
750 | },
751 | "SetSceneSceneTransitionOverride": {
752 | "menu": "Scenes Requests",
753 | "callback": "SetSceneSceneTransitionOverride",
754 | "parameters": {
755 | "request Id": {
756 | "type": "String"
757 | },
758 | "sceneName": {
759 | "type": "String"
760 | },
761 | "?transitionName": {
762 | "type": "String"
763 | },
764 | "?transitionDuration": {
765 | "type": "Integer",
766 | "min": 50,
767 | "max": 20000
768 | }
769 | }
770 | },
771 | "GetInputList": {
772 | "menu": "Inputs Requests",
773 | "callback": "GetInputList",
774 | "parameters": {
775 | "request Id": {
776 | "type": "String"
777 | },
778 | "?inputKind": {
779 | "type": "String"
780 | }
781 | }
782 | },
783 | "GetInputKindList": {
784 | "menu": "Inputs Requests",
785 | "callback": "GetInputKindList",
786 | "parameters": {
787 | "request Id": {
788 | "type": "String"
789 | },
790 | "?unversioned": {
791 | "type": "Boolean"
792 | }
793 | }
794 | },
795 | "GetSpecialInputs": {
796 | "menu": "Inputs Requests",
797 | "callback": "GetSpecialInputs",
798 | "parameters": {
799 | "request Id": {
800 | "type": "String"
801 | }
802 | }
803 | },
804 | "CreateInput": {
805 | "menu": "Inputs Requests",
806 | "callback": "CreateInput",
807 | "parameters": {
808 | "request Id": {
809 | "type": "String"
810 | },
811 | "sceneName": {
812 | "type": "String"
813 | },
814 | "inputName": {
815 | "type": "String"
816 | },
817 | "inputKind": {
818 | "type": "String"
819 | },
820 | "?inputSettings": {
821 | "type": "String"
822 | },
823 | "?sceneItemEnabled": {
824 | "type": "Boolean"
825 | }
826 | }
827 | },
828 | "RemoveInput": {
829 | "menu": "Inputs Requests",
830 | "callback": "RemoveInput",
831 | "parameters": {
832 | "request Id": {
833 | "type": "String"
834 | },
835 | "inputName": {
836 | "type": "String"
837 | }
838 | }
839 | },
840 | "SetInputName": {
841 | "menu": "Inputs Requests",
842 | "callback": "SetInputName",
843 | "parameters": {
844 | "request Id": {
845 | "type": "String"
846 | },
847 | "inputName": {
848 | "type": "String"
849 | },
850 | "newInputName": {
851 | "type": "String"
852 | }
853 | }
854 | },
855 | "GetInputDefaultSettings": {
856 | "menu": "Inputs Requests",
857 | "callback": "GetInputDefaultSettings",
858 | "parameters": {
859 | "request Id": {
860 | "type": "String"
861 | },
862 | "inputKind": {
863 | "type": "String"
864 | }
865 | }
866 | },
867 | "GetInputSettings": {
868 | "menu": "Inputs Requests",
869 | "callback": "GetInputSettings",
870 | "parameters": {
871 | "request Id": {
872 | "type": "String"
873 | },
874 | "inputName": {
875 | "type": "String"
876 | }
877 | }
878 | },
879 | "SetInputSettings": {
880 | "menu": "Inputs Requests",
881 | "callback": "SetInputSettings",
882 | "parameters": {
883 | "request Id": {
884 | "type": "String"
885 | },
886 | "inputName": {
887 | "type": "String"
888 | },
889 | "inputSettings": {
890 | "type": "String"
891 | },
892 | "?overlay": {
893 | "type": "Boolean",
894 | "default": true
895 | }
896 | }
897 | },
898 | "GetInputMute": {
899 | "menu": "Inputs Requests",
900 | "callback": "GetInputMute",
901 | "parameters": {
902 | "request Id": {
903 | "type": "String"
904 | },
905 | "inputName": {
906 | "type": "String"
907 | }
908 | }
909 | },
910 | "SetInputMute": {
911 | "menu": "Inputs Requests",
912 | "callback": "SetInputMute",
913 | "parameters": {
914 | "request Id": {
915 | "type": "String"
916 | },
917 | "inputName": {
918 | "type": "String"
919 | },
920 | "inputMuted": {
921 | "type": "Boolean"
922 | }
923 | }
924 | },
925 | "ToggleInputMute": {
926 | "menu": "Inputs Requests",
927 | "callback": "ToggleInputMute",
928 | "parameters": {
929 | "request Id": {
930 | "type": "String"
931 | },
932 | "inputName": {
933 | "type": "String"
934 | }
935 | }
936 | },
937 | "GetInputVolume": {
938 | "menu": "Inputs Requests",
939 | "callback": "GetInputVolume",
940 | "parameters": {
941 | "request Id": {
942 | "type": "String"
943 | },
944 | "inputName": {
945 | "type": "String"
946 | }
947 | }
948 | },
949 | "SetInputVolume": {
950 | "menu": "Inputs Requests",
951 | "callback": "SetInputVolume",
952 | "parameters": {
953 | "request Id": {
954 | "type": "String"
955 | },
956 | "inputName": {
957 | "type": "String"
958 | },
959 | "Db settings ?": {
960 | "type": "Boolean"
961 | },
962 | "?inputVolumeMul": {
963 | "type": "Float",
964 | "min": 0,
965 | "max": 20,
966 | "dependency": {
967 | "source": "Db settings ?",
968 | "value": "Boolean",
969 | "check": "equals",
970 | "action": "show"
971 | }
972 | },
973 | "?inputVolumeDb": {
974 | "type": "Float",
975 | "min": -100,
976 | "max": 26,
977 | "dependency": {
978 | "source": "Db settings ?",
979 | "value": "Boolean",
980 | "check": "notEquals",
981 | "action": "show"
982 | }
983 | }
984 | }
985 | },
986 | "GetInputAudioBalance": {
987 | "menu": "Inputs Requests",
988 | "callback": "GetInputAudioBalance",
989 | "parameters": {
990 | "request Id": {
991 | "type": "String"
992 | },
993 | "inputName": {
994 | "type": "String"
995 | }
996 | }
997 | },
998 | "SetInputAudioBalance": {
999 | "menu": "Inputs Requests",
1000 | "callback": "SetInputAudioBalance",
1001 | "parameters": {
1002 | "request Id": {
1003 | "type": "String"
1004 | },
1005 | "inputName": {
1006 | "type": "String"
1007 | },
1008 | "inputAudioBalance": {
1009 | "type": "Float",
1010 | "min": 0,
1011 | "max": 1
1012 | }
1013 | }
1014 | },
1015 | "GetInputAudioSyncOffset": {
1016 | "menu": "Inputs Requests",
1017 | "callback": "GetInputAudioSyncOffset",
1018 | "parameters": {
1019 | "request Id": {
1020 | "type": "String"
1021 | },
1022 | "inputName": {
1023 | "type": "String"
1024 | }
1025 | }
1026 | },
1027 | "SetInputAudioSyncOffset": {
1028 | "menu": "Inputs Requests",
1029 | "callback": "SetInputAudioSyncOffset",
1030 | "parameters": {
1031 | "request Id": {
1032 | "type": "String"
1033 | },
1034 | "inputName": {
1035 | "type": "String"
1036 | },
1037 | "inputAudioSyncOffset": {
1038 | "type": "Integer",
1039 | "min": -950,
1040 | "max": 20000
1041 | }
1042 | }
1043 | },
1044 | "GetInputAudioMonitorType": {
1045 | "menu": "Inputs Requests",
1046 | "callback": "GetInputAudioMonitorType",
1047 | "parameters": {
1048 | "request Id": {
1049 | "type": "String"
1050 | },
1051 | "inputName": {
1052 | "type": "String"
1053 | }
1054 | }
1055 | },
1056 | "SetInputAudioMonitorType": {
1057 | "menu": "Inputs Requests",
1058 | "callback": "SetInputAudioMonitorType",
1059 | "parameters": {
1060 | "request Id": {
1061 | "type": "String"
1062 | },
1063 | "inputName": {
1064 | "type": "String"
1065 | },
1066 | "monitorType": {
1067 | "type": "Enum",
1068 | "options": {
1069 | "OBS_MONITORING_TYPE_NONE": "OBS_MONITORING_TYPE_NONE",
1070 | "OBS_MONITORING_TYPE_MONITOR_ONLY": "OBS_MONITORING_TYPE_MONITOR_ONLY",
1071 | "OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT": "OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT"
1072 | }
1073 | }
1074 | }
1075 | },
1076 | "GetInputAudioTracks": {
1077 | "menu": "Inputs Requests",
1078 | "callback": "GetInputAudioTracks",
1079 | "parameters": {
1080 | "request Id": {
1081 | "type": "String"
1082 | },
1083 | "inputName": {
1084 | "type": "String"
1085 | }
1086 | }
1087 | },
1088 | "SetInputAudioTracks": {
1089 | "menu": "Inputs Requests",
1090 | "callback": "SetInputAudioTracks",
1091 | "parameters": {
1092 | "request Id": {
1093 | "type": "String"
1094 | },
1095 | "inputName": {
1096 | "type": "String"
1097 | },
1098 | "inputAudioTracks": {
1099 | "type": "String"
1100 | }
1101 | }
1102 | },
1103 | "GetInputPropertiesListPropertyItems": {
1104 | "menu": "Inputs Requests",
1105 | "callback": "GetInputPropertiesListPropertyItems",
1106 | "parameters": {
1107 | "request Id": {
1108 | "type": "String"
1109 | },
1110 | "inputName": {
1111 | "type": "String"
1112 | },
1113 | "propertyName": {
1114 | "type": "String"
1115 | }
1116 | }
1117 | },
1118 | "PressInputPropertiesButton": {
1119 | "menu": "Inputs Requests",
1120 | "callback": "PressInputPropertiesButton",
1121 | "parameters": {
1122 | "request Id": {
1123 | "type": "String"
1124 | },
1125 | "inputName": {
1126 | "type": "String"
1127 | },
1128 | "propertyName": {
1129 | "type": "String"
1130 | }
1131 | }
1132 | },
1133 | "GetTransitionKindList": {
1134 | "menu": "Transitions Requests",
1135 | "callback": "GetTransitionKindList",
1136 | "parameters": {
1137 | "request Id": {
1138 | "type": "String"
1139 | },
1140 | "transitionKinds": {
1141 | "type": "String"
1142 | }
1143 | }
1144 | },
1145 | "GetSceneTransitionList": {
1146 | "menu": "Transitions Requests",
1147 | "callback": "GetSceneTransitionList",
1148 | "parameters": {
1149 | "request Id": {
1150 | "type": "String"
1151 | },
1152 | "currentSceneTransitionName": {
1153 | "type": "String"
1154 | },
1155 | "currentSceneTransitionKind": {
1156 | "type": "String"
1157 | },
1158 | "transitions": {
1159 | "type": "String"
1160 | }
1161 | }
1162 | },
1163 | "GetCurrentSceneTransition": {
1164 | "menu": "Transitions Requests",
1165 | "callback": "GetCurrentSceneTransition",
1166 | "parameters": {
1167 | "request Id": {
1168 | "type": "String"
1169 | },
1170 | "transitionName": {
1171 | "type": "String"
1172 | },
1173 | "transitionKind": {
1174 | "type": "String"
1175 | },
1176 | "transitionFixed": {
1177 | "type": "Boolean"
1178 | },
1179 | "transitionDuration (ms)": {
1180 | "type": "Integer"
1181 | },
1182 | "transitionConfigurable": {
1183 | "type": "Boolean"
1184 | },
1185 | "transitionSettings": {
1186 | "type": "String"
1187 | }
1188 | }
1189 | },
1190 | "SetCurrentSceneTransition": {
1191 | "menu": "Transitions Requests",
1192 | "callback": "SetCurrentSceneTransition",
1193 | "parameters": {
1194 | "request Id": {
1195 | "type": "String"
1196 | },
1197 | "transitionName": {
1198 | "type": "String"
1199 | }
1200 | }
1201 | },
1202 | "SetCurrentSceneTransitionDuration": {
1203 | "menu": "Transitions Requests",
1204 | "callback": "SetCurrentSceneTransitionDuration",
1205 | "parameters": {
1206 | "request Id": {
1207 | "type": "String"
1208 | },
1209 | "transitionDuration (ms)": {
1210 | "type": "Integer",
1211 | "min": 50,
1212 | "max": 20000
1213 | }
1214 | }
1215 | },
1216 | "SetCurrentSceneTransitionSettings": {
1217 | "menu": "Transitions Requests",
1218 | "callback": "SetCurrentSceneTransitionSettings",
1219 | "parameters": {
1220 | "request Id": {
1221 | "type": "String"
1222 | },
1223 | "transitionSettings": {
1224 | "type": "String"
1225 | },
1226 | "?overlay": {
1227 | "type": "Boolean",
1228 | "default": true
1229 | }
1230 | }
1231 | },
1232 | "GetCurrentSceneTransitionCursor": {
1233 | "menu": "Transitions Requests",
1234 | "callback": "GetCurrentSceneTransitionCursor",
1235 | "parameters": {
1236 | "request Id": {
1237 | "type": "String"
1238 | },
1239 | "transitionCursor": {
1240 | "type": "Float",
1241 | "min": 0.0,
1242 | "max": 1.0
1243 | }
1244 | }
1245 | },
1246 | "TriggerStudioModeTransition": {
1247 | "menu": "Transitions Requests",
1248 | "callback": "TriggerStudioModeTransition",
1249 | "parameters": {
1250 | "request Id": {
1251 | "type": "String"
1252 | }
1253 | }
1254 | },
1255 | "SetTBarPosition": {
1256 | "menu": "Transitions Requests",
1257 | "callback": "SetTBarPosition",
1258 | "parameters": {
1259 | "request Id": {
1260 | "type": "String"
1261 | },
1262 | "position": {
1263 | "type": "Float",
1264 | "min": 0.0,
1265 | "max": 1.0
1266 | },
1267 | "?release": {
1268 | "type": "Boolean",
1269 | "default": true
1270 | }
1271 | }
1272 | },
1273 | "GetSourceFilterList": {
1274 | "menu": "Scene Items Requests",
1275 | "callback": "GetSourceFilterList",
1276 | "parameters": {
1277 | "request Id": {
1278 | "type": "String"
1279 | },
1280 | "sourceName": {
1281 | "type": "String"
1282 | }
1283 | }
1284 | },
1285 | "GetSourceFilterDefaultSettings": {
1286 | "menu": "Filters Requests",
1287 | "callback": "GetSourceFilterDefaultSettings",
1288 | "parameters": {
1289 | "request Id": {
1290 | "type": "String"
1291 | },
1292 | "filterKind": {
1293 | "type": "String"
1294 | }
1295 | }
1296 | },
1297 | "CreateSourceFilter": {
1298 | "menu": "Filters Requests",
1299 | "callback": "CreateSourceFilter",
1300 | "parameters": {
1301 | "request Id": {
1302 | "type": "String"
1303 | },
1304 | "sourceName": {
1305 | "type": "String"
1306 | },
1307 | "filterName": {
1308 | "type": "String"
1309 | },
1310 | "filterKind": {
1311 | "type": "String"
1312 | },
1313 | "?filterSettings": {
1314 | "type": "String"
1315 | }
1316 | }
1317 | },
1318 | "RemoveSourceFilter": {
1319 | "menu": "Filters Requests",
1320 | "callback": "RemoveSourceFilter",
1321 | "parameters": {
1322 | "request Id": {
1323 | "type": "String"
1324 | },
1325 | "sourceName": {
1326 | "type": "String"
1327 | },
1328 | "filterName": {
1329 | "type": "String"
1330 | }
1331 | }
1332 | },
1333 | "SetSourceFilterName": {
1334 | "menu": "Filters Requests",
1335 | "callback": "SetSourceFilterName",
1336 | "parameters": {
1337 | "request Id": {
1338 | "type": "String"
1339 | },
1340 | "sourceName": {
1341 | "type": "String"
1342 | },
1343 | "filterName": {
1344 | "type": "String"
1345 | },
1346 | "newFilterName": {
1347 | "type": "String"
1348 | }
1349 | }
1350 | },
1351 | "GetSourceFilter": {
1352 | "menu": "Filters Requests",
1353 | "callback": "GetSourceFilter",
1354 | "parameters": {
1355 | "request Id": {
1356 | "type": "String"
1357 | },
1358 | "sourceName": {
1359 | "type": "String"
1360 | },
1361 | "newFilterName": {
1362 | "type": "String"
1363 | }
1364 | }
1365 | },
1366 | "SetSourceFilterIndex": {
1367 | "menu": "Filters Requests",
1368 | "callback": "SetSourceFilterIndex",
1369 | "parameters": {
1370 | "request Id": {
1371 | "type": "String"
1372 | },
1373 | "sourceName": {
1374 | "type": "String"
1375 | },
1376 | "filterName": {
1377 | "type": "String"
1378 | },
1379 | "filterIndex": {
1380 | "type": "Integer",
1381 | "min": 0
1382 | }
1383 | }
1384 | },
1385 | "SetSourceFilterSettings": {
1386 | "menu": "Filters Requests",
1387 | "callback": "SetSourceFilterSettings",
1388 | "parameters": {
1389 | "request Id": {
1390 | "type": "String"
1391 | },
1392 | "sourceName": {
1393 | "type": "String"
1394 | },
1395 | "filterName": {
1396 | "type": "String"
1397 | },
1398 | "filterSettings": {
1399 | "type": "String"
1400 | },
1401 | "overlay": {
1402 | "type": "Boolean",
1403 | "default": true
1404 | }
1405 | }
1406 | },
1407 | "SetSourceFilterColorCorrectionSettings": {
1408 | "menu": "Filters Requests",
1409 | "callback": "SetSourceFilterColorCorrectionSettings",
1410 | "parameters": {
1411 | "request Id": {
1412 | "type": "String"
1413 | },
1414 | "sourceName": {
1415 | "type": "String"
1416 | },
1417 | "filterName": {
1418 | "type": "String"
1419 | },
1420 | "Gamma": {
1421 | "type": "Float",
1422 | "min": -3,
1423 | "max": 3,
1424 | "default": 0
1425 | },
1426 | "Contrast": {
1427 | "type": "Float",
1428 | "min": -4,
1429 | "max": 4,
1430 | "default": 0
1431 | },
1432 | "Brightness": {
1433 | "type": "Float",
1434 | "min": -1,
1435 | "max": 1,
1436 | "default": 0
1437 | },
1438 | "Saturation": {
1439 | "type": "Float",
1440 | "min": -1,
1441 | "max": 5,
1442 | "default": 0
1443 | },
1444 | "Hue Shift": {
1445 | "type": "Float",
1446 | "min": -180,
1447 | "max": 180,
1448 | "default": 0
1449 | },
1450 | "Opacity": {
1451 | "type": "Float",
1452 | "min": 0,
1453 | "max": 1,
1454 | "default": 1
1455 | },
1456 | "Color Multiply": {
1457 | "type": "Color",
1458 | "default": [
1459 | 1,
1460 | 1,
1461 | 1,
1462 | 1
1463 | ]
1464 | },
1465 | "Color Add": {
1466 | "type": "Color",
1467 | "default": [
1468 | 0,
1469 | 0,
1470 | 0,
1471 | 1
1472 | ]
1473 | },
1474 | "overlay": {
1475 | "type": "Boolean",
1476 | "default": true
1477 | }
1478 | }
1479 | },
1480 | "SetSourceFilterEnabled": {
1481 | "menu": "Filters Requests",
1482 | "callback": "SetSourceFilterEnabled",
1483 | "parameters": {
1484 | "request Id": {
1485 | "type": "String"
1486 | },
1487 | "sourceName": {
1488 | "type": "String"
1489 | },
1490 | "filterName": {
1491 | "type": "String"
1492 | },
1493 | "filterEnabled": {
1494 | "type": "Boolean"
1495 | }
1496 | }
1497 | },
1498 | "GetSceneItemList": {
1499 | "menu": "Scene Items Requests",
1500 | "callback": "GetSceneItemList",
1501 | "parameters": {
1502 | "request Id": {
1503 | "type": "String"
1504 | },
1505 | "sceneName": {
1506 | "type": "String"
1507 | }
1508 | }
1509 | },
1510 | "GetGroupSceneItemList": {
1511 | "menu": "Scene Items Requests",
1512 | "callback": "GetGroupSceneItemList",
1513 | "parameters": {
1514 | "request Id": {
1515 | "type": "String"
1516 | },
1517 | "sceneName": {
1518 | "type": "String"
1519 | }
1520 | }
1521 | },
1522 | "GetSceneItemId": {
1523 | "menu": "Scene Items Requests",
1524 | "callback": "GetSceneItemId",
1525 | "parameters": {
1526 | "request Id": {
1527 | "type": "String"
1528 | },
1529 | "sceneName": {
1530 | "type": "String"
1531 | },
1532 | "sourceName": {
1533 | "type": "String"
1534 | },
1535 | "?searchOffset": {
1536 | "type": "Integer",
1537 | "min": -1,
1538 | "default": 0
1539 | }
1540 | }
1541 | },
1542 | "CreateSceneItem": {
1543 | "menu": "Scene Items Requests",
1544 | "callback": "CreateSceneItem",
1545 | "parameters": {
1546 | "request Id": {
1547 | "type": "String"
1548 | },
1549 | "sceneName": {
1550 | "type": "String"
1551 | },
1552 | "sourceName": {
1553 | "type": "String"
1554 | },
1555 | "?sceneItemEnabled": {
1556 | "type": "Boolean",
1557 | "default": true
1558 | }
1559 | }
1560 | },
1561 | "RemoveSceneItem": {
1562 | "menu": "Scene Items Requests",
1563 | "callback": "RemoveSceneItem",
1564 | "parameters": {
1565 | "request Id": {
1566 | "type": "String"
1567 | },
1568 | "sceneName": {
1569 | "type": "String"
1570 | },
1571 | "sceneItemId": {
1572 | "type": "Integer",
1573 | "min": 0
1574 | }
1575 | }
1576 | },
1577 | "DuplicateSceneItem": {
1578 | "menu": "Scene Items Requests",
1579 | "callback": "DuplicateSceneItem",
1580 | "parameters": {
1581 | "request Id": {
1582 | "type": "String"
1583 | },
1584 | "sceneName": {
1585 | "type": "String"
1586 | },
1587 | "sceneId": {
1588 | "type": "Integer",
1589 | "min": 0
1590 | },
1591 | "?destinationSceneName": {
1592 | "type": "String"
1593 | }
1594 | }
1595 | },
1596 | "GetSceneItemTransform": {
1597 | "menu": "Scene Items Requests",
1598 | "callback": "GetSceneItemTransform",
1599 | "parameters": {
1600 | "request Id": {
1601 | "type": "String"
1602 | },
1603 | "sceneName": {
1604 | "type": "String"
1605 | },
1606 | "sceneItemId": {
1607 | "type": "Integer",
1608 | "min": 0
1609 | }
1610 | }
1611 | },
1612 | "SetSceneItemTransform": {
1613 | "menu": "Scene Items Requests",
1614 | "callback": "SetSceneItemTransform",
1615 | "parameters": {
1616 | "request Id": {
1617 | "type": "String"
1618 | },
1619 | "sceneName": {
1620 | "type": "String"
1621 | },
1622 | "sceneItemId": {
1623 | "type": "Integer",
1624 | "min": 0
1625 | },
1626 | "positionX status": {
1627 | "type": "Boolean"
1628 | },
1629 | "positionX": {
1630 | "type": "Float",
1631 | "dependency": {
1632 | "source": "positionX status",
1633 | "value": "Boolean",
1634 | "check": "notEquals",
1635 | "action": "show"
1636 | }
1637 | },
1638 | "positionY status": {
1639 | "type": "Boolean"
1640 | },
1641 | "positionY": {
1642 | "type": "Float",
1643 | "dependency": {
1644 | "source": "positionY status",
1645 | "value": "Boolean",
1646 | "check": "notEquals",
1647 | "action": "show"
1648 | }
1649 | },
1650 | "scaleX status": {
1651 | "type": "Boolean"
1652 | },
1653 | "scaleX": {
1654 | "type": "Float",
1655 | "dependency": {
1656 | "source": "scaleX status",
1657 | "value": "Boolean",
1658 | "check": "notEquals",
1659 | "action": "show"
1660 | }
1661 | },
1662 | "scaleY status": {
1663 | "type": "Boolean"
1664 | },
1665 | "scaleY": {
1666 | "type": "Float",
1667 | "dependency": {
1668 | "source": "scaleY status",
1669 | "value": "Boolean",
1670 | "check": "notEquals",
1671 | "action": "show"
1672 | }
1673 | },
1674 | "rotation status": {
1675 | "type": "Boolean"
1676 | },
1677 | "rotation": {
1678 | "type": "Float",
1679 | "dependency": {
1680 | "source": "rotation status",
1681 | "value": "Boolean",
1682 | "check": "notEquals",
1683 | "action": "show"
1684 | }
1685 | },
1686 | "cropBottom status": {
1687 | "type": "Boolean"
1688 | },
1689 | "cropBottom": {
1690 | "type": "Float",
1691 | "dependency": {
1692 | "source": "cropBottom status",
1693 | "value": "Boolean",
1694 | "check": "notEquals",
1695 | "action": "show"
1696 | }
1697 | },
1698 | "cropTop status": {
1699 | "type": "Boolean"
1700 | },
1701 | "cropTop": {
1702 | "type": "Float",
1703 | "dependency": {
1704 | "source": "cropTop status",
1705 | "value": "Boolean",
1706 | "check": "notEquals",
1707 | "action": "show"
1708 | }
1709 | },
1710 | "cropLeft status": {
1711 | "type": "Boolean"
1712 | },
1713 | "cropLeft": {
1714 | "type": "Float",
1715 | "dependency": {
1716 | "source": "cropLeft status",
1717 | "value": "Boolean",
1718 | "check": "notEquals",
1719 | "action": "show"
1720 | }
1721 | },
1722 | "cropRight status": {
1723 | "type": "Boolean"
1724 | },
1725 | "cropRight": {
1726 | "type": "Float",
1727 | "dependency": {
1728 | "source": "cropRight status",
1729 | "value": "Boolean",
1730 | "check": "notEquals",
1731 | "action": "show"
1732 | }
1733 | }
1734 | }
1735 | },
1736 | "GetSceneItemEnabled": {
1737 | "menu": "Scene Items Requests",
1738 | "callback": "GetSceneItemEnabled",
1739 | "parameters": {
1740 | "request Id": {
1741 | "type": "String"
1742 | },
1743 | "sceneName": {
1744 | "type": "String"
1745 | },
1746 | "sceneItemId": {
1747 | "type": "Integer",
1748 | "min": 0
1749 | }
1750 | }
1751 | },
1752 | "SetSceneItemEnabled": {
1753 | "menu": "Scene Items Requests",
1754 | "callback": "SetSceneItemEnabled",
1755 | "parameters": {
1756 | "request Id": {
1757 | "type": "String"
1758 | },
1759 | "sceneName": {
1760 | "type": "String"
1761 | },
1762 | "sceneItemId": {
1763 | "type": "Integer",
1764 | "min": 0
1765 | },
1766 | "sceneItemEnabled": {
1767 | "type": "Boolean"
1768 | }
1769 | }
1770 | },
1771 | "GetSceneItemLocked": {
1772 | "menu": "Scene Items Requests",
1773 | "callback": "GetSceneItemLocked",
1774 | "parameters": {
1775 | "request Id": {
1776 | "type": "String"
1777 | },
1778 | "sceneName": {
1779 | "type": "String"
1780 | },
1781 | "sceneItemId": {
1782 | "type": "Integer",
1783 | "min": 0
1784 | }
1785 | }
1786 | },
1787 | "SetSceneItemLocked": {
1788 | "menu": "Scene Items Requests",
1789 | "callback": "SetSceneItemLocked",
1790 | "parameters": {
1791 | "request Id": {
1792 | "type": "String"
1793 | },
1794 | "sceneName": {
1795 | "type": "String"
1796 | },
1797 | "sceneItemId": {
1798 | "type": "Integer",
1799 | "min": 0
1800 | },
1801 | "sceneItemLocked": {
1802 | "type": "Boolean"
1803 | }
1804 | }
1805 | },
1806 | "GetSceneItemIndex": {
1807 | "menu": "Scene Items Requests",
1808 | "callback": "GetSceneItemIndex",
1809 | "parameters": {
1810 | "request Id": {
1811 | "type": "String"
1812 | },
1813 | "sceneName": {
1814 | "type": "String"
1815 | },
1816 | "sceneItemId": {
1817 | "type": "Integer",
1818 | "min": 0
1819 | }
1820 | }
1821 | },
1822 | "SetSceneItemIndex": {
1823 | "menu": "Scene Items Requests",
1824 | "callback": "SetSceneItemIndex",
1825 | "parameters": {
1826 | "request Id": {
1827 | "type": "String"
1828 | },
1829 | "sceneName": {
1830 | "type": "String"
1831 | },
1832 | "sceneItemId": {
1833 | "type": "Integer",
1834 | "min": 0
1835 | },
1836 | "sceneItemIndex": {
1837 | "type": "Integer",
1838 | "min": 0
1839 | }
1840 | }
1841 | },
1842 | "GetSceneItemBlendMode": {
1843 | "menu": "Scene Items Requests",
1844 | "callback": "GetSceneItemBlendMode",
1845 | "parameters": {
1846 | "request Id": {
1847 | "type": "String"
1848 | },
1849 | "sceneName": {
1850 | "type": "String"
1851 | },
1852 | "sceneItemId": {
1853 | "type": "Integer",
1854 | "min": 0
1855 | }
1856 | }
1857 | },
1858 | "SetSceneItemBlendMode": {
1859 | "menu": "Scene Items Requests",
1860 | "callback": "SetSceneItemBlendMode",
1861 | "parameters": {
1862 | "request Id": {
1863 | "type": "String"
1864 | },
1865 | "sceneName": {
1866 | "type": "String"
1867 | },
1868 | "sceneItemId": {
1869 | "type": "Integer",
1870 | "min": 0
1871 | },
1872 | "sceneItemBlendMode": {
1873 | "type": "Enum",
1874 | "options": {
1875 | "OBS_BLEND_NORMAL": "OBS_BLEND_NORMAL",
1876 | "OBS_BLEND_ADDITIVE": "OBS_BLEND_ADDITIVE",
1877 | "OBS_BLEND_SUBTRACT": "OBS_BLEND_SUBTRACT",
1878 | "OBS_BLEND_SCREEN": "OBS_BLEND_SCREEN",
1879 | "OBS_BLEND_MULTIPLY": "OBS_BLEND_MULTIPLY",
1880 | "OBS_BLEND_LIGHTEN": "OBS_BLEND_LIGHTEN",
1881 | "OBS_BLEND_DARKEN": "OBS_BLEND_DARKEN"
1882 | }
1883 | }
1884 | }
1885 | },
1886 | "GetVirtualCamStatus": {
1887 | "menu": "Outputs Requests",
1888 | "callback": "GetVirtualCamStatus",
1889 | "parameters": {
1890 | "request Id": {
1891 | "type": "String"
1892 | }
1893 | }
1894 | },
1895 | "ToggleVirtualCam": {
1896 | "menu": "Outputs Requests",
1897 | "callback": "ToggleVirtualCam",
1898 | "parameters": {
1899 | "request Id": {
1900 | "type": "String"
1901 | }
1902 | }
1903 | },
1904 | "StartVirtualCam": {
1905 | "menu": "Outputs Requests",
1906 | "callback": "StartVirtualCam",
1907 | "parameters": {
1908 | "request Id": {
1909 | "type": "String"
1910 | }
1911 | }
1912 | },
1913 | "StopVirtualCam": {
1914 | "menu": "Outputs Requests",
1915 | "callback": "StopVirtualCam",
1916 | "parameters": {
1917 | "request Id": {
1918 | "type": "String"
1919 | }
1920 | }
1921 | },
1922 | "GetReplayBufferStatus": {
1923 | "menu": "Outputs Requests",
1924 | "callback": "GetReplayBufferStatus",
1925 | "parameters": {
1926 | "request Id": {
1927 | "type": "String"
1928 | }
1929 | }
1930 | },
1931 | "ToggleReplayBuffer": {
1932 | "menu": "Outputs Requests",
1933 | "callback": "ToggleReplayBuffer",
1934 | "parameters": {
1935 | "request Id": {
1936 | "type": "String"
1937 | }
1938 | }
1939 | },
1940 | "StartReplayBuffer": {
1941 | "menu": "Outputs Requests",
1942 | "callback": "StartReplayBuffer",
1943 | "parameters": {
1944 | "request Id": {
1945 | "type": "String"
1946 | }
1947 | }
1948 | },
1949 | "StopReplayBuffer": {
1950 | "menu": "Outputs Requests",
1951 | "callback": "StopReplayBuffer",
1952 | "parameters": {
1953 | "request Id": {
1954 | "type": "String"
1955 | }
1956 | }
1957 | },
1958 | "SaveReplayBuffer": {
1959 | "menu": "Outputs Requests",
1960 | "callback": "SaveReplayBuffer",
1961 | "parameters": {
1962 | "request Id": {
1963 | "type": "String"
1964 | }
1965 | }
1966 | },
1967 | "GetLastReplayBufferReplay": {
1968 | "menu": "Outputs Requests",
1969 | "callback": "GetLastReplayBufferReplay",
1970 | "parameters": {
1971 | "request Id": {
1972 | "type": "String"
1973 | }
1974 | }
1975 | },
1976 | "GetOutputList": {
1977 | "menu": "Outputs Requests",
1978 | "callback": "GetOutputList",
1979 | "parameters": {
1980 | "request Id": {
1981 | "type": "String"
1982 | }
1983 | }
1984 | },
1985 | "GetOutputStatus": {
1986 | "menu": "Outputs Requests",
1987 | "callback": "GetOutputStatus",
1988 | "parameters": {
1989 | "request Id": {
1990 | "type": "String"
1991 | },
1992 | "outputName": {
1993 | "type": "String"
1994 | }
1995 | }
1996 | },
1997 | "ToggleOutput": {
1998 | "menu": "Outputs Requests",
1999 | "callback": "ToggleOutput",
2000 | "parameters": {
2001 | "request Id": {
2002 | "type": "String"
2003 | },
2004 | "outputName": {
2005 | "type": "String"
2006 | }
2007 | }
2008 | },
2009 | "StartOutput": {
2010 | "menu": "Outputs Requests",
2011 | "callback": "StartOutput",
2012 | "parameters": {
2013 | "request Id": {
2014 | "type": "String"
2015 | },
2016 | "outputName": {
2017 | "type": "String"
2018 | }
2019 | }
2020 | },
2021 | "StopOutput": {
2022 | "menu": "Outputs Requests",
2023 | "callback": "StopOutput",
2024 | "parameters": {
2025 | "request Id": {
2026 | "type": "String"
2027 | },
2028 | "outputName": {
2029 | "type": "String"
2030 | }
2031 | }
2032 | },
2033 | "GetOutputSettings": {
2034 | "menu": "Outputs Requests",
2035 | "callback": "GetOutputSettings",
2036 | "parameters": {
2037 | "request Id": {
2038 | "type": "String"
2039 | },
2040 | "outputName": {
2041 | "type": "String"
2042 | }
2043 | }
2044 | },
2045 | "SetOutputSettings": {
2046 | "menu": "Outputs Requests",
2047 | "callback": "SetOutputSettings",
2048 | "parameters": {
2049 | "request Id": {
2050 | "type": "String"
2051 | },
2052 | "outputName": {
2053 | "type": "String"
2054 | },
2055 | "outputSettings": {
2056 | "type": "String"
2057 | }
2058 | }
2059 | },
2060 | "GetStreamStatus": {
2061 | "menu": "Stream Requests",
2062 | "callback": "GetStreamStatus",
2063 | "parameters": {
2064 | "request Id": {
2065 | "type": "String"
2066 | }
2067 | }
2068 | },
2069 | "ToggleStream": {
2070 | "menu": "Stream Requests",
2071 | "callback": "ToggleStream",
2072 | "parameters": {
2073 | "request Id": {
2074 | "type": "String"
2075 | }
2076 | }
2077 | },
2078 | "StartStream": {
2079 | "menu": "Stream Requests",
2080 | "callback": "StartStream",
2081 | "parameters": {
2082 | "request Id": {
2083 | "type": "String"
2084 | }
2085 | }
2086 | },
2087 | "StopStream": {
2088 | "menu": "Stream Requests",
2089 | "callback": "StopStream",
2090 | "parameters": {
2091 | "request Id": {
2092 | "type": "String"
2093 | }
2094 | }
2095 | },
2096 | "SendStreamCaption": {
2097 | "menu": "Stream Requests",
2098 | "callback": "SendStreamCaption",
2099 | "parameters": {
2100 | "request Id": {
2101 | "type": "String"
2102 | },
2103 | "captionText": {
2104 | "type": "String"
2105 | }
2106 | }
2107 | },
2108 | "GetRecordStatus": {
2109 | "menu": "Record Requests",
2110 | "callback": "GetRecordStatus",
2111 | "parameters": {
2112 | "request Id": {
2113 | "type": "String"
2114 | }
2115 | }
2116 | },
2117 | "ToggleRecord": {
2118 | "menu": "Record Requests",
2119 | "callback": "ToggleRecord",
2120 | "parameters": {
2121 | "request Id": {
2122 | "type": "String"
2123 | }
2124 | }
2125 | },
2126 | "StartRecord": {
2127 | "menu": "Record Requests",
2128 | "callback": "StartRecord",
2129 | "parameters": {
2130 | "request Id": {
2131 | "type": "String"
2132 | }
2133 | }
2134 | },
2135 | "StopRecord": {
2136 | "menu": "Record Requests",
2137 | "callback": "StopRecord",
2138 | "parameters": {
2139 | "request Id": {
2140 | "type": "String"
2141 | }
2142 | }
2143 | },
2144 | "ToggleRecordPause": {
2145 | "menu": "Record Requests",
2146 | "callback": "ToggleRecordPause",
2147 | "parameters": {
2148 | "request Id": {
2149 | "type": "String"
2150 | }
2151 | }
2152 | },
2153 | "PauseRecord": {
2154 | "menu": "Record Requests",
2155 | "callback": "PauseRecord",
2156 | "parameters": {
2157 | "request Id": {
2158 | "type": "String"
2159 | }
2160 | }
2161 | },
2162 | "ResumeRecord": {
2163 | "menu": "Record Requests",
2164 | "callback": "ResumeRecord",
2165 | "parameters": {
2166 | "request Id": {
2167 | "type": "String"
2168 | }
2169 | }
2170 | },
2171 | "GetMediaInputStatus": {
2172 | "menu": "Media Inputs Requests",
2173 | "callback": "GetMediaInputStatus",
2174 | "parameters": {
2175 | "request Id": {
2176 | "type": "String"
2177 | },
2178 | "inputName": {
2179 | "type": "String"
2180 | }
2181 | }
2182 | },
2183 | "SetMediaInputCursor": {
2184 | "menu": "Media Inputs Requests",
2185 | "callback": "SetMediaInputCursor",
2186 | "parameters": {
2187 | "request Id": {
2188 | "type": "String"
2189 | },
2190 | "inputName": {
2191 | "type": "String"
2192 | },
2193 | "mediaCursor": {
2194 | "type": "Float",
2195 | "min": 0
2196 | }
2197 | }
2198 | },
2199 | "OffsetMediaInputCursor": {
2200 | "menu": "Media Inputs Requests",
2201 | "callback": "OffsetMediaInputCursor",
2202 | "parameters": {
2203 | "request Id": {
2204 | "type": "String"
2205 | },
2206 | "inputName": {
2207 | "type": "String"
2208 | },
2209 | "mediaCursorOffset": {
2210 | "type": "Float"
2211 | }
2212 | }
2213 | },
2214 | "TriggerMediaInputAction": {
2215 | "menu": "Media Inputs Requests",
2216 | "callback": "TriggerMediaInputAction",
2217 | "parameters": {
2218 | "request Id": {
2219 | "type": "String"
2220 | },
2221 | "inputName": {
2222 | "type": "String"
2223 | },
2224 | "mediaAction": {
2225 | "type": "Enum",
2226 | "options": {
2227 | "OBS_MEDIA_STATE_NONE": "OBS_MEDIA_STATE_NONE",
2228 | "OBS_MEDIA_STATE_PLAYING": "OBS_MEDIA_STATE_PLAYING",
2229 | "OBS_MEDIA_STATE_OPENING": "OBS_MEDIA_STATE_OPENING",
2230 | "OBS_MEDIA_STATE_BUFFERING": "OBS_MEDIA_STATE_BUFFERING",
2231 | "OBS_MEDIA_STATE_PAUSED": "OBS_MEDIA_STATE_PAUSED",
2232 | "OBS_MEDIA_STATE_STOPPED": "OBS_MEDIA_STATE_STOPPED",
2233 | "OBS_MEDIA_STATE_ENDED": "OBS_MEDIA_STATE_ENDED",
2234 | "OBS_MEDIA_STATE_ERROR": "OBS_MEDIA_STATE_ERROR"
2235 | }
2236 | }
2237 | }
2238 | },
2239 | "GetStudioModeEnabled": {
2240 | "menu": "UI Requests",
2241 | "callback": "GetStudioModeEnabled",
2242 | "parameters": {
2243 | "request Id": {
2244 | "type": "String"
2245 | }
2246 | }
2247 | },
2248 | "SetStudioModeEnabled": {
2249 | "menu": "UI Requests",
2250 | "callback": "SetStudioModeEnabled",
2251 | "parameters": {
2252 | "request Id": {
2253 | "type": "String"
2254 | },
2255 | "studioModeEnabled": {
2256 | "type": "Boolean"
2257 | }
2258 | }
2259 | },
2260 | "OpenInputPropertiesDialog": {
2261 | "menu": "UI Requests",
2262 | "callback": "OpenInputPropertiesDialog",
2263 | "parameters": {
2264 | "request Id": {
2265 | "type": "String"
2266 | },
2267 | "inputName": {
2268 | "type": "String"
2269 | }
2270 | }
2271 | },
2272 | "OpenInputFiltersDialog": {
2273 | "menu": "UI Requests",
2274 | "callback": "OpenInputFiltersDialog",
2275 | "parameters": {
2276 | "request Id": {
2277 | "type": "String"
2278 | },
2279 | "inputName": {
2280 | "type": "String"
2281 | }
2282 | }
2283 | },
2284 | "OpenInputInteractDialog": {
2285 | "menu": "UI Requests",
2286 | "callback": "OpenInputInteractDialog",
2287 | "parameters": {
2288 | "request Id": {
2289 | "type": "String"
2290 | },
2291 | "inputName": {
2292 | "type": "String"
2293 | }
2294 | }
2295 | },
2296 | "GetMonitorList": {
2297 | "menu": "UI Requests",
2298 | "callback": "GetMonitorList",
2299 | "parameters": {
2300 | "request Id": {
2301 | "type": "String"
2302 | }
2303 | }
2304 | },
2305 | "OpenVideoMixProjector": {
2306 | "menu": "UI Requests",
2307 | "callback": "OpenVideoMixProjector",
2308 | "parameters": {
2309 | "request Id": {
2310 | "type": "String"
2311 | },
2312 | "videoMixType": {
2313 | "type": "Enum",
2314 | "options": {
2315 | "OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW": "OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW",
2316 | "OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM": "OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM",
2317 | "OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW": "OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW"
2318 | }
2319 | },
2320 | "?monitorIndex Id": {
2321 | "type": "Integer"
2322 | },
2323 | "?projectorGeometry Id": {
2324 | "type": "String"
2325 | }
2326 | }
2327 | },
2328 | "OpenSourceProjector": {
2329 | "menu": "UI Requests",
2330 | "callback": "OpenSourceProjector",
2331 | "parameters": {
2332 | "request Id": {
2333 | "type": "String"
2334 | },
2335 | "sourceName": {
2336 | "type": "String"
2337 | },
2338 | "?monitorIndex": {
2339 | "type": "Integer"
2340 | },
2341 | "?projectorGeometry": {
2342 | "type": "String"
2343 | }
2344 | }
2345 | },
2346 | "Active item switch": {
2347 | "menu": "Module Requests",
2348 | "callback": "SwitchActiveItem",
2349 | "parameters": {
2350 | "direction": {
2351 | "type": "Enum",
2352 | "options": {
2353 | "Previous": "Previous",
2354 | "Next": "Next"
2355 | }
2356 | }
2357 | }
2358 | },
2359 | "Transform X": {
2360 | "menu": "Active Item",
2361 | "callback": "ActiveItemTransformX",
2362 | "parameters": {
2363 | "Negative": {
2364 | "type": "Boolean",
2365 | "default": false
2366 | }
2367 | }
2368 | },
2369 | "Transform Delta": {
2370 | "menu": "Active Item",
2371 | "callback": "ActiveItemTransform",
2372 | "parameters": {
2373 | "Negative": {
2374 | "type": "Boolean",
2375 | "default": false
2376 | },
2377 | "Position": {
2378 | "type": "Enum",
2379 | "options": {
2380 | "X": "positionX",
2381 | "Y": "positionY",
2382 | "Zoom": "Zoom",
2383 | "Rotation": "rotation",
2384 | "Crop_Left": "cropLeft",
2385 | "Crop_Right": "cropRight",
2386 | "Crop_Top": "cropTop",
2387 | "Crop_Bot": "cropBottom"
2388 | }
2389 | }
2390 | }
2391 | }
2392 | }
2393 | }
2394 |
--------------------------------------------------------------------------------