receive('/EDIT', 'text_1', {
value: "abcd",
widgets: []
});
{"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"}
/*
sysex = f0 7f 70 02 01 01 31 2e 30 30 30 f7
univeral sysex = 127
device id = 112
msc = 2
command format = 1
command = 1
fader = 49
fader page = 46
fine value = 48
coarse value = 48
sysex = f0 7f 70 02 01 0a 30 2e 30 30 30 f7
univeral sysex = 127
device id = 112
msc = 2
command format = 1
command = 10
fader = 48
fader page = 46
fine value = 48
coarse value = 48
f0 7f usiversal sysex
70 device id
02 msc
01 command format (01 = general lighting)
0a command
30 2e 30 30 30 data
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
1 7f universal sysex
2 70 device id
3 02 msc
4 01 command format (01 = general lighting)
5 06 command (06 = set)
6 00 fader 1
7 01 page 1
8 7f 127 fine
9 7f 127 coarse
10 f7
fader value :
fader @45% =
45 * 1.28 = 57.6
coarse = 57
06 * 128 = 76.8
fine = 76
inverse =
Math.floor((new_fine_value + coarse_value) / 1.28)
osc address : /sysex
osc target : midi:gma_in
*/
INPUT_MIDI_DEVICE_NAME = 'gma_out';
OUTPUT_MIDI_DEVICE_NAME = 'gma_in';
DEBUG = false;
function faderToHex(fader_value) {
var temp_coarse = fader_value * 1.28;
var coarse = Math.floor(temp_coarse);
var coarse_hex = coarse.toString(16);
if (coarse < 16) coarse_hex = "0"+ coarse_hex;
var coarse_decimals = (temp_coarse %1).toFixed(2);
var temp_fine = coarse_decimals * 128;
var fine = Math.floor(temp_fine);
var fine_hex = fine.toString(16);
if (fine < 16) fine_hex = "0"+ fine_hex;
return {
'coarse': coarse_hex,
'fine': fine_hex
}
}
function hexToFader(coarse, fine) {
return Math.floor(((fine / 128) + coarse) / 1.28);
}
function moveOSCFader(host, port, address, args) {
if (!(host === 'midi' && address === '/sysex' && port === INPUT_MIDI_DEVICE_NAME)) return;
// hexadecimal string value
var sysex_string = args[0].value
if (DEBUG) console.log("sysex = " + sysex_string);
// convert string to array of integers
var ints = sysex_string.split(" ").map(x=>parseInt(x, 16))
// parse items
var [
sysex_start,
universal_sysex,
device_id,
msc,
command_format,
command,
fader,
fader_page,
fine_value,
coarse_value,
sysex_end
] = ints;
// if command = set
if (command == 6) {
var fader_percent = hexToFader(coarse_value, fine_value);
if (DEBUG) console.log("fader percent = "+ fader_percent);
receive("/fader_"+fader,fader,fader_percent);
}
return true;
}
function moveMaFader(host, port, address, args) {
if (host !== 'midi' || port !== OUTPUT_MIDI_DEVICE_NAME || address === '/note') return;
var fader_id = args[0].value,
fader_value = Math.ceil(args[1].value),
outArgs = [];
var fader_id_hex = fader_id.toString(16);
if (fader_id < 16) fader_id_hex = "0"+ fader_id_hex;
var hex_values = faderToHex(fader_value);
var sysex = 'f0 7f 70 02 01 06 '+ fader_id_hex+ ' 01 '+ hex_values.fine+ ' '+ hex_values.coarse+ ' f7';
send('midi', OUTPUT_MIDI_DEVICE_NAME, '/sysex', sysex);
return true;
}
module.exports = {
oscInFilter: (data)=>{
if (DEBUG) console.log("in data : "+ JSON.stringify(data, null, 2));
var {host, port, address, args} = data;
if (moveOSCFader(host, port, address, args)) return;
return data
},
oscOutFilter: (data)=>{
var {host, port, address, args} = data;
//console.log("out data : "+ JSON.stringify(data, null, 2));return;
if (moveMaFader(host, port, address, args)) return;
return data;
}
}
{
"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": []
}
]
}
}
<?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="Button 1"</text> </Macroline> <Macroline index="2"> <text>Assign Remote 2.2 /note=1 /type=exec /executor=1 /Button="Button 2"</text> </Macroline> <Macroline index="3"> <text>Assign Remote 2.3 /note=2 /type=exec /executor=1 /Button="Button 3"</text> </Macroline> <Macroline index="4"> <text>Assign Remote 2.4 /note=3 /type=exec /executor=2 /Button="Button 1"</text> </Macroline> <Macroline index="5"> <text>Assign Remote 2.5 /note=4 /type=exec /executor=2 /Button="Button 2"</text> </Macroline> <Macroline index="6"> <text>Assign Remote 2.6 /note=5 /type=exec /executor=2 /Button="Button 3"</text> </Macroline> <Macroline index="7"> <text>Assign Remote 2.7 /note=6 /type=exec /executor=3 /Button="Button 1"</text> </Macroline> <Macroline index="8"> <text>Assign Remote 2.8 /note=7 /type=exec /executor=3 /Button="Button 2"</text> </Macroline> <Macroline index="9"> <text>Assign Remote 2.9 /note=8 /type=exec /executor=3 /Button="Button 3"</text> </Macroline> <Macroline index="10"> <text>Assign Remote 2.10 /note=9 /type=exec /executor=4 /Button="Button 1"</text> </Macroline> <Macroline index="11"> <text>Assign Remote 2.11 /note=10 /type=exec /executor=4 /Button="Button 2"</text> </Macroline> <Macroline index="12"> <text>Assign Remote 2.12 /note=11 /type=exec /executor=4 /Button="Button 3"</text> </Macroline> <Macroline index="13"> <text>Assign Remote 2.13 /note=12 /type=exec /executor=5 /Button="Button 1"</text> </Macroline> <Macroline index="14"> <text>Assign Remote 2.14 /note=13 /type=exec /executor=5 /Button="Button 2"</text> </Macroline> <Macroline index="15"> <text>Assign Remote 2.15 /note=14 /type=exec /executor=5 /Button="Button 3"</text> </Macroline> <Macroline index="16"> <text>Assign Remote 2.16 /note=15 /type=exec /executor=6 /Button="Button 1"</text> </Macroline> <Macroline index="17"> <text>Assign Remote 2.17 /note=16 /type=exec /executor=6 /Button="Button 2"</text> </Macroline> <Macroline index="18"> <text>Assign Remote 2.18 /note=17 /type=exec /executor=6 /Button="Button 3"</text> </Macroline> <Macroline index="19"> <text>Assign Remote 2.19 /note=18 /type=exec /executor=7 /Button="Button 1"</text> </Macroline> <Macroline index="20"> <text>Assign Remote 2.20 /note=19 /type=exec /executor=7 /Button="Button 2"</text> </Macroline> <Macroline index="21"> <text>Assign Remote 2.21 /note=20 /type=exec /executor=7 /Button="Button 3"</text> </Macroline> <Macroline index="22"> <text>Assign Remote 2.22 /note=21 /type=exec /executor=8 /Button="Button 1"</text> </Macroline> <Macroline index="23"> <text>Assign Remote 2.23 /note=22 /type=exec /executor=8 /Button="Button 2"</text> </Macroline> <Macroline index="24"> <text>Assign Remote 2.24 /note=23 /type=exec /executor=8 /Button="Button 3"</text> </Macroline> <Macroline index="25"> <text>Assign Remote 2.25 /note=24 /type=exec /executor=9 /Button="Button 1"</text> </Macroline> <Macroline index="26"> <text>Assign Remote 2.26 /note=25 /type=exec /executor=9 /Button="Button 2"</text> </Macroline> <Macroline index="27"> <text>Assign Remote 2.27 /note=26 /type=exec /executor=9 /Button="Button 3"</text> </Macroline> <Macroline index="28"> <text>Assign Remote 2.28 /note=27 /type=exec /executor=10 /Button="Button 1"</text> </Macroline> <Macroline index="29"> <text>Assign Remote 2.29 /note=28 /type=exec /executor=10 /Button="Button 2"</text> </Macroline> <Macroline index="30"> <text>Assign Remote 2.30 /note=29 /type=exec /executor=10 /Button="Button 3"</text> </Macroline> <Macroline index="31"> <text>Assign Remote 2.31 /note=30 /type=exec /executor=11 /Button="Button 1"</text> </Macroline> <Macroline index="32"> <text>Assign Remote 2.32 /note=31 /type=exec /executor=11 /Button="Button 2"</text> </Macroline> <Macroline index="33"> <text>Assign Remote 2.33 /note=32 /type=exec /executor=11 /Button="Button 3"</text> </Macroline> <Macroline index="34"> <text>Assign Remote 2.34 /note=33 /type=exec /executor=12 /Button="Button 1"</text> </Macroline> <Macroline index="35"> <text>Assign Remote 2.35 /note=34 /type=exec /executor=12 /Button="Button 2"</text> </Macroline> <Macroline index="36"> <text>Assign Remote 2.36 /note=35 /type=exec /executor=12 /Button="Button 3"</text> </Macroline> <Macroline index="37"> <text>Assign Remote 2.37 /note=36 /type=exec /executor=13 /Button="Button 1"</text> </Macroline> <Macroline index="38"> <text>Assign Remote 2.38 /note=37 /type=exec /executor=13 /Button="Button 2"</text> </Macroline> <Macroline index="39"> <text>Assign Remote 2.39 /note=38 /type=exec /executor=13 /Button="Button 3"</text> </Macroline> <Macroline index="40"> <text>Assign Remote 2.40 /note=39 /type=exec /executor=14 /Button="Button 1"</text> </Macroline> <Macroline index="41"> <text>Assign Remote 2.41 /note=40 /type=exec /executor=14 /Button="Button 2"</text> </Macroline> <Macroline index="42"> <text>Assign Remote 2.42 /note=41 /type=exec /executor=14 /Button="Button 3"</text> </Macroline> <Macroline index="43"> <text>Assign Remote 2.43 /note=42 /type=exec /executor=15 /Button="Button 1"</text> </Macroline> <Macroline index="44"> <text>Assign Remote 2.44 /note=43 /type=exec /executor=15 /Button="Button 2"</text> </Macroline> <Macroline index="45"> <text>Assign Remote 2.45 /note=44 /type=exec /executor=15 /Button="Button 3"</text> </Macroline> <Macroline index="46"> <text>Assign Remote 2.46 /note=45 /type=exec /executor=16 /Button="Button 1"</text> </Macroline> <Macroline index="47"> <text>Assign Remote 2.47 /note=46 /type=exec /executor=16 /Button="Button 2"</text> </Macroline> <Macroline index="48"> <text>Assign Remote 2.48 /note=47 /type=exec /executor=16 /Button="Button 3"</text> </Macroline> <Macroline index="49"> <text>Assign Remote 2.49 /note=48 /type=exec /executor=17 /Button="Button 1"</text> </Macroline> <Macroline index="50"> <text>Assign Remote 2.50 /note=49 /type=exec /executor=17 /Button="Button 2"</text> </Macroline> <Macroline index="51"> <text>Assign Remote 2.51 /note=50 /type=exec /executor=17 /Button="Button 3"</text> </Macroline> <Macroline index="52"> <text>Assign Remote 2.52 /note=51 /type=exec /executor=18 /Button="Button 1"</text> </Macroline> <Macroline index="53"> <text>Assign Remote 2.53 /note=52 /type=exec /executor=18 /Button="Button 2"</text> </Macroline> <Macroline index="54"> <text>Assign Remote 2.54 /note=53 /type=exec /executor=18 /Button="Button 3"</text> </Macroline> <Macroline index="55"> <text>Assign Remote 2.55 /note=54 /type=exec /executor=19 /Button="Button 1"</text> </Macroline> <Macroline index="56"> <text>Assign Remote 2.56 /note=55 /type=exec /executor=19 /Button="Button 2"</text> </Macroline> <Macroline index="57"> <text>Assign Remote 2.57 /note=56 /type=exec /executor=19 /Button="Button 3"</text> </Macroline> <Macroline index="58"> <text>Assign Remote 2.58 /note=57 /type=exec /executor=20 /Button="Button 1"</text> </Macroline> <Macroline index="59"> <text>Assign Remote 2.59 /note=58 /type=exec /executor=20 /Button="Button 2"</text> </Macroline> <Macroline index="60"> <text>Assign Remote 2.60 /note=59 /type=exec /executor=20 /Button="Button 3"</text> </Macroline> </Macro> </MA>