User Tools

Site Tools


openstagecontrol

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
openstagecontrol [2023/02/01 11:02] – created ssm2017openstagecontrol [2024/01/03 12:46] (current) ssm2017
Line 1: Line 1:
-===== grandma msc =====+====== OpenStageControl ====== 
 +===== Notes ===== 
 +==== update property ==== 
 +<sxh js> 
 +receive('/EDIT', 'text_1',
 +  value: "abcd", 
 +  widgets: [] 
 +}); 
 +</sxh> 
 +===== GrandMa1/Dot2 ===== 
 +==== Config ==== 
 +<sxh json> 
 +{"osc-port":8001,"midi":["sysex","gma_in:1,2","gma_out:0,1"],"force-gpu":true,"custom-module":"D:\\Documents\\perso\\dev\\openstagecontrol\\test-clones.js","load":"D:\\Documents\\perso\\dev\\openstagecontrol\\test-clones.json"
 +</sxh> 
 +==== Module ====
 <sxh js> <sxh js>
 /* /*
Line 32: Line 46:
 f7 end f7 end
  
 +=========== go 2.0 exec 2.1 ===========
 +0 f0 (240)
 +1 7f (127) universal sysex
 +2 7f (127) device id
 +3 02 (2) msc
 +4 01 (1) command format
 +5 01 (1) command
 +6 32 (50) ascii 2
 +7 2e (46) ascii .
 +8 30 (48) ascii 0
 +9 30 (48) ascii 0
 +10 30 (48) ascii 0
 +11 00 (0) ascii null
 +12 32 (50) ascii 2
 +13 2e (46) ascii .
 +14 31 (49) ascii 1
 +15 f7 (247)
  
 +=========== go 1.0 exec 2.1 ===========
 +0 f0 (240)
 +1 7f (127) universal sysex
 +2 7f (127) device id
 +3 02 (2) msc
 +4 01 (1) command format
 +5 01 (1) command (1 = goto)
 +6 31 (49) ascii 1
 +7 2e (46) ascii .
 +8 30 (48) ascii 0
 +9 30 (48) ascii 0
 +10 30 (48) ascii 0
 +11 00 (0) ascii null
 +12 32 (50) ascii 2
 +13 2e (46) ascii .
 +14 31 (49) ascii 1
 +15 f7 (247)
 +
 +=========== goto 1.0 exec 2.1 ===========
 +0 f0 (240)
 +1 7f (127) universal sysex
 +2 7f (127) device id
 +3 02 (2) msc
 +4 01 (1) command format
 +5 01 (1) command (1 = goto)
 +6 31 (49) ascii 1
 +7 2e (46) .
 +8 30 (48) ascii 0
 +9 30 (48) ascii 0
 +10 30 (48) ascii 0
 +11 00 (0) ascii null
 +12 32 (50) ascii 2
 +13 2e (46) .
 +14 31 (49) ascii 1
 +15 f7 (247)
 +
 +=========== off exec 2.1 ==============
 +0 f0 (240)
 +1 7f (127) universal sysex
 +2 7f (127) device id (127)
 +3 02 (2) msc
 +4 01 (1) command format (01 = general lighting)
 +5 0a (10) command (10)
 +6 30 (48) ascii 0
 +7 2e (46) .
 +8 30 (48) ascii 0
 +9 30 (48) ascii 0
 +10 30 (48) ascii 0
 +11 00 (0) ascii null
 +12 32 (50) ascii 2
 +13 2e (46) .
 +14 31 (49) ascii 1
 +15 f7 (247)
 +
 +========= fader move ===============
 0 f0 0 f0
 1 7f universal sysex 1 7f universal sysex
Line 84: Line 170:
 } }
  
-function moveOSCFader(sysex) {+function moveOSCFader(host, port, address, args) { 
 +  if (!(host === 'midi' && address === '/sysex' && port === INPUT_MIDI_DEVICE_NAME)) return; 
   // hexadecimal string value   // hexadecimal string value
      
-  var sysex_string = sysex[0].value+  var sysex_string = args[0].value
   if (DEBUG) console.log("sysex = " + sysex_string);   if (DEBUG) console.log("sysex = " + sysex_string);
  
Line 112: Line 200:
     var fader_percent = hexToFader(coarse_value, fine_value);     var fader_percent = hexToFader(coarse_value, fine_value);
     if (DEBUG) console.log("fader percent = "+ fader_percent);     if (DEBUG) console.log("fader percent = "+ fader_percent);
-    receive("/fader_"+fader,fader_percent);+    receive("/fader_"+fader,fader,fader_percent);
   }   }
 +  return true;
 } }
  
 function moveMaFader(host, port, address, args) { function moveMaFader(host, port, address, args) {
-  if (host !== 'midi' || port !== OUTPUT_MIDI_DEVICE_NAME) return +  if (host !== 'midi' || port !== OUTPUT_MIDI_DEVICE_NAME || address === '/note') return; 
-  var fader_id = parseInt(address.substr(7))+  var fader_id = args[0].value
-      fader_value = Math.ceil(args[0].value),+      fader_value = Math.ceil(args[1].value),
       outArgs = [];       outArgs = [];
  
Line 131: Line 220:
   return true;   return true;
 } }
- 
- 
  
 module.exports = { module.exports = {
-    +
   oscInFilter: (data)=>{   oscInFilter: (data)=>{
     if (DEBUG) console.log("in data : "+ JSON.stringify(data, null, 2));     if (DEBUG) console.log("in data : "+ JSON.stringify(data, null, 2));
-      var {host, port, address, args} = data +    var {host, port, address, args} = data; 
- +    if (moveOSCFader(host, port, addressargs)) return
-      if (host === 'midi' && address == '/sysex' && port == INPUT_MIDI_DEVICE_NAME) { +    return data
-          moveOSCFader(args); +
-          // bypass original message if the interface doesn't need to receive it  +
-          return +
-      } +
- +
-      // pass original message by default +
-      return data+
   },   },
  
   oscOutFilter: (data)=>{   oscOutFilter: (data)=>{
-    var {host, port, address, args} = data +    var {host, port, address, args} = data
-    if (moveMaFader(host, port, address, args)) return +    //console.log("out data : "+ JSON.stringify(data, null, 2));return; 
-    return data+    if (moveMaFader(host, port, address, args)) return; 
 +    return data;
   }   }
-  +
 } }
  
 </sxh> </sxh>
 +==== Session ====
 +<sxh json>
 +{
 +  "createdWith": "Open Stage Control",
 +  "version": "1.22.0",
 +  "type": "session",
 +  "content": {
 +    "type": "root",
 +    "lock": false,
 +    "id": "root",
 +    "visible": true,
 +    "interaction": true,
 +    "comments": "",
 +    "width": "auto",
 +    "height": "auto",
 +    "colorText": "auto",
 +    "colorWidget": "auto",
 +    "alphaFillOn": "auto",
 +    "borderRadius": "auto",
 +    "padding": "auto",
 +    "html": "",
 +    "css": "",
 +    "colorBg": "auto",
 +    "layout": "default",
 +    "justify": "start",
 +    "gridTemplate": "",
 +    "contain": true,
 +    "scroll": true,
 +    "innerPadding": true,
 +    "verticalTabs": false,
 +    "hideMenu": false,
 +    "variables": "@{parent.variables}",
 +    "traversing": false,
 +    "value": "",
 +    "default": "",
 +    "linkId": "",
 +    "address": "auto",
 +    "preArgs": "",
 +    "typeTags": "",
 +    "decimals": 2,
 +    "target": "",
 +    "ignoreDefaults": false,
 +    "bypass": false,
 +    "onCreate": "",
 +    "onValue": "",
 +    "widgets": [],
 +    "tabs": [
 +      {
 +        "type": "tab",
 +        "lock": false,
 +        "id": "tab_1",
 +        "visible": true,
 +        "interaction": true,
 +        "comments": "",
 +        "colorText": "auto",
 +        "colorWidget": "auto",
 +        "colorFill": "auto",
 +        "borderRadius": "auto",
 +        "padding": "auto",
 +        "html": "",
 +        "css": "",
 +        "colorBg": "auto",
 +        "layout": "default",
 +        "justify": "start",
 +        "gridTemplate": "",
 +        "contain": true,
 +        "scroll": true,
 +        "innerPadding": true,
 +        "verticalTabs": false,
 +        "label": "Exec",
 +        "variables": "@{parent.variables}",
 +        "traversing": false,
 +        "value": "",
 +        "default": "",
 +        "linkId": "",
 +        "address": "auto",
 +        "preArgs": "",
 +        "typeTags": "",
 +        "decimals": 2,
 +        "target": "",
 +        "ignoreDefaults": false,
 +        "bypass": false,
 +        "onCreate": "",
 +        "onValue": "",
 +        "widgets": [
 +          {
 +            "type": "panel",
 +            "top": 10,
 +            "left": 20,
 +            "lock": false,
 +            "id": "panel_1",
 +            "visible": true,
 +            "interaction": true,
 +            "comments": "",
 +            "width": 1030,
 +            "height": 470,
 +            "expand": "false",
 +            "colorText": "auto",
 +            "colorWidget": "auto",
 +            "colorStroke": "#fdb06d",
 +            "colorFill": "#000000",
 +            "alphaStroke": "auto",
 +            "alphaFillOff": "auto",
 +            "alphaFillOn": "auto",
 +            "lineWidth": "auto",
 +            "borderRadius": 24,
 +            "padding": "auto",
 +            "html": "",
 +            "css": "",
 +            "value": "",
 +            "default": "",
 +            "linkId": "",
 +            "address": "auto",
 +            "preArgs": "",
 +            "typeTags": "",
 +            "decimals": 2,
 +            "target": "",
 +            "ignoreDefaults": false,
 +            "bypass": false,
 +            "onCreate": "",
 +            "onValue": "",
 +            "colorBg": "auto",
 +            "layout": "default",
 +            "justify": "start",
 +            "gridTemplate": "",
 +            "contain": true,
 +            "scroll": true,
 +            "innerPadding": true,
 +            "verticalTabs": false,
 +            "variables": {
 +              "id_start": 0
 +            },
 +            "traversing": false,
 +            "widgets": [
 +              {
 +                "type": "panel",
 +                "top": 10,
 +                "left": 10,
 +                "lock": false,
 +                "id": "exec_@{parent.variables.id_start}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "colorText": "auto",
 +                "colorWidget": "auto",
 +                "colorStroke": "auto",
 +                "colorFill": "auto",
 +                "alphaStroke": 0,
 +                "alphaFillOff": "auto",
 +                "alphaFillOn": "auto",
 +                "lineWidth": "auto",
 +                "borderRadius": "auto",
 +                "padding": "auto",
 +                "html": "<div>@{this.variables.name}</div>",
 +                "css": "",
 +                "colorBg": "auto",
 +                "layout": "default",
 +                "justify": "start",
 +                "gridTemplate": "",
 +                "contain": true,
 +                "scroll": true,
 +                "innerPadding": true,
 +                "verticalTabs": false,
 +                "variables": "{\n  \"button_index\": #{@{this.id}.slice(5)},\n  \"fader_index\": 0,\n  \"name\": \"Exec 0\",\n  \"button_1_label\": \"\",\n  \"button_2_label\": \"B2\",\n  \"button_3_label\": \"B3\"\n}",
 +                "traversing": false,
 +                "value": "",
 +                "default": "",
 +                "linkId": "",
 +                "address": "auto",
 +                "preArgs": "",
 +                "typeTags": "",
 +                "decimals": 2,
 +                "target": "",
 +                "ignoreDefaults": false,
 +                "bypass": false,
 +                "onCreate": "",
 +                "onValue": "",
 +                "widgets": [
 +                  {
 +                    "type": "button",
 +                    "top": 0,
 +                    "left": 0,
 +                    "lock": false,
 +                    "id": "button_3-#{@{parent.variables.button_index}+2}",
 +                    "visible": true,
 +                    "interaction": true,
 +                    "comments": "",
 +                    "width": "100%",
 +                    "height": "auto",
 +                    "expand": "false",
 +                    "colorText": "auto",
 +                    "colorWidget": "auto",
 +                    "colorStroke": "#fdb06d",
 +                    "colorFill": "#000000",
 +                    "alphaStroke": "auto",
 +                    "alphaFillOff": "auto",
 +                    "alphaFillOn": "auto",
 +                    "lineWidth": 2,
 +                    "borderRadius": 6,
 +                    "padding": "auto",
 +                    "html": "",
 +                    "css": "",
 +                    "colorTextOn": "auto",
 +                    "label": "auto",
 +                    "vertical": false,
 +                    "wrap": false,
 +                    "on": 1,
 +                    "off": 0,
 +                    "mode": "push",
 +                    "doubleTap": false,
 +                    "decoupled": false,
 +                    "value": "",
 +                    "default": 0,
 +                    "linkId": "",
 +                    "address": "/note",
 +                    "preArgs": "[\n  1,\n  #{@{parent.variables.button_index}+2}\n]",
 +                    "typeTags": "",
 +                    "decimals": 2,
 +                    "target": "@{gma_in}",
 +                    "ignoreDefaults": false,
 +                    "bypass": false,
 +                    "onCreate": "",
 +                    "onValue": ""
 +                  },
 +                  {
 +                    "type": "fader",
 +                    "top": 130,
 +                    "left": 0,
 +                    "lock": false,
 +                    "id": "fader_@{parent.variables.fader_index}",
 +                    "visible": true,
 +                    "interaction": true,
 +                    "comments": "",
 +                    "width": "100%",
 +                    "height": "auto",
 +                    "expand": "false",
 +                    "colorText": "auto",
 +                    "colorWidget": "auto",
 +                    "colorStroke": "#fdcf6d",
 +                    "colorFill": "#fdd66d",
 +                    "alphaStroke": "auto",
 +                    "alphaFillOff": "auto",
 +                    "alphaFillOn": "auto",
 +                    "lineWidth": 2,
 +                    "borderRadius": "auto",
 +                    "padding": "auto",
 +                    "html": "<div>@{this.value}</div>",
 +                    "css": "",
 +                    "design": "compact",
 +                    "knobSize": 24,
 +                    "horizontal": false,
 +                    "pips": false,
 +                    "dashed": false,
 +                    "gradient": [],
 +                    "snap": false,
 +                    "spring": false,
 +                    "doubleTap": false,
 +                    "range": {
 +                      "min": 0,
 +                      "max": 100
 +                    },
 +                    "logScale": false,
 +                    "sensitivity": 1,
 +                    "steps": "",
 +                    "origin": "auto",
 +                    "value": "",
 +                    "default": "",
 +                    "linkId": "",
 +                    "address": "auto",
 +                    "preArgs": "@{parent.variables.fader_index}",
 +                    "typeTags": "",
 +                    "decimals": 2,
 +                    "target": "@{gma_in}",
 +                    "ignoreDefaults": false,
 +                    "bypass": false,
 +                    "onCreate": "",
 +                    "onValue": "",
 +                    "onTouch": ""
 +                  },
 +                  {
 +                    "type": "button",
 +                    "top": 70,
 +                    "left": 0,
 +                    "lock": false,
 +                    "id": "button_2-#{@{parent.variables.button_index}+1}",
 +                    "visible": true,
 +                    "interaction": true,
 +                    "comments": "",
 +                    "width": "100%",
 +                    "height": "auto",
 +                    "expand": "false",
 +                    "colorText": "auto",
 +                    "colorWidget": "auto",
 +                    "colorStroke": "#fdb06d",
 +                    "colorFill": "#000000",
 +                    "alphaStroke": "auto",
 +                    "alphaFillOff": "auto",
 +                    "alphaFillOn": "auto",
 +                    "lineWidth": 2,
 +                    "borderRadius": 6,
 +                    "padding": "auto",
 +                    "html": "",
 +                    "css": "",
 +                    "colorTextOn": "auto",
 +                    "label": "auto",
 +                    "vertical": false,
 +                    "wrap": false,
 +                    "on": 1,
 +                    "off": 0,
 +                    "mode": "push",
 +                    "doubleTap": false,
 +                    "decoupled": false,
 +                    "value": "",
 +                    "default": 0,
 +                    "linkId": "",
 +                    "address": "/note",
 +                    "preArgs": "[\n  1,\n  #{@{parent.variables.button_index}+1}\n]",
 +                    "typeTags": "",
 +                    "decimals": 2,
 +                    "target": "@{gma_in}",
 +                    "ignoreDefaults": false,
 +                    "bypass": false,
 +                    "onCreate": "",
 +                    "onValue": ""
 +                  },
 +                  {
 +                    "type": "button",
 +                    "top": 340,
 +                    "left": 0,
 +                    "lock": false,
 +                    "id": "button_1-@{parent.variables.button_index}",
 +                    "visible": true,
 +                    "interaction": true,
 +                    "comments": "",
 +                    "width": "100%",
 +                    "height": "auto",
 +                    "expand": "false",
 +                    "colorText": "auto",
 +                    "colorWidget": "auto",
 +                    "colorStroke": "#fdb06d",
 +                    "colorFill": "#000000",
 +                    "alphaStroke": "auto",
 +                    "alphaFillOff": "auto",
 +                    "alphaFillOn": "auto",
 +                    "lineWidth": 2,
 +                    "borderRadius": 6,
 +                    "padding": "auto",
 +                    "html": "",
 +                    "css": "",
 +                    "colorTextOn": "auto",
 +                    "label": "auto",
 +                    "vertical": false,
 +                    "wrap": false,
 +                    "on": 1,
 +                    "off": 0,
 +                    "mode": "push",
 +                    "doubleTap": false,
 +                    "decoupled": false,
 +                    "value": "",
 +                    "default": 0,
 +                    "linkId": "",
 +                    "address": "/note",
 +                    "preArgs": "[\n  1,\n  @{parent.variables.button_index}\n]",
 +                    "typeTags": "",
 +                    "decimals": 2,
 +                    "target": "@{gma_in}",
 +                    "ignoreDefaults": false,
 +                    "bypass": false,
 +                    "onCreate": "",
 +                    "onValue": "\n"
 +                  }
 +                ],
 +                "tabs": []
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 110,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+1)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 210,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+2)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 310,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+3)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 410,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+4)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 510,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+5)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 610,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+6)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 710,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+7)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 810,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+8)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 910,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+9)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              }
 +            ],
 +            "tabs": []
 +          },
 +          {
 +            "type": "variable",
 +            "lock": false,
 +            "id": "gma_in",
 +            "comments": "",
 +            "value": "midi:gma_in",
 +            "default": "",
 +            "linkId": "",
 +            "address": "auto",
 +            "preArgs": "",
 +            "typeTags": "",
 +            "decimals": 2,
 +            "target": "",
 +            "ignoreDefaults": false,
 +            "bypass": false,
 +            "onCreate": "",
 +            "onValue": ""
 +          },
 +          {
 +            "type": "variable",
 +            "lock": false,
 +            "id": "gma_out",
 +            "comments": "",
 +            "value": "midi:gma_out",
 +            "default": "",
 +            "linkId": "",
 +            "address": "auto",
 +            "preArgs": "",
 +            "typeTags": "",
 +            "decimals": 2,
 +            "target": "",
 +            "ignoreDefaults": false,
 +            "bypass": false,
 +            "onCreate": "",
 +            "onValue": ""
 +          },
 +          {
 +            "type": "panel",
 +            "top": 500,
 +            "left": 20,
 +            "lock": false,
 +            "id": "panel_2",
 +            "visible": true,
 +            "interaction": true,
 +            "comments": "",
 +            "width": 1030,
 +            "height": 470,
 +            "expand": "false",
 +            "colorText": "auto",
 +            "colorWidget": "auto",
 +            "colorStroke": "#fdb06d",
 +            "colorFill": "#000000",
 +            "alphaStroke": "auto",
 +            "alphaFillOff": "auto",
 +            "alphaFillOn": "auto",
 +            "lineWidth": "auto",
 +            "borderRadius": 24,
 +            "padding": "auto",
 +            "html": "",
 +            "css": "",
 +            "value": "",
 +            "default": "",
 +            "linkId": "",
 +            "address": "auto",
 +            "preArgs": "",
 +            "typeTags": "",
 +            "decimals": 2,
 +            "target": "",
 +            "ignoreDefaults": false,
 +            "bypass": false,
 +            "onCreate": "",
 +            "onValue": "",
 +            "colorBg": "auto",
 +            "layout": "default",
 +            "justify": "start",
 +            "gridTemplate": "",
 +            "contain": true,
 +            "scroll": true,
 +            "innerPadding": true,
 +            "verticalTabs": false,
 +            "variables": {
 +              "id_start": 10
 +            },
 +            "traversing": false,
 +            "widgets": [
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 110,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+1)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 210,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+2)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 310,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+3)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 410,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+4)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 510,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+5)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 610,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+6)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 710,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+7)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 810,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+8)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 910,
 +                "lock": false,
 +                "id": "exec_#{parseInt(@{parent.variables.id_start}+9)}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              },
 +              {
 +                "type": "clone",
 +                "top": 10,
 +                "left": 10,
 +                "lock": false,
 +                "id": "exec_@{parent.variables.id_start}",
 +                "visible": true,
 +                "interaction": true,
 +                "comments": "",
 +                "width": 100,
 +                "height": 440,
 +                "expand": "false",
 +                "css": "",
 +                "widgetId": "exec_0",
 +                "props": "{\n  \"variables\": { \"button_index\": #{parseInt(@{this.id}.slice(5))*3}, \"fader_index\": #{parseInt(@{this.id}.slice(5))}, \"name\": \"Exec #{@{this.id}.slice(5)}\", \"button_1_label\": \"B1\", \"button_2_label\": \"B2\", \"button_3_label\": \"B3\" }\n}",
 +                "address": "auto",
 +                "variables": "@{parent.variables}"
 +              }
 +            ],
 +            "tabs": []
 +          }
 +        ],
 +        "tabs": []
 +      }
 +    ]
 +  }
 +}
 +</sxh>
 +==== GrandMa macro ====
 +<sxh xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<MA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.malighting.de/grandma2/xml/MA" xsi:schemaLocation="http://schemas.malighting.de/grandma2/xml/MA http://schemas.malighting.de/grandma2/xml/3.9.60/MA.xsd" major_vers="3" minor_vers="9" stream_vers="60">
 + <Info datetime="2023-02-02T14:45:21" showfile="new show 2023-01-14" />
 + <Macro index="0" name="assign midi remotes">
 + <Macroline index="0">
 + <text>Delete Remote 2.1 Thru</text>
 + </Macroline>
 + <Macroline index="1">
 + <text>Assign Remote 2.1 /note=0 /type=exec /executor=1 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="2">
 + <text>Assign Remote 2.2 /note=1 /type=exec /executor=1 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="3">
 + <text>Assign Remote 2.3 /note=2 /type=exec /executor=1 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="4">
 + <text>Assign Remote 2.4 /note=3 /type=exec /executor=2 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="5">
 + <text>Assign Remote 2.5 /note=4 /type=exec /executor=2 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="6">
 + <text>Assign Remote 2.6 /note=5 /type=exec /executor=2 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="7">
 + <text>Assign Remote 2.7 /note=6 /type=exec /executor=3 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="8">
 + <text>Assign Remote 2.8 /note=7 /type=exec /executor=3 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="9">
 + <text>Assign Remote 2.9 /note=8 /type=exec /executor=3 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="10">
 + <text>Assign Remote 2.10 /note=9 /type=exec /executor=4 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="11">
 + <text>Assign Remote 2.11 /note=10 /type=exec /executor=4 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="12">
 + <text>Assign Remote 2.12 /note=11 /type=exec /executor=4 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="13">
 + <text>Assign Remote 2.13 /note=12 /type=exec /executor=5 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="14">
 + <text>Assign Remote 2.14 /note=13 /type=exec /executor=5 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="15">
 + <text>Assign Remote 2.15 /note=14 /type=exec /executor=5 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="16">
 + <text>Assign Remote 2.16 /note=15 /type=exec /executor=6 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="17">
 + <text>Assign Remote 2.17 /note=16 /type=exec /executor=6 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="18">
 + <text>Assign Remote 2.18 /note=17 /type=exec /executor=6 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="19">
 + <text>Assign Remote 2.19 /note=18 /type=exec /executor=7 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="20">
 + <text>Assign Remote 2.20 /note=19 /type=exec /executor=7 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="21">
 + <text>Assign Remote 2.21 /note=20 /type=exec /executor=7 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="22">
 + <text>Assign Remote 2.22 /note=21 /type=exec /executor=8 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="23">
 + <text>Assign Remote 2.23 /note=22 /type=exec /executor=8 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="24">
 + <text>Assign Remote 2.24 /note=23 /type=exec /executor=8 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="25">
 + <text>Assign Remote 2.25 /note=24 /type=exec /executor=9 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="26">
 + <text>Assign Remote 2.26 /note=25 /type=exec /executor=9 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="27">
 + <text>Assign Remote 2.27 /note=26 /type=exec /executor=9 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="28">
 + <text>Assign Remote 2.28 /note=27 /type=exec /executor=10 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="29">
 + <text>Assign Remote 2.29 /note=28 /type=exec /executor=10 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="30">
 + <text>Assign Remote 2.30 /note=29 /type=exec /executor=10 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="31">
 + <text>Assign Remote 2.31 /note=30 /type=exec /executor=11 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="32">
 + <text>Assign Remote 2.32 /note=31 /type=exec /executor=11 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="33">
 + <text>Assign Remote 2.33 /note=32 /type=exec /executor=11 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="34">
 + <text>Assign Remote 2.34 /note=33 /type=exec /executor=12 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="35">
 + <text>Assign Remote 2.35 /note=34 /type=exec /executor=12 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="36">
 + <text>Assign Remote 2.36 /note=35 /type=exec /executor=12 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="37">
 + <text>Assign Remote 2.37 /note=36 /type=exec /executor=13 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="38">
 + <text>Assign Remote 2.38 /note=37 /type=exec /executor=13 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="39">
 + <text>Assign Remote 2.39 /note=38 /type=exec /executor=13 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="40">
 + <text>Assign Remote 2.40 /note=39 /type=exec /executor=14 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="41">
 + <text>Assign Remote 2.41 /note=40 /type=exec /executor=14 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="42">
 + <text>Assign Remote 2.42 /note=41 /type=exec /executor=14 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="43">
 + <text>Assign Remote 2.43 /note=42 /type=exec /executor=15 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="44">
 + <text>Assign Remote 2.44 /note=43 /type=exec /executor=15 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="45">
 + <text>Assign Remote 2.45 /note=44 /type=exec /executor=15 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="46">
 + <text>Assign Remote 2.46 /note=45 /type=exec /executor=16 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="47">
 + <text>Assign Remote 2.47 /note=46 /type=exec /executor=16 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="48">
 + <text>Assign Remote 2.48 /note=47 /type=exec /executor=16 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="49">
 + <text>Assign Remote 2.49 /note=48 /type=exec /executor=17 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="50">
 + <text>Assign Remote 2.50 /note=49 /type=exec /executor=17 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="51">
 + <text>Assign Remote 2.51 /note=50 /type=exec /executor=17 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="52">
 + <text>Assign Remote 2.52 /note=51 /type=exec /executor=18 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="53">
 + <text>Assign Remote 2.53 /note=52 /type=exec /executor=18 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="54">
 + <text>Assign Remote 2.54 /note=53 /type=exec /executor=18 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="55">
 + <text>Assign Remote 2.55 /note=54 /type=exec /executor=19 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="56">
 + <text>Assign Remote 2.56 /note=55 /type=exec /executor=19 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="57">
 + <text>Assign Remote 2.57 /note=56 /type=exec /executor=19 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + <Macroline index="58">
 + <text>Assign Remote 2.58 /note=57 /type=exec /executor=20 /Button=&quot;Button 1&quot;</text>
 + </Macroline>
 + <Macroline index="59">
 + <text>Assign Remote 2.59 /note=58 /type=exec /executor=20 /Button=&quot;Button 2&quot;</text>
 + </Macroline>
 + <Macroline index="60">
 + <text>Assign Remote 2.60 /note=59 /type=exec /executor=20 /Button=&quot;Button 3&quot;</text>
 + </Macroline>
 + </Macro>
 +</MA>
 +</sxh>
 +
openstagecontrol.1675245778.txt.gz · Last modified: by ssm2017