aboutsummaryrefslogtreecommitdiffhomepage
path: root/Desktop Editor/src
diff options
context:
space:
mode:
Diffstat (limited to 'Desktop Editor/src')
-rw-r--r--Desktop Editor/src/App.vue26
-rw-r--r--Desktop Editor/src/assets/decoded_preset_example.json4044
-rw-r--r--Desktop Editor/src/assets/logo.pngbin0 -> 6849 bytes
-rw-r--r--Desktop Editor/src/assets/setlist_example.json4126
-rw-r--r--Desktop Editor/src/assets/setlist_example.xml1034
-rw-r--r--Desktop Editor/src/components/PresetBlock.vue191
-rw-r--r--Desktop Editor/src/components/PresetChain.vue142
-rw-r--r--Desktop Editor/src/components/PresetGrid.vue80
-rw-r--r--Desktop Editor/src/main.ts31
-rw-r--r--Desktop Editor/src/models/Presets/Preset_pb.d.ts661
-rw-r--r--Desktop Editor/src/models/Presets/Preset_pb.js5296
-rw-r--r--Desktop Editor/src/models/Presets/index.ts1
-rw-r--r--Desktop Editor/src/protos/Preset.proto157
-rw-r--r--Desktop Editor/src/shims-vue.d.ts6
-rw-r--r--Desktop Editor/src/store.ts38
-rw-r--r--Desktop Editor/src/views/PresetBrowserView.vue174
-rw-r--r--Desktop Editor/src/views/PresetViewer.vue63
17 files changed, 16070 insertions, 0 deletions
diff --git a/Desktop Editor/src/App.vue b/Desktop Editor/src/App.vue
new file mode 100644
index 0000000..3feca32
--- /dev/null
+++ b/Desktop Editor/src/App.vue
@@ -0,0 +1,26 @@
+<template>
+ <router-view></router-view>
+</template>
+
+<script lang="ts">
+import { Vue } from 'vue-class-component';
+
+
+export default class App extends Vue {}
+</script>
+
+<style>
+#app {
+ font-family: Avenir, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ text-align: center;
+ color: #ffffff;
+ margin-top: 60px;
+ box-sizing: border-box;
+}
+
+body {
+ background-color: #1d1c1c;
+}
+</style>
diff --git a/Desktop Editor/src/assets/decoded_preset_example.json b/Desktop Editor/src/assets/decoded_preset_example.json
new file mode 100644
index 0000000..57e4a87
--- /dev/null
+++ b/Desktop Editor/src/assets/decoded_preset_example.json
@@ -0,0 +1,4044 @@
+{
+ "hash": 264918185,
+ "date": "2022-09-09T17:09:07Z",
+ "volume": 1,
+ "pan": 0.5,
+ "authorName": "[email protected]",
+ "authorId": "937ed671-fe7c-4972-94c4-433038f4d560",
+ "tempo": 89,
+ "chains": [
+ {
+ "inPortid": 1,
+ "outPortid": 19,
+ "models": [
+ {
+ "hash": 3007,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ },
+ {
+ "floatValue": 0.429999977350235
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ },
+ {
+ "floatValue": 0.5199999809265137
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ },
+ {
+ "floatValue": 0.5299999117851257
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 14000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ },
+ {
+ "floatValue": 0.6000077128410339
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ },
+ {
+ "floatValue": 0.619999885559082
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ },
+ {
+ "floatValue": 0.5099999904632568
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ },
+ {
+ "floatValue": 0.5800078511238098
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ },
+ {
+ "floatValue": 0.4799998998641968
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ },
+ {
+ "stringValue": "cc00b44a16c96854096d818d94cc4c90f392981a0bfddaddb8a74a40d49fe2edCA M6Rifle 8"
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ },
+ {
+ "hash": 26001,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ },
+ {
+ "floatValue": 0.47624942660331726
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ },
+ {
+ "floatValue": 0.30149441957473755
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ },
+ {
+ "floatValue": 0.6621649265289307
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 21003,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Dynamic 57"
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ },
+ {
+ "stringValue": "NG_810 Amped SVT Aln 70s_Ribbon 10"
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ },
+ {
+ "floatValue": 0.50206458568573
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "splitControlPoints": [
+ {
+ "split": -1,
+ "mix": -1
+ }
+ ],
+ "splitter": [
+ {
+ "hash": 10002,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "mixer": [
+ {
+ "hash": 11000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "outputControl": [
+ {
+ "hash": 23000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ },
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ],
+ "splitBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "mixBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "combinedSplitter": [
+ {
+ "hash": 10004,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "inputControl": [
+ {
+ "hash": 28000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ },
+ {
+ "floatValue": 0.29699987173080444
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inPortid": 0,
+ "outPortid": 0,
+ "models": [
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ }
+ ],
+ "outputControl": [
+ {
+ "hash": 23000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ },
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ],
+ "inputControl": [
+ {
+ "hash": 28000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inPortid": 0,
+ "outPortid": 0,
+ "models": [
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ }
+ ],
+ "splitControlPoints": [
+ {
+ "split": -1,
+ "mix": -1
+ }
+ ],
+ "splitter": [
+ {
+ "hash": 10002,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "mixer": [
+ {
+ "hash": 11000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "outputControl": [
+ {
+ "hash": 23000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ },
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ],
+ "splitBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "mixBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "combinedSplitter": [
+ {
+ "hash": 10004,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ },
+ {
+ "floatValue": 0.49547526240348816
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "inputControl": [
+ {
+ "hash": 28000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inPortid": 0,
+ "outPortid": 0,
+ "models": [
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ },
+ {
+ "hash": 0
+ }
+ ],
+ "outputControl": [
+ {
+ "hash": 23000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ },
+ {
+ "floatValue": 0.7692307829856873
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ },
+ {
+ "floatValue": 0.5
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ },
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ],
+ "inputControl": [
+ {
+ "hash": 28000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ },
+ {
+ "floatValue": 0.30000001192092896
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ },
+ {
+ "floatValue": 1
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ],
+ "expressionBypassInfo": [
+ {
+ "type": 2,
+ "delayMs": 600
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "tags": [
+ "Not Mandatory"
+ ],
+ "sceneTempo": [
+ 120,
+ 120,
+ 120,
+ 120,
+ 120,
+ 120,
+ 120,
+ 120
+ ],
+ "sceneLabels": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "midiMessages": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "midiMessagesGeneral": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "bypass": [
+ {
+ "colBypass": [
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ }
+ ]
+ },
+ {
+ "colBypass": [
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ }
+ ]
+ },
+ {
+ "colBypass": [
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ }
+ ]
+ },
+ {
+ "colBypass": [
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ },
+ {
+ "sceneBypass": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ]
+ }
+ ]
+ }
+ ],
+ "tempoProgramData": [
+ {
+ "hash": 25000,
+ "params": [
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ },
+ {
+ "floatValue": 0.4000000059604645
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ },
+ {
+ "expression": 0,
+ "expressionMin": 0,
+ "expressionMax": 1,
+ "sceneMode": false,
+ "paramValues": [
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ },
+ {
+ "floatValue": 0
+ }
+ ]
+ }
+ ],
+ "bypassExpression": [
+ {
+ "expressionMax": 1
+ }
+ ]
+ }
+ ],
+ "layoutCode_1": [
+ 15
+ ],
+ "layoutCode_2": [
+ 0
+ ],
+ "createdVersion": [
+ "1.3.3"
+ ],
+ "modifiedVersion": [
+ "1.4.0"
+ ],
+ "oldestCompatibleVersion": [
+ "1.4.0"
+ ],
+ "cloudId": [
+ ""
+ ],
+ "description": [
+ ""
+ ],
+ "stompModeAssignments": [
+ {},
+ {
+ "column": 3,
+ "stompIndex": 6
+ },
+ {
+ "column": 7,
+ "stompIndex": 1
+ }
+ ]
+} \ No newline at end of file
diff --git a/Desktop Editor/src/assets/logo.png b/Desktop Editor/src/assets/logo.png
new file mode 100644
index 0000000..f3d2503
--- /dev/null
+++ b/Desktop Editor/src/assets/logo.png
Binary files differ
diff --git a/Desktop Editor/src/assets/setlist_example.json b/Desktop Editor/src/assets/setlist_example.json
new file mode 100644
index 0000000..2709371
--- /dev/null
+++ b/Desktop Editor/src/assets/setlist_example.json
@@ -0,0 +1,4126 @@
+{
+ "Setlists": {
+ "Setlist": [
+ {
+ "Preset": [
+ {
+ "_hash": "697494485",
+ "_path": "/media/p4/Presets/My Presets/Nameless Slapper.pb"
+ },
+ {
+ "_hash": "2848806090",
+ "_path": "/media/p4/Presets/My Presets/Cannibal.pb"
+ },
+ {
+ "_hash": "1684646864",
+ "_path": "/media/p4/Presets/My Presets/Metallica.pb"
+ },
+ {
+ "_hash": "2063471668",
+ "_path": "/media/p4/Presets/My Presets/Engl.pb"
+ },
+ {
+ "_hash": "797150659",
+ "_path": "/media/p4/Presets/My Presets/Randall Satan Fortin.pb"
+ },
+ {
+ "_hash": "1171927217",
+ "_path": "/media/p4/Presets/My Presets/Green Day Humbucker.pb"
+ },
+ {
+ "_hash": "2547308107",
+ "_path": "/media/p4/Presets/My Presets/Fried Metal.pb"
+ },
+ {
+ "_hash": "1986382787",
+ "_path": "/media/p4/Presets/My Presets/Hector.pb"
+ },
+ {
+ "_hash": "629270769",
+ "_path": "/media/p4/Presets/My Presets/JCM800 Rock.pb"
+ },
+ {
+ "_hash": "3867493555",
+ "_path": "/media/p4/Presets/My Presets/Slaughter.pb"
+ },
+ {
+ "_hash": "2437793901",
+ "_path": "/media/p4/Presets/My Presets/GOAT.pb"
+ },
+ {
+ "_hash": "3959616889",
+ "_path": "/media/p4/Presets/My Presets/Chug_5150.pb"
+ },
+ {
+ "_hash": "1246696834",
+ "_path": "/media/p4/Presets/My Presets/Mayer.pb"
+ },
+ {
+ "_hash": "750500687",
+ "_path": "/media/p4/Presets/My Presets/Fortin NTS Suite.pb"
+ },
+ {
+ "_hash": "99714316",
+ "_path": "/media/p4/Presets/My Presets/Twin Sister Patch.pb"
+ },
+ {
+ "_hash": "2656952353",
+ "_path": "/media/p4/Presets/My Presets/Screamin Sisters.pb"
+ },
+ {
+ "_hash": "1626326589",
+ "_path": "/media/p4/Presets/My Presets/Bass Guitar What.pb"
+ },
+ {
+ "_hash": "1366777887",
+ "_path": "/media/p4/Presets/My Presets/Revv.pb"
+ },
+ {
+ "_hash": "1441963394",
+ "_path": "/media/p4/Presets/My Presets/Synthesque Bass.pb"
+ },
+ {
+ "_hash": "3337358135",
+ "_path": "/media/p4/Presets/My Presets/Synth Bass.pb"
+ },
+ {
+ "_hash": "1816976375",
+ "_path": "/media/p4/Presets/My Presets/Power.pb"
+ },
+ {
+ "_hash": "1950257017",
+ "_path": "/media/p4/Presets/My Presets/5150.pb"
+ },
+ {
+ "_hash": "896624363",
+ "_path": "/media/p4/Presets/My Presets/Two Rock Gigging.pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "2323719245",
+ "_path": "/media/p4/Presets/My Presets/Twin Crunch.pb"
+ },
+ {
+ "_hash": "4028279899",
+ "_path": "/media/p4/Presets/My Presets/Acdc.pb"
+ },
+ {
+ "_hash": "3226492391",
+ "_path": "/media/p4/Presets/My Presets/Fat Rockabilly.pb"
+ },
+ {
+ "_hash": "3377673212",
+ "_path": "/media/p4/Presets/My Presets/Acoustic Sim.pb"
+ },
+ {
+ "_hash": "3671648184",
+ "_path": "/media/p4/Presets/My Presets/Voice Over.pb"
+ },
+ {
+ "_hash": "1023911697",
+ "_path": "/media/p4/Presets/My Presets/Petru Gian.pb"
+ },
+ {
+ "_hash": "2934210149",
+ "_path": "/media/p4/Presets/My Presets/Plugin.pb"
+ },
+ {
+ "_hash": "3888883938",
+ "_path": "/media/p4/Presets/My Presets/Behemoth.pb"
+ },
+ {
+ "_hash": "2172773384",
+ "_path": "/media/p4/Presets/My Presets/Slayer KK.pb"
+ },
+ {
+ "_hash": "143138298",
+ "_path": "/media/p4/Presets/My Presets/Say It Aint So.pb"
+ },
+ {
+ "_hash": "3056582249",
+ "_path": "/media/p4/Presets/My Presets/VULGAR.pb"
+ },
+ {
+ "_hash": "2558212119",
+ "_path": "/media/p4/Presets/My Presets/Dookie.pb"
+ },
+ {
+ "_hash": "2616924965",
+ "_path": "/media/p4/Presets/My Presets/Lamb Of God.pb"
+ },
+ {
+ "_hash": "3947449986",
+ "_path": "/media/p4/Presets/My Presets/RATM.pb"
+ },
+ {
+ "_hash": "3200977930",
+ "_path": "/media/p4/Presets/My Presets/Death.pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "4076457719",
+ "_path": "/media/p4/Presets/My Presets/Antartica.pb"
+ },
+ {
+ "_hash": "2221205868",
+ "_path": "/media/p4/Presets/My Presets/Public Image.pb"
+ },
+ {
+ "_hash": "35021882",
+ "_path": "/media/p4/Presets/My Presets/Planet Claire.pb"
+ },
+ {
+ "_hash": "2030801184",
+ "_path": "/media/p4/Presets/My Presets/Transmission.pb"
+ },
+ {
+ "_hash": "2472823430",
+ "_path": "/media/p4/Presets/My Presets/Sanctuary.pb"
+ },
+ {
+ "_hash": "2256205320",
+ "_path": "/media/p4/Presets/My Presets/Travel.pb"
+ },
+ {
+ "_hash": "1202528361",
+ "_path": "/media/p4/Presets/My Presets/Bela Lugosi.pb"
+ },
+ {
+ "_hash": "946343925",
+ "_path": "/media/p4/Presets/My Presets/Escape.pb"
+ },
+ {
+ "_hash": "1296285866",
+ "_path": "/media/p4/Presets/My Presets/Be Your Dog.pb"
+ },
+ {
+ "_hash": "3458765098",
+ "_path": "/media/p4/Presets/My Presets/Told You.pb"
+ },
+ {
+ "_hash": "1233346854",
+ "_path": "/media/p4/Presets/My Presets/Suzy Q.pb"
+ },
+ {
+ "_hash": "2736191419",
+ "_path": "/media/p4/Presets/My Presets/Blitzkrieg.pb"
+ },
+ {
+ "_hash": "1147839917",
+ "_path": "/media/p4/Presets/My Presets/Bro Hymn.pb"
+ },
+ {
+ "_hash": "3391359005",
+ "_path": "/media/p4/Presets/My Presets/Gutta.pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "3234630282",
+ "_path": "/media/p4/Presets/My Presets/Be Your Dog_1.pb"
+ },
+ {
+ "_hash": "1258491658",
+ "_path": "/media/p4/Presets/My Presets/Told You_1.pb"
+ },
+ {
+ "_hash": "1981484558",
+ "_path": "/media/p4/Presets/My Presets/Suzy Q_1.pb"
+ },
+ {
+ "_hash": "3946158899",
+ "_path": "/media/p4/Presets/My Presets/Blitzkrieg_1.pb"
+ },
+ {
+ "_hash": "3577334621",
+ "_path": "/media/p4/Presets/My Presets/Bro Hym_1.pb"
+ },
+ {
+ "_hash": "3044158937",
+ "_path": "/media/p4/Presets/My Presets/Gutta_1.pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "2432124282",
+ "_path": "/media/p4/Presets/My Presets/Dookie V1.pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ }
+ ],
+ "_hash": "2691287807",
+ "_path": "/media/p4/Presets/My Presets"
+ },
+ {
+ "Preset": [
+ {
+ "_hash": "1876202349",
+ "_path": "/media/p4/Presets/Not Mandatory/Antartica.pb"
+ },
+ {
+ "_hash": "1737015190",
+ "_path": "/media/p4/Presets/Not Mandatory/Public Image.pb"
+ },
+ {
+ "_hash": "1062593608",
+ "_path": "/media/p4/Presets/Not Mandatory/Planet Claire.pb"
+ },
+ {
+ "_hash": "434154202",
+ "_path": "/media/p4/Presets/Not Mandatory/Transmission.pb"
+ },
+ {
+ "_hash": "4123583880",
+ "_path": "/media/p4/Presets/Not Mandatory/Sanctuary.pb"
+ },
+ {
+ "_hash": "1099402007",
+ "_path": "/media/p4/Presets/Not Mandatory/Vienna.pb"
+ },
+ {
+ "_hash": "3991834150",
+ "_path": "/media/p4/Presets/Not Mandatory/Travel.pb"
+ },
+ {
+ "_hash": "4082999507",
+ "_path": "/media/p4/Presets/Not Mandatory/Bela Lugosi.pb"
+ },
+ {
+ "_hash": "3798791403",
+ "_path": "/media/p4/Presets/Not Mandatory/Escape.pb"
+ },
+ {
+ "_hash": "2907777472",
+ "_path": "/media/p4/Presets/Not Mandatory/Be Your Dog.pb"
+ },
+ {
+ "_hash": "2062595200",
+ "_path": "/media/p4/Presets/Not Mandatory/Told You.pb"
+ },
+ {
+ "_hash": "1493298100",
+ "_path": "/media/p4/Presets/Not Mandatory/Suzy Q.pb"
+ },
+ {
+ "_hash": "2137209845",
+ "_path": "/media/p4/Presets/Not Mandatory/Blitzkrieg.pb"
+ },
+ {
+ "_hash": "2006669379",
+ "_path": "/media/p4/Presets/Not Mandatory/Bro Hymn.pb"
+ },
+ {
+ "_hash": "2841656115",
+ "_path": "/media/p4/Presets/Not Mandatory/Gutta.pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ }
+ ],
+ "_hash": "3023396721",
+ "_path": "/media/p4/Presets/Not Mandatory"
+ },
+ {
+ "Preset": [
+ {
+ "_hash": "1746704674",
+ "_path": "/media/p4/Presets/Cuttermess/Madness (E).pb"
+ },
+ {
+ "_hash": "3319417662",
+ "_path": "/media/p4/Presets/Cuttermess/Mass Formation (E).pb"
+ },
+ {
+ "_hash": "3415339828",
+ "_path": "/media/p4/Presets/Cuttermess/Resort 2 Violence F#.pb"
+ },
+ {
+ "_hash": "1537339889",
+ "_path": "/media/p4/Presets/Cuttermess/Claws (E).pb"
+ },
+ {
+ "_hash": "3543533890",
+ "_path": "/media/p4/Presets/Cuttermess/Guillotine (D).pb"
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ },
+ {
+ "_hash": "0",
+ "_path": ""
+ }
+ ],
+ "_hash": "3121655502",
+ "_path": "/media/p4/Presets/Cuttermess"
+ },
+ {
+ "Preset": [
+ {
+ "_hash": "137189267",
+ "_path": "/opt/neuraldsp/Factory Library/Brit 2203.pb"
+ },
+ {
+ "_hash": "4204141790",
+ "_path": "/opt/neuraldsp/Factory Library/Brit Plexi100 Normal.pb"
+ },
+ {
+ "_hash": "960249623",
+ "_path": "/opt/neuraldsp/Factory Library/US TWN Vibrato.pb"
+ },
+ {
+ "_hash": "2534007328",
+ "_path": "/opt/neuraldsp/Factory Library/Rols Jazz CH120.pb"
+ },
+ {
+ "_hash": "760885263",
+ "_path": "/opt/neuraldsp/Factory Library/California Tremo Red.pb"
+ },
+ {
+ "_hash": "1651882496",
+ "_path": "/opt/neuraldsp/Factory Library/EV101III Red.pb"
+ },
+ {
+ "_hash": "1163973570",
+ "_path": "/opt/neuraldsp/Factory Library/Freeman 100 Rhythm.pb"
+ },
+ {
+ "_hash": "2567047354",
+ "_path": "/opt/neuraldsp/Factory Library/D-Cell H4 Ch3.pb"
+ },
+ {
+ "_hash": "4095197445",
+ "_path": "/opt/neuraldsp/Factory Library/Brit Plexi 50 Patch.pb"
+ },
+ {
+ "_hash": "3943835888",
+ "_path": "/opt/neuraldsp/Factory Library/Brit TM45 Bright.pb"
+ },
+ {
+ "_hash": "3587053413",
+ "_path": "/opt/neuraldsp/Factory Library/OneStar Clean Tweed.pb"
+ },
+ {
+ "_hash": "3209320923",
+ "_path": "/opt/neuraldsp/Factory Library/PV505 Lead.pb"
+ },
+ {
+ "_hash": "616453951",
+ "_path": "/opt/neuraldsp/Factory Library/Solo 100 Lead.pb"
+ },
+ {
+ "_hash": "1977076557",
+ "_path": "/opt/neuraldsp/Factory Library/UK C30 TopBoost.pb"
+ },
+ {
+ "_hash": "1462238152",
+ "_path": "/opt/neuraldsp/Factory Library/US DLX Vibrato.pb"
+ },
+ {
+ "_hash": "1505259591",
+ "_path": "/opt/neuraldsp/Factory Library/US SPR Normal.pb"
+ },
+ {
+ "_hash": "3239223608",
+ "_path": "/opt/neuraldsp/Factory Library/Bass FlipTop 6464.pb"
+ },
+ {
+ "_hash": "3761674568",
+ "_path": "/opt/neuraldsp/Factory Library/Bass FlipTop 6666.pb"
+ },
+ {
+ "_hash": "2139363073",
+ "_path": "/opt/neuraldsp/Factory Library/Bass Super Valve.pb"
+ },
+ {
+ "_hash": "1121127321",
+ "_path": "/opt/neuraldsp/Factory Library/Brit Bass 50 Normal.pb"
+ },
+ {
+ "_hash": "1819885242",
+ "_path": "/opt/neuraldsp/Factory Library/Brit Bass 50 Patch.pb"
+ },
+ {
+ "_hash": "368623654",
+ "_path": "/opt/neuraldsp/Factory Library/California Bass 400.pb"
+ },
+ {
+ "_hash": "2698166262",
+ "_path": "/opt/neuraldsp/Factory Library/G800K Bass.pb"
+ },
+ {
+ "_hash": "1285884048",
+ "_path": "/opt/neuraldsp/Factory Library/Watt Bass Bright.pb"
+ },
+ {
+ "_hash": "1212830112",
+ "_path": "/opt/neuraldsp/Factory Library/One Amp Does It All.pb"
+ },
+ {
+ "_hash": "2801363880",
+ "_path": "/opt/neuraldsp/Factory Library/Bogna Vishnu Clean.pb"
+ },
+ {
+ "_hash": "3812345853",
+ "_path": "/opt/neuraldsp/Factory Library/Pushed 20w.pb"
+ },
+ {
+ "_hash": "3094016952",
+ "_path": "/opt/neuraldsp/Factory Library/Captain 50.pb"
+ },
+ {
+ "_hash": "3534574901",
+ "_path": "/opt/neuraldsp/Factory Library/Free Man.pb"
+ },
+ {
+ "_hash": "1843882634",
+ "_path": "/opt/neuraldsp/Factory Library/D-Cell H4.pb"
+ },
+ {
+ "_hash": "1670609786",
+ "_path": "/opt/neuraldsp/Factory Library/UK Twang.pb"
+ },
+ {
+ "_hash": "3664240002",
+ "_path": "/opt/neuraldsp/Factory Library/Dual Amps And Cabs.pb"
+ },
+ {
+ "_hash": "395147131",
+ "_path": "/opt/neuraldsp/Factory Library/Brit UBL Lead.pb"
+ },
+ {
+ "_hash": "592720957",
+ "_path": "/opt/neuraldsp/Factory Library/Strat Ambience.pb"
+ },
+ {
+ "_hash": "1117853397",
+ "_path": "/opt/neuraldsp/Factory Library/Airy Reverbs.pb"
+ },
+ {
+ "_hash": "1728421328",
+ "_path": "/opt/neuraldsp/Factory Library/California Dream.pb"
+ },
+ {
+ "_hash": "3910973927",
+ "_path": "/opt/neuraldsp/Factory Library/Nashville Session.pb"
+ },
+ {
+ "_hash": "3142868727",
+ "_path": "/opt/neuraldsp/Factory Library/Everything I Need.pb"
+ },
+ {
+ "_hash": "785973087",
+ "_path": "/opt/neuraldsp/Factory Library/Swiss Knife.pb"
+ },
+ {
+ "_hash": "73374903",
+ "_path": "/opt/neuraldsp/Factory Library/Cinematic Shimmer.pb"
+ },
+ {
+ "_hash": "3905744680",
+ "_path": "/opt/neuraldsp/Factory Library/Moody Clean.pb"
+ },
+ {
+ "_hash": "3311593258",
+ "_path": "/opt/neuraldsp/Factory Library/Toxic Synth.pb"
+ },
+ {
+ "_hash": "2121349155",
+ "_path": "/opt/neuraldsp/Factory Library/Grimacemonger.pb"
+ },
+ {
+ "_hash": "1023241484",
+ "_path": "/opt/neuraldsp/Factory Library/Captain Morgue.pb"
+ },
+ {
+ "_hash": "3949891348",
+ "_path": "/opt/neuraldsp/Factory Library/Looper X.pb"
+ },
+ {
+ "_hash": "3659313856",
+ "_path": "/opt/neuraldsp/Factory Library/Freeze Me.pb"
+ },
+ {
+ "_hash": "2425479863",
+ "_path": "/opt/neuraldsp/Factory Library/Angels And Rainbows.pb"
+ },
+ {
+ "_hash": "3960432154",
+ "_path": "/opt/neuraldsp/Factory Library/Acoustic Sim 1.pb"
+ },
+ {
+ "_hash": "375122376",
+ "_path": "/opt/neuraldsp/Factory Library/John's Amp.pb"
+ },
+ {
+ "_hash": "3659761933",
+ "_path": "/opt/neuraldsp/Factory Library/Big Waves.pb"
+ },
+ {
+ "_hash": "1180796003",
+ "_path": "/opt/neuraldsp/Factory Library/Classic Pedalboard.pb"
+ },
+ {
+ "_hash": "567255709",
+ "_path": "/opt/neuraldsp/Factory Library/Capture This.pb"
+ },
+ {
+ "_hash": "3219910194",
+ "_path": "/opt/neuraldsp/Factory Library/Father and Son.pb"
+ },
+ {
+ "_hash": "3952878863",
+ "_path": "/opt/neuraldsp/Factory Library/Necromangust.pb"
+ },
+ {
+ "_hash": "1701900000",
+ "_path": "/opt/neuraldsp/Factory Library/The Great Preset.pb"
+ },
+ {
+ "_hash": "1125671029",
+ "_path": "/opt/neuraldsp/Factory Library/Doom United.pb"
+ },
+ {
+ "_hash": "972966216",
+ "_path": "/opt/neuraldsp/Factory Library/Inferno.pb"
+ },
+ {
+ "_hash": "3457265027",
+ "_path": "/opt/neuraldsp/Factory Library/Numb Synth.pb"
+ },
+ {
+ "_hash": "17258780",
+ "_path": "/opt/neuraldsp/Factory Library/Berlin Nights.pb"
+ },
+ {
+ "_hash": "1328380816",
+ "_path": "/opt/neuraldsp/Factory Library/Pitched Delays.pb"
+ },
+ {
+ "_hash": "4264685012",
+ "_path": "/opt/neuraldsp/Factory Library/CA Rec Shootout.pb"
+ },
+ {
+ "_hash": "1350103111",
+ "_path": "/opt/neuraldsp/Factory Library/Brit Plexi Shootout.pb"
+ },
+ {
+ "_hash": "4142393860",
+ "_path": "/opt/neuraldsp/Factory Library/SISO Shootout.pb"
+ },
+ {
+ "_hash": "2405114498",
+ "_path": "/opt/neuraldsp/Factory Library/US Shootout.pb"
+ },
+ {
+ "_hash": "115689116",
+ "_path": "/opt/neuraldsp/Factory Library/Dual Jazz.pb"
+ },
+ {
+ "_hash": "3317373551",
+ "_path": "/opt/neuraldsp/Factory Library/Intimate Clean.pb"
+ },
+ {
+ "_hash": "570966927",
+ "_path": "/opt/neuraldsp/Factory Library/Squeaky Dream.pb"
+ },
+ {
+ "_hash": "404259725",
+ "_path": "/opt/neuraldsp/Factory Library/Baritone Ambience.pb"
+ },
+ {
+ "_hash": "341413910",
+ "_path": "/opt/neuraldsp/Factory Library/Straight To Chorus.pb"
+ },
+ {
+ "_hash": "4199606174",
+ "_path": "/opt/neuraldsp/Factory Library/Secret Service.pb"
+ },
+ {
+ "_hash": "832646453",
+ "_path": "/opt/neuraldsp/Factory Library/Fish Out Of Water.pb"
+ },
+ {
+ "_hash": "3554053293",
+ "_path": "/opt/neuraldsp/Factory Library/Double Deputy.pb"
+ },
+ {
+ "_hash": "3375279738",
+ "_path": "/opt/neuraldsp/Factory Library/Hot EL34.pb"
+ },
+ {
+ "_hash": "1870666791",
+ "_path": "/opt/neuraldsp/Factory Library/Major Strat Vibes.pb"
+ },
+ {
+ "_hash": "4253896444",
+ "_path": "/opt/neuraldsp/Factory Library/Crunchy 2203.pb"
+ },
+ {
+ "_hash": "4269717604",
+ "_path": "/opt/neuraldsp/Factory Library/Squid Vs Vixen.pb"
+ },
+ {
+ "_hash": "1841105618",
+ "_path": "/opt/neuraldsp/Factory Library/Guess Who.pb"
+ },
+ {
+ "_hash": "1187875650",
+ "_path": "/opt/neuraldsp/Factory Library/Free Dry Wet.pb"
+ },
+ {
+ "_hash": "3157197763",
+ "_path": "/opt/neuraldsp/Factory Library/JayMP Bass.pb"
+ },
+ {
+ "_hash": "3740694808",
+ "_path": "/opt/neuraldsp/Factory Library/Fuzz This.pb"
+ },
+ {
+ "_hash": "3677910063",
+ "_path": "/opt/neuraldsp/Factory Library/Single Coil Rock.pb"
+ },
+ {
+ "_hash": "994711943",
+ "_path": "/opt/neuraldsp/Factory Library/Stereo Lead.pb"
+ },
+ {
+ "_hash": "2637538634",
+ "_path": "/opt/neuraldsp/Factory Library/Shredful Day.pb"
+ },
+ {
+ "_hash": "3531117441",
+ "_path": "/opt/neuraldsp/Factory Library/Brother In Arms.pb"
+ },
+ {
+ "_hash": "3941308022",
+ "_path": "/opt/neuraldsp/Factory Library/Solo Jam.pb"
+ },
+ {
+ "_hash": "193814995",
+ "_path": "/opt/neuraldsp/Factory Library/HellFat.pb"
+ },
+ {
+ "_hash": "756108156",
+ "_path": "/opt/neuraldsp/Factory Library/Write Your Best Riff.pb"
+ },
+ {
+ "_hash": "309819184",
+ "_path": "/opt/neuraldsp/Factory Library/Fat And Forgiving.pb"
+ },
+ {
+ "_hash": "4272331389",
+ "_path": "/opt/neuraldsp/Factory Library/Voolish.pb"
+ },
+ {
+ "_hash": "1882476272",
+ "_path": "/opt/neuraldsp/Factory Library/Clear Lead.pb"
+ },
+ {
+ "_hash": "2222063882",
+ "_path": "/opt/neuraldsp/Factory Library/3Xs Madness.pb"
+ },
+ {
+ "_hash": "2618952968",
+ "_path": "/opt/neuraldsp/Factory Library/Tight Metal X.pb"
+ },
+ {
+ "_hash": "3901805154",
+ "_path": "/opt/neuraldsp/Factory Library/Nestruction 1.pb"
+ },
+ {
+ "_hash": "3340468169",
+ "_path": "/opt/neuraldsp/Factory Library/Nestruction 2.pb"
+ },
+ {
+ "_hash": "3646971441",
+ "_path": "/opt/neuraldsp/Factory Library/Modern Power.pb"
+ },
+ {
+ "_hash": "3912832017",
+ "_path": "/opt/neuraldsp/Factory Library/Double Cabs.pb"
+ },
+ {
+ "_hash": "2296151218",
+ "_path": "/opt/neuraldsp/Factory Library/Banger Fish.pb"
+ },
+ {
+ "_hash": "3898452366",
+ "_path": "/opt/neuraldsp/Factory Library/Balls With Power.pb"
+ },
+ {
+ "_hash": "2377403244",
+ "_path": "/opt/neuraldsp/Factory Library/Cat From Hell.pb"
+ },
+ {
+ "_hash": "253090086",
+ "_path": "/opt/neuraldsp/Factory Library/Cali 3Axes.pb"
+ },
+ {
+ "_hash": "242250328",
+ "_path": "/opt/neuraldsp/Factory Library/Cali HiGain Preamps.pb"
+ },
+ {
+ "_hash": "3720924442",
+ "_path": "/opt/neuraldsp/Factory Library/Cali M2CPlus.pb"
+ },
+ {
+ "_hash": "3066400140",
+ "_path": "/opt/neuraldsp/Factory Library/Cali M3 Redstripe.pb"
+ },
+ {
+ "_hash": "3567605943",
+ "_path": "/opt/neuraldsp/Factory Library/Colossal Calis.pb"
+ },
+ {
+ "_hash": "434193604",
+ "_path": "/opt/neuraldsp/Factory Library/Fryed Sigmund.pb"
+ },
+ {
+ "_hash": "863609581",
+ "_path": "/opt/neuraldsp/Factory Library/Crank Me Up.pb"
+ },
+ {
+ "_hash": "3218397312",
+ "_path": "/opt/neuraldsp/Factory Library/Cravin X.pb"
+ },
+ {
+ "_hash": "3128508817",
+ "_path": "/opt/neuraldsp/Factory Library/Comet.pb"
+ },
+ {
+ "_hash": "1268821033",
+ "_path": "/opt/neuraldsp/Factory Library/Custom 3SE.pb"
+ },
+ {
+ "_hash": "1634312573",
+ "_path": "/opt/neuraldsp/Factory Library/NoMatch.pb"
+ },
+ {
+ "_hash": "1153910218",
+ "_path": "/opt/neuraldsp/Factory Library/Paul's Lunchbox.pb"
+ },
+ {
+ "_hash": "1852286492",
+ "_path": "/opt/neuraldsp/Factory Library/Prince Bender.pb"
+ },
+ {
+ "_hash": "29790712",
+ "_path": "/opt/neuraldsp/Factory Library/Range Rocker.pb"
+ },
+ {
+ "_hash": "1645119636",
+ "_path": "/opt/neuraldsp/Factory Library/Uber Madness.pb"
+ },
+ {
+ "_hash": "2479658975",
+ "_path": "/opt/neuraldsp/Factory Library/VH Signature.pb"
+ },
+ {
+ "_hash": "2621834862",
+ "_path": "/opt/neuraldsp/Factory Library/Victor's Marshal.pb"
+ },
+ {
+ "_hash": "2791581992",
+ "_path": "/opt/neuraldsp/Factory Library/Victor's Mega Squid.pb"
+ },
+ {
+ "_hash": "790840088",
+ "_path": "/opt/neuraldsp/Factory Library/We Love Herbie.pb"
+ },
+ {
+ "_hash": "2809072789",
+ "_path": "/opt/neuraldsp/Factory Library/Wet Rocker.pb"
+ },
+ {
+ "_hash": "1294862799",
+ "_path": "/opt/neuraldsp/Factory Library/Wet Thunder.pb"
+ },
+ {
+ "_hash": "437646228",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 1.pb"
+ },
+ {
+ "_hash": "1541418743",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 2.pb"
+ },
+ {
+ "_hash": "2220712094",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 3.pb"
+ },
+ {
+ "_hash": "103284929",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 4.pb"
+ },
+ {
+ "_hash": "3049646416",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 5.pb"
+ },
+ {
+ "_hash": "2500065811",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 6.pb"
+ },
+ {
+ "_hash": "3264659386",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 7.pb"
+ },
+ {
+ "_hash": "1067154877",
+ "_path": "/opt/neuraldsp/Factory Library/Pres And Power 8.pb"
+ },
+ {
+ "_hash": "1027294925",
+ "_path": "/opt/neuraldsp/Factory Library/Carolina Reaper.pb"
+ },
+ {
+ "_hash": "437453513",
+ "_path": "/opt/neuraldsp/Factory Library/Godzilla.pb"
+ },
+ {
+ "_hash": "3057610632",
+ "_path": "/opt/neuraldsp/Factory Library/Sad But True.pb"
+ },
+ {
+ "_hash": "4115954153",
+ "_path": "/opt/neuraldsp/Factory Library/Forbidden Riff.pb"
+ },
+ {
+ "_hash": "1684323371",
+ "_path": "/opt/neuraldsp/Factory Library/Cliffs Of Dover.pb"
+ },
+ {
+ "_hash": "1119694316",
+ "_path": "/opt/neuraldsp/Factory Library/Far Beyond The Sun.pb"
+ },
+ {
+ "_hash": "1361725212",
+ "_path": "/opt/neuraldsp/Factory Library/Message In A Bottle.pb"
+ },
+ {
+ "_hash": "242989259",
+ "_path": "/opt/neuraldsp/Factory Library/Rosanna.pb"
+ },
+ {
+ "_hash": "4006148401",
+ "_path": "/opt/neuraldsp/Factory Library/Nameless Streets.pb"
+ },
+ {
+ "_hash": "480775470",
+ "_path": "/opt/neuraldsp/Factory Library/Jambi.pb"
+ },
+ {
+ "_hash": "1007811929",
+ "_path": "/opt/neuraldsp/Factory Library/Appetite.pb"
+ },
+ {
+ "_hash": "1989495662",
+ "_path": "/opt/neuraldsp/Factory Library/Frankenstrat.pb"
+ },
+ {
+ "_hash": "3004453653",
+ "_path": "/opt/neuraldsp/Factory Library/Austin Lead.pb"
+ },
+ {
+ "_hash": "3807187706",
+ "_path": "/opt/neuraldsp/Factory Library/Racer XOXO.pb"
+ },
+ {
+ "_hash": "2109823622",
+ "_path": "/opt/neuraldsp/Factory Library/Rain In Blood.pb"
+ },
+ {
+ "_hash": "34841953",
+ "_path": "/opt/neuraldsp/Factory Library/Texas Blues.pb"
+ },
+ {
+ "_hash": "2727108962",
+ "_path": "/opt/neuraldsp/Factory Library/You Have.pb"
+ },
+ {
+ "_hash": "2797348411",
+ "_path": "/opt/neuraldsp/Factory Library/The Impostor.pb"
+ },
+ {
+ "_hash": "1813564315",
+ "_path": "/opt/neuraldsp/Factory Library/Powerslave.pb"
+ },
+ {
+ "_hash": "2481331049",
+ "_path": "/opt/neuraldsp/Factory Library/Elegance.pb"
+ },
+ {
+ "_hash": "2094507428",
+ "_path": "/opt/neuraldsp/Factory Library/Helsinki Complex.pb"
+ },
+ {
+ "_hash": "3477665023",
+ "_path": "/opt/neuraldsp/Factory Library/Air Raid Vehicle.pb"
+ },
+ {
+ "_hash": "1462054067",
+ "_path": "/opt/neuraldsp/Factory Library/Expanse Anomality.pb"
+ },
+ {
+ "_hash": "2495655967",
+ "_path": "/opt/neuraldsp/Factory Library/Still Got The Blues.pb"
+ },
+ {
+ "_hash": "2845717593",
+ "_path": "/opt/neuraldsp/Factory Library/High Voltage.pb"
+ },
+ {
+ "_hash": "483336894",
+ "_path": "/opt/neuraldsp/Factory Library/Free Spirit Fantasy.pb"
+ },
+ {
+ "_hash": "2019908977",
+ "_path": "/opt/neuraldsp/Factory Library/RATM.pb"
+ },
+ {
+ "_hash": "1019811906",
+ "_path": "/opt/neuraldsp/Factory Library/Heavy Halen.pb"
+ },
+ {
+ "_hash": "1974436270",
+ "_path": "/opt/neuraldsp/Factory Library/Perfect World.pb"
+ },
+ {
+ "_hash": "2925095914",
+ "_path": "/opt/neuraldsp/Factory Library/Piece of Mind.pb"
+ },
+ {
+ "_hash": "972968084",
+ "_path": "/opt/neuraldsp/Factory Library/Unleash The Fury.pb"
+ },
+ {
+ "_hash": "578947210",
+ "_path": "/opt/neuraldsp/Factory Library/Painkiller.pb"
+ },
+ {
+ "_hash": "1922710111",
+ "_path": "/opt/neuraldsp/Factory Library/La Forever.pb"
+ },
+ {
+ "_hash": "2108627065",
+ "_path": "/opt/neuraldsp/Factory Library/Future Horn.pb"
+ },
+ {
+ "_hash": "232334950",
+ "_path": "/opt/neuraldsp/Factory Library/Miller High Life.pb"
+ },
+ {
+ "_hash": "904306008",
+ "_path": "/opt/neuraldsp/Factory Library/Miller Lite.pb"
+ },
+ {
+ "_hash": "2694458852",
+ "_path": "/opt/neuraldsp/Factory Library/Cory Wong Clean Rig.pb"
+ },
+ {
+ "_hash": "183050284",
+ "_path": "/opt/neuraldsp/Factory Library/Cory Wong DI Rig.pb"
+ },
+ {
+ "_hash": "1871106557",
+ "_path": "/opt/neuraldsp/Factory Library/Multi Amp Pleasure.pb"
+ },
+ {
+ "_hash": "3205469259",
+ "_path": "/opt/neuraldsp/Factory Library/Smackwound.pb"
+ },
+ {
+ "_hash": "2164929685",
+ "_path": "/opt/neuraldsp/Factory Library/Egyptian Dream.pb"
+ },
+ {
+ "_hash": "78993182",
+ "_path": "/opt/neuraldsp/Factory Library/Wet Dry Wet.pb"
+ },
+ {
+ "_hash": "4050820986",
+ "_path": "/opt/neuraldsp/Factory Library/Bright Brit.pb"
+ },
+ {
+ "_hash": "2165735999",
+ "_path": "/opt/neuraldsp/Factory Library/Super Wet Dry.pb"
+ },
+ {
+ "_hash": "1527192349",
+ "_path": "/opt/neuraldsp/Factory Library/Sparkly Meets Nosey.pb"
+ },
+ {
+ "_hash": "2104685449",
+ "_path": "/opt/neuraldsp/Factory Library/Dano Sol.pb"
+ },
+ {
+ "_hash": "2190354114",
+ "_path": "/opt/neuraldsp/Factory Library/Dual Trverb.pb"
+ },
+ {
+ "_hash": "771964319",
+ "_path": "/opt/neuraldsp/Factory Library/Soul Collector.pb"
+ },
+ {
+ "_hash": "3627600426",
+ "_path": "/opt/neuraldsp/Factory Library/The Kick.pb"
+ },
+ {
+ "_hash": "232704470",
+ "_path": "/opt/neuraldsp/Factory Library/Space Pulse Synth.pb"
+ },
+ {
+ "_hash": "2386644609",
+ "_path": "/opt/neuraldsp/Factory Library/Helium Layers.pb"
+ },
+ {
+ "_hash": "4065895900",
+ "_path": "/opt/neuraldsp/Factory Library/Saruman.pb"
+ },
+ {
+ "_hash": "1073656033",
+ "_path": "/opt/neuraldsp/Factory Library/Cosmic Event.pb"
+ },
+ {
+ "_hash": "3704742656",
+ "_path": "/opt/neuraldsp/Factory Library/Inception.pb"
+ },
+ {
+ "_hash": "3655583379",
+ "_path": "/opt/neuraldsp/Factory Library/Gravity.pb"
+ },
+ {
+ "_hash": "2454912258",
+ "_path": "/opt/neuraldsp/Factory Library/Ambient Clean.pb"
+ },
+ {
+ "_hash": "303260171",
+ "_path": "/opt/neuraldsp/Factory Library/Dreams.pb"
+ },
+ {
+ "_hash": "4008223362",
+ "_path": "/opt/neuraldsp/Factory Library/Sunken Ships.pb"
+ },
+ {
+ "_hash": "3038962334",
+ "_path": "/opt/neuraldsp/Factory Library/Annoying Flute.pb"
+ },
+ {
+ "_hash": "4227693926",
+ "_path": "/opt/neuraldsp/Factory Library/Swell Canvas.pb"
+ },
+ {
+ "_hash": "1604991162",
+ "_path": "/opt/neuraldsp/Factory Library/Arctic Cave.pb"
+ },
+ {
+ "_hash": "316469171",
+ "_path": "/opt/neuraldsp/Factory Library/Patch Send1 to Ret1.pb"
+ },
+ {
+ "_hash": "798752723",
+ "_path": "/opt/neuraldsp/Factory Library/Loop Climber Express.pb"
+ },
+ {
+ "_hash": "3689864664",
+ "_path": "/opt/neuraldsp/Factory Library/Loop Shimmer Express.pb"
+ },
+ {
+ "_hash": "1370334244",
+ "_path": "/opt/neuraldsp/Factory Library/Wild Buffalo.pb"
+ },
+ {
+ "_hash": "180726169",
+ "_path": "/opt/neuraldsp/Factory Library/Brut Bass.pb"
+ },
+ {
+ "_hash": "1797324046",
+ "_path": "/opt/neuraldsp/Factory Library/Stereo Fuzz.pb"
+ },
+ {
+ "_hash": "1718568300",
+ "_path": "/opt/neuraldsp/Factory Library/Scoop My Amped.pb"
+ },
+ {
+ "_hash": "1662967338",
+ "_path": "/opt/neuraldsp/Factory Library/CA 400 Ch2.pb"
+ },
+ {
+ "_hash": "3739742069",
+ "_path": "/opt/neuraldsp/Factory Library/Watt Bass Normal.pb"
+ },
+ {
+ "_hash": "1842563330",
+ "_path": "/opt/neuraldsp/Factory Library/Bass FlipTop 6466.pb"
+ },
+ {
+ "_hash": "1249773138",
+ "_path": "/opt/neuraldsp/Factory Library/Bass FlipTop 6664.pb"
+ },
+ {
+ "_hash": "2735435796",
+ "_path": "/opt/neuraldsp/Factory Library/Light Touch.pb"
+ },
+ {
+ "_hash": "2313092864",
+ "_path": "/opt/neuraldsp/Factory Library/Kick In The Subs.pb"
+ },
+ {
+ "_hash": "298499191",
+ "_path": "/opt/neuraldsp/Factory Library/Blast.pb"
+ },
+ {
+ "_hash": "1983735095",
+ "_path": "/opt/neuraldsp/Factory Library/Don't Cross Me.pb"
+ },
+ {
+ "_hash": "1531254533",
+ "_path": "/opt/neuraldsp/Factory Library/SuperMegaMassiveBass.pb"
+ },
+ {
+ "_hash": "4171361918",
+ "_path": "/opt/neuraldsp/Factory Library/Grinder.pb"
+ },
+ {
+ "_hash": "3297755213",
+ "_path": "/opt/neuraldsp/Factory Library/Goliath.pb"
+ },
+ {
+ "_hash": "201890304",
+ "_path": "/opt/neuraldsp/Factory Library/Hard Hitter.pb"
+ },
+ {
+ "_hash": "4094612427",
+ "_path": "/opt/neuraldsp/Factory Library/Amped SV.pb"
+ },
+ {
+ "_hash": "2613739913",
+ "_path": "/opt/neuraldsp/Factory Library/Amped SV & Rodent.pb"
+ },
+ {
+ "_hash": "3455290020",
+ "_path": "/opt/neuraldsp/Factory Library/Amped V4B.pb"
+ },
+ {
+ "_hash": "2251177144",
+ "_path": "/opt/neuraldsp/Factory Library/Amped V4B & Rodent.pb"
+ },
+ {
+ "_hash": "3638502732",
+ "_path": "/opt/neuraldsp/Factory Library/Cali Basswalk.pb"
+ },
+ {
+ "_hash": "2785264346",
+ "_path": "/opt/neuraldsp/Factory Library/Cali BB750.pb"
+ },
+ {
+ "_hash": "2575702895",
+ "_path": "/opt/neuraldsp/Factory Library/Cali M6Rifle.pb"
+ },
+ {
+ "_hash": "640574913",
+ "_path": "/opt/neuraldsp/Factory Library/Darkglass AO900 1.pb"
+ },
+ {
+ "_hash": "3801949370",
+ "_path": "/opt/neuraldsp/Factory Library/Darkglass AO900 2.pb"
+ },
+ {
+ "_hash": "3537005317",
+ "_path": "/opt/neuraldsp/Factory Library/Darkglass MT 900.pb"
+ },
+ {
+ "_hash": "2659291420",
+ "_path": "/opt/neuraldsp/Factory Library/Sin City.pb"
+ },
+ {
+ "_hash": "1907759519",
+ "_path": "/opt/neuraldsp/Factory Library/Tangerine Growl.pb"
+ },
+ {
+ "_hash": "1687299277",
+ "_path": "/opt/neuraldsp/Factory Library/Snakehair Bassmix 1.pb"
+ },
+ {
+ "_hash": "2116536454",
+ "_path": "/opt/neuraldsp/Factory Library/Snakehair Bassmix 2.pb"
+ },
+ {
+ "_hash": "1682894239",
+ "_path": "/opt/neuraldsp/Factory Library/Snakehair Bassmix 3.pb"
+ },
+ {
+ "_hash": "2202654520",
+ "_path": "/opt/neuraldsp/Factory Library/Snakehair Bassmix 4.pb"
+ },
+ {
+ "_hash": "1329690966",
+ "_path": "/opt/neuraldsp/Factory Library/Deep Underground.pb"
+ },
+ {
+ "_hash": "1736792192",
+ "_path": "/opt/neuraldsp/Factory Library/Run Steve Run.pb"
+ },
+ {
+ "_hash": "1729355440",
+ "_path": "/opt/neuraldsp/Factory Library/Hysteria.pb"
+ },
+ {
+ "_hash": "564987006",
+ "_path": "/opt/neuraldsp/Factory Library/Murder One.pb"
+ },
+ {
+ "_hash": "2388746107",
+ "_path": "/opt/neuraldsp/Factory Library/The Bass Tolls.pb"
+ },
+ {
+ "_hash": "4208043023",
+ "_path": "/opt/neuraldsp/Factory Library/Duff Bass.pb"
+ },
+ {
+ "_hash": "2346691174",
+ "_path": "/opt/neuraldsp/Factory Library/Hurry Geddy.pb"
+ },
+ {
+ "_hash": "2383813252",
+ "_path": "/opt/neuraldsp/Factory Library/Triple Bass.pb"
+ },
+ {
+ "_hash": "3460241340",
+ "_path": "/opt/neuraldsp/Factory Library/One Note Arpeggiator.pb"
+ },
+ {
+ "_hash": "3870850962",
+ "_path": "/opt/neuraldsp/Factory Library/One Note Is A Chord.pb"
+ },
+ {
+ "_hash": "4021283706",
+ "_path": "/opt/neuraldsp/Factory Library/12 String Bass.pb"
+ },
+ {
+ "_hash": "3746658789",
+ "_path": "/opt/neuraldsp/Factory Library/Square Wave.pb"
+ },
+ {
+ "_hash": "4057358867",
+ "_path": "/opt/neuraldsp/Factory Library/Synthesque Bass.pb"
+ },
+ {
+ "_hash": "3185581081",
+ "_path": "/opt/neuraldsp/Factory Library/Jeremy.pb"
+ },
+ {
+ "_hash": "3790957169",
+ "_path": "/opt/neuraldsp/Factory Library/Spooky Bass.pb"
+ },
+ {
+ "_hash": "382049922",
+ "_path": "/opt/neuraldsp/Factory Library/AutoWah.pb"
+ },
+ {
+ "_hash": "1616918305",
+ "_path": "/opt/neuraldsp/Factory Library/Vocal 58.pb"
+ },
+ {
+ "_hash": "3523156222",
+ "_path": "/opt/neuraldsp/Factory Library/Voc58 Piezo Acc.pb"
+ },
+ {
+ "_hash": "3239978968",
+ "_path": "/opt/neuraldsp/Factory Library/Vocal Synth.pb"
+ },
+ {
+ "_hash": "958881053",
+ "_path": "/opt/neuraldsp/Factory Library/AcGtr & Vocal.pb"
+ },
+ {
+ "_hash": "4140874114",
+ "_path": "/opt/neuraldsp/Factory Library/AcGtr Multiband.pb"
+ },
+ {
+ "_hash": "1947499888",
+ "_path": "/opt/neuraldsp/Factory Library/Poor Man's Double.pb"
+ },
+ {
+ "_hash": "2728252696",
+ "_path": "/opt/neuraldsp/Factory Library/12 String Gtr.pb"
+ },
+ {
+ "_hash": "1573999727",
+ "_path": "/opt/neuraldsp/Factory Library/AcGtr & Bass.pb"
+ },
+ {
+ "_hash": "3264173293",
+ "_path": "/opt/neuraldsp/Factory Library/Go To Scene Mode.pb"
+ },
+ {
+ "_hash": "4095450004",
+ "_path": "/opt/neuraldsp/Factory Library/Go To Stomp Mode.pb"
+ },
+ {
+ "_hash": "2240416404",
+ "_path": "/opt/neuraldsp/Factory Library/Splitters And Mixers.pb"
+ },
+ {
+ "_hash": "2666894461",
+ "_path": "/opt/neuraldsp/Factory Library/4 Cable Method.pb"
+ },
+ {
+ "_hash": "300674124",
+ "_path": "/opt/neuraldsp/Factory Library/7 Cable Method.pb"
+ },
+ {
+ "_hash": "4082387638",
+ "_path": "/opt/neuraldsp/Factory Library/9 Cable Method.pb"
+ },
+ {
+ "_hash": "3176147181",
+ "_path": "/opt/neuraldsp/Factory Library/2 Gtrs Switching.pb"
+ },
+ {
+ "_hash": "2305614952",
+ "_path": "/opt/neuraldsp/Factory Library/Reamp Example.pb"
+ }
+ ],
+ "_hash": "3341647416",
+ "_path": "/opt/neuraldsp/Factory Library"
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/Desktop Editor/src/assets/setlist_example.xml b/Desktop Editor/src/assets/setlist_example.xml
new file mode 100644
index 0000000..80b7894
--- /dev/null
+++ b/Desktop Editor/src/assets/setlist_example.xml
@@ -0,0 +1,1034 @@
+<Setlists>
+ <Setlist hash="2691287807" path="/media/p4/Presets/My Presets">
+ <Preset hash="697494485" path="/media/p4/Presets/My Presets/Nameless Slapper.pb"/>
+ <Preset hash="2848806090" path="/media/p4/Presets/My Presets/Cannibal.pb"/>
+ <Preset hash="1684646864" path="/media/p4/Presets/My Presets/Metallica.pb"/>
+ <Preset hash="2063471668" path="/media/p4/Presets/My Presets/Engl.pb"/>
+ <Preset hash="797150659" path="/media/p4/Presets/My Presets/Randall Satan Fortin.pb"/>
+ <Preset hash="1171927217" path="/media/p4/Presets/My Presets/Green Day Humbucker.pb"/>
+ <Preset hash="2547308107" path="/media/p4/Presets/My Presets/Fried Metal.pb"/>
+ <Preset hash="1986382787" path="/media/p4/Presets/My Presets/Hector.pb"/>
+ <Preset hash="629270769" path="/media/p4/Presets/My Presets/JCM800 Rock.pb"/>
+ <Preset hash="3867493555" path="/media/p4/Presets/My Presets/Slaughter.pb"/>
+ <Preset hash="2437793901" path="/media/p4/Presets/My Presets/GOAT.pb"/>
+ <Preset hash="3959616889" path="/media/p4/Presets/My Presets/Chug_5150.pb"/>
+ <Preset hash="1246696834" path="/media/p4/Presets/My Presets/Mayer.pb"/>
+ <Preset hash="750500687" path="/media/p4/Presets/My Presets/Fortin NTS Suite.pb"/>
+ <Preset hash="99714316" path="/media/p4/Presets/My Presets/Twin Sister Patch.pb"/>
+ <Preset hash="2656952353" path="/media/p4/Presets/My Presets/Screamin Sisters.pb"/>
+ <Preset hash="1626326589" path="/media/p4/Presets/My Presets/Bass Guitar What.pb"/>
+ <Preset hash="1366777887" path="/media/p4/Presets/My Presets/Revv.pb"/>
+ <Preset hash="1441963394" path="/media/p4/Presets/My Presets/Synthesque Bass.pb"/>
+ <Preset hash="3337358135" path="/media/p4/Presets/My Presets/Synth Bass.pb"/>
+ <Preset hash="1816976375" path="/media/p4/Presets/My Presets/Power.pb"/>
+ <Preset hash="1950257017" path="/media/p4/Presets/My Presets/5150.pb"/>
+ <Preset hash="896624363" path="/media/p4/Presets/My Presets/Two Rock Gigging.pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="2323719245" path="/media/p4/Presets/My Presets/Twin Crunch.pb"/>
+ <Preset hash="4028279899" path="/media/p4/Presets/My Presets/Acdc.pb"/>
+ <Preset hash="3226492391" path="/media/p4/Presets/My Presets/Fat Rockabilly.pb"/>
+ <Preset hash="3377673212" path="/media/p4/Presets/My Presets/Acoustic Sim.pb"/>
+ <Preset hash="3671648184" path="/media/p4/Presets/My Presets/Voice Over.pb"/>
+ <Preset hash="1023911697" path="/media/p4/Presets/My Presets/Petru Gian.pb"/>
+ <Preset hash="2934210149" path="/media/p4/Presets/My Presets/Plugin.pb"/>
+ <Preset hash="3888883938" path="/media/p4/Presets/My Presets/Behemoth.pb"/>
+ <Preset hash="2172773384" path="/media/p4/Presets/My Presets/Slayer KK.pb"/>
+ <Preset hash="143138298" path="/media/p4/Presets/My Presets/Say It Aint So.pb"/>
+ <Preset hash="3056582249" path="/media/p4/Presets/My Presets/VULGAR.pb"/>
+ <Preset hash="2558212119" path="/media/p4/Presets/My Presets/Dookie.pb"/>
+ <Preset hash="2616924965" path="/media/p4/Presets/My Presets/Lamb Of God.pb"/>
+ <Preset hash="3947449986" path="/media/p4/Presets/My Presets/RATM.pb"/>
+ <Preset hash="3200977930" path="/media/p4/Presets/My Presets/Death.pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="4076457719" path="/media/p4/Presets/My Presets/Antartica.pb"/>
+ <Preset hash="2221205868" path="/media/p4/Presets/My Presets/Public Image.pb"/>
+ <Preset hash="35021882" path="/media/p4/Presets/My Presets/Planet Claire.pb"/>
+ <Preset hash="2030801184" path="/media/p4/Presets/My Presets/Transmission.pb"/>
+ <Preset hash="2472823430" path="/media/p4/Presets/My Presets/Sanctuary.pb"/>
+ <Preset hash="2256205320" path="/media/p4/Presets/My Presets/Travel.pb"/>
+ <Preset hash="1202528361" path="/media/p4/Presets/My Presets/Bela Lugosi.pb"/>
+ <Preset hash="946343925" path="/media/p4/Presets/My Presets/Escape.pb"/>
+ <Preset hash="1296285866" path="/media/p4/Presets/My Presets/Be Your Dog.pb"/>
+ <Preset hash="3458765098" path="/media/p4/Presets/My Presets/Told You.pb"/>
+ <Preset hash="1233346854" path="/media/p4/Presets/My Presets/Suzy Q.pb"/>
+ <Preset hash="2736191419" path="/media/p4/Presets/My Presets/Blitzkrieg.pb"/>
+ <Preset hash="1147839917" path="/media/p4/Presets/My Presets/Bro Hymn.pb"/>
+ <Preset hash="3391359005" path="/media/p4/Presets/My Presets/Gutta.pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="3234630282" path="/media/p4/Presets/My Presets/Be Your Dog_1.pb"/>
+ <Preset hash="1258491658" path="/media/p4/Presets/My Presets/Told You_1.pb"/>
+ <Preset hash="1981484558" path="/media/p4/Presets/My Presets/Suzy Q_1.pb"/>
+ <Preset hash="3946158899" path="/media/p4/Presets/My Presets/Blitzkrieg_1.pb"/>
+ <Preset hash="3577334621" path="/media/p4/Presets/My Presets/Bro Hym_1.pb"/>
+ <Preset hash="3044158937" path="/media/p4/Presets/My Presets/Gutta_1.pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="2432124282" path="/media/p4/Presets/My Presets/Dookie V1.pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ </Setlist>
+ <Setlist hash="3023396721" path="/media/p4/Presets/Not Mandatory">
+ <Preset hash="1876202349" path="/media/p4/Presets/Not Mandatory/Antartica.pb"/>
+ <Preset hash="1737015190" path="/media/p4/Presets/Not Mandatory/Public Image.pb"/>
+ <Preset hash="1062593608" path="/media/p4/Presets/Not Mandatory/Planet Claire.pb"/>
+ <Preset hash="434154202" path="/media/p4/Presets/Not Mandatory/Transmission.pb"/>
+ <Preset hash="4123583880" path="/media/p4/Presets/Not Mandatory/Sanctuary.pb"/>
+ <Preset hash="1099402007" path="/media/p4/Presets/Not Mandatory/Vienna.pb"/>
+ <Preset hash="3991834150" path="/media/p4/Presets/Not Mandatory/Travel.pb"/>
+ <Preset hash="4082999507" path="/media/p4/Presets/Not Mandatory/Bela Lugosi.pb"/>
+ <Preset hash="3798791403" path="/media/p4/Presets/Not Mandatory/Escape.pb"/>
+ <Preset hash="2907777472" path="/media/p4/Presets/Not Mandatory/Be Your Dog.pb"/>
+ <Preset hash="2062595200" path="/media/p4/Presets/Not Mandatory/Told You.pb"/>
+ <Preset hash="1493298100" path="/media/p4/Presets/Not Mandatory/Suzy Q.pb"/>
+ <Preset hash="2137209845" path="/media/p4/Presets/Not Mandatory/Blitzkrieg.pb"/>
+ <Preset hash="2006669379" path="/media/p4/Presets/Not Mandatory/Bro Hymn.pb"/>
+ <Preset hash="2841656115" path="/media/p4/Presets/Not Mandatory/Gutta.pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ </Setlist>
+ <Setlist hash="3121655502" path="/media/p4/Presets/Cuttermess">
+ <Preset hash="1746704674" path="/media/p4/Presets/Cuttermess/Madness (E).pb"/>
+ <Preset hash="3319417662" path="/media/p4/Presets/Cuttermess/Mass Formation (E).pb"/>
+ <Preset hash="3415339828" path="/media/p4/Presets/Cuttermess/Resort 2 Violence F#.pb"/>
+ <Preset hash="1537339889" path="/media/p4/Presets/Cuttermess/Claws (E).pb"/>
+ <Preset hash="3543533890" path="/media/p4/Presets/Cuttermess/Guillotine (D).pb"/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ <Preset hash="0" path=""/>
+ </Setlist>
+ <Setlist hash="3341647416" path="/opt/neuraldsp/Factory Library">
+ <Preset hash="137189267" path="/opt/neuraldsp/Factory Library/Brit 2203.pb"/>
+ <Preset hash="4204141790" path="/opt/neuraldsp/Factory Library/Brit Plexi100 Normal.pb"/>
+ <Preset hash="960249623" path="/opt/neuraldsp/Factory Library/US TWN Vibrato.pb"/>
+ <Preset hash="2534007328" path="/opt/neuraldsp/Factory Library/Rols Jazz CH120.pb"/>
+ <Preset hash="760885263" path="/opt/neuraldsp/Factory Library/California Tremo Red.pb"/>
+ <Preset hash="1651882496" path="/opt/neuraldsp/Factory Library/EV101III Red.pb"/>
+ <Preset hash="1163973570" path="/opt/neuraldsp/Factory Library/Freeman 100 Rhythm.pb"/>
+ <Preset hash="2567047354" path="/opt/neuraldsp/Factory Library/D-Cell H4 Ch3.pb"/>
+ <Preset hash="4095197445" path="/opt/neuraldsp/Factory Library/Brit Plexi 50 Patch.pb"/>
+ <Preset hash="3943835888" path="/opt/neuraldsp/Factory Library/Brit TM45 Bright.pb"/>
+ <Preset hash="3587053413" path="/opt/neuraldsp/Factory Library/OneStar Clean Tweed.pb"/>
+ <Preset hash="3209320923" path="/opt/neuraldsp/Factory Library/PV505 Lead.pb"/>
+ <Preset hash="616453951" path="/opt/neuraldsp/Factory Library/Solo 100 Lead.pb"/>
+ <Preset hash="1977076557" path="/opt/neuraldsp/Factory Library/UK C30 TopBoost.pb"/>
+ <Preset hash="1462238152" path="/opt/neuraldsp/Factory Library/US DLX Vibrato.pb"/>
+ <Preset hash="1505259591" path="/opt/neuraldsp/Factory Library/US SPR Normal.pb"/>
+ <Preset hash="3239223608" path="/opt/neuraldsp/Factory Library/Bass FlipTop 6464.pb"/>
+ <Preset hash="3761674568" path="/opt/neuraldsp/Factory Library/Bass FlipTop 6666.pb"/>
+ <Preset hash="2139363073" path="/opt/neuraldsp/Factory Library/Bass Super Valve.pb"/>
+ <Preset hash="1121127321" path="/opt/neuraldsp/Factory Library/Brit Bass 50 Normal.pb"/>
+ <Preset hash="1819885242" path="/opt/neuraldsp/Factory Library/Brit Bass 50 Patch.pb"/>
+ <Preset hash="368623654" path="/opt/neuraldsp/Factory Library/California Bass 400.pb"/>
+ <Preset hash="2698166262" path="/opt/neuraldsp/Factory Library/G800K Bass.pb"/>
+ <Preset hash="1285884048" path="/opt/neuraldsp/Factory Library/Watt Bass Bright.pb"/>
+ <Preset hash="1212830112" path="/opt/neuraldsp/Factory Library/One Amp Does It All.pb"/>
+ <Preset hash="2801363880" path="/opt/neuraldsp/Factory Library/Bogna Vishnu Clean.pb"/>
+ <Preset hash="3812345853" path="/opt/neuraldsp/Factory Library/Pushed 20w.pb"/>
+ <Preset hash="3094016952" path="/opt/neuraldsp/Factory Library/Captain 50.pb"/>
+ <Preset hash="3534574901" path="/opt/neuraldsp/Factory Library/Free Man.pb"/>
+ <Preset hash="1843882634" path="/opt/neuraldsp/Factory Library/D-Cell H4.pb"/>
+ <Preset hash="1670609786" path="/opt/neuraldsp/Factory Library/UK Twang.pb"/>
+ <Preset hash="3664240002" path="/opt/neuraldsp/Factory Library/Dual Amps And Cabs.pb"/>
+ <Preset hash="395147131" path="/opt/neuraldsp/Factory Library/Brit UBL Lead.pb"/>
+ <Preset hash="592720957" path="/opt/neuraldsp/Factory Library/Strat Ambience.pb"/>
+ <Preset hash="1117853397" path="/opt/neuraldsp/Factory Library/Airy Reverbs.pb"/>
+ <Preset hash="1728421328" path="/opt/neuraldsp/Factory Library/California Dream.pb"/>
+ <Preset hash="3910973927" path="/opt/neuraldsp/Factory Library/Nashville Session.pb"/>
+ <Preset hash="3142868727" path="/opt/neuraldsp/Factory Library/Everything I Need.pb"/>
+ <Preset hash="785973087" path="/opt/neuraldsp/Factory Library/Swiss Knife.pb"/>
+ <Preset hash="73374903" path="/opt/neuraldsp/Factory Library/Cinematic Shimmer.pb"/>
+ <Preset hash="3905744680" path="/opt/neuraldsp/Factory Library/Moody Clean.pb"/>
+ <Preset hash="3311593258" path="/opt/neuraldsp/Factory Library/Toxic Synth.pb"/>
+ <Preset hash="2121349155" path="/opt/neuraldsp/Factory Library/Grimacemonger.pb"/>
+ <Preset hash="1023241484" path="/opt/neuraldsp/Factory Library/Captain Morgue.pb"/>
+ <Preset hash="3949891348" path="/opt/neuraldsp/Factory Library/Looper X.pb"/>
+ <Preset hash="3659313856" path="/opt/neuraldsp/Factory Library/Freeze Me.pb"/>
+ <Preset hash="2425479863" path="/opt/neuraldsp/Factory Library/Angels And Rainbows.pb"/>
+ <Preset hash="3960432154" path="/opt/neuraldsp/Factory Library/Acoustic Sim 1.pb"/>
+ <Preset hash="375122376" path="/opt/neuraldsp/Factory Library/John's Amp.pb"/>
+ <Preset hash="3659761933" path="/opt/neuraldsp/Factory Library/Big Waves.pb"/>
+ <Preset hash="1180796003" path="/opt/neuraldsp/Factory Library/Classic Pedalboard.pb"/>
+ <Preset hash="567255709" path="/opt/neuraldsp/Factory Library/Capture This.pb"/>
+ <Preset hash="3219910194" path="/opt/neuraldsp/Factory Library/Father and Son.pb"/>
+ <Preset hash="3952878863" path="/opt/neuraldsp/Factory Library/Necromangust.pb"/>
+ <Preset hash="1701900000" path="/opt/neuraldsp/Factory Library/The Great Preset.pb"/>
+ <Preset hash="1125671029" path="/opt/neuraldsp/Factory Library/Doom United.pb"/>
+ <Preset hash="972966216" path="/opt/neuraldsp/Factory Library/Inferno.pb"/>
+ <Preset hash="3457265027" path="/opt/neuraldsp/Factory Library/Numb Synth.pb"/>
+ <Preset hash="17258780" path="/opt/neuraldsp/Factory Library/Berlin Nights.pb"/>
+ <Preset hash="1328380816" path="/opt/neuraldsp/Factory Library/Pitched Delays.pb"/>
+ <Preset hash="4264685012" path="/opt/neuraldsp/Factory Library/CA Rec Shootout.pb"/>
+ <Preset hash="1350103111" path="/opt/neuraldsp/Factory Library/Brit Plexi Shootout.pb"/>
+ <Preset hash="4142393860" path="/opt/neuraldsp/Factory Library/SISO Shootout.pb"/>
+ <Preset hash="2405114498" path="/opt/neuraldsp/Factory Library/US Shootout.pb"/>
+ <Preset hash="115689116" path="/opt/neuraldsp/Factory Library/Dual Jazz.pb"/>
+ <Preset hash="3317373551" path="/opt/neuraldsp/Factory Library/Intimate Clean.pb"/>
+ <Preset hash="570966927" path="/opt/neuraldsp/Factory Library/Squeaky Dream.pb"/>
+ <Preset hash="404259725" path="/opt/neuraldsp/Factory Library/Baritone Ambience.pb"/>
+ <Preset hash="341413910" path="/opt/neuraldsp/Factory Library/Straight To Chorus.pb"/>
+ <Preset hash="4199606174" path="/opt/neuraldsp/Factory Library/Secret Service.pb"/>
+ <Preset hash="832646453" path="/opt/neuraldsp/Factory Library/Fish Out Of Water.pb"/>
+ <Preset hash="3554053293" path="/opt/neuraldsp/Factory Library/Double Deputy.pb"/>
+ <Preset hash="3375279738" path="/opt/neuraldsp/Factory Library/Hot EL34.pb"/>
+ <Preset hash="1870666791" path="/opt/neuraldsp/Factory Library/Major Strat Vibes.pb"/>
+ <Preset hash="4253896444" path="/opt/neuraldsp/Factory Library/Crunchy 2203.pb"/>
+ <Preset hash="4269717604" path="/opt/neuraldsp/Factory Library/Squid Vs Vixen.pb"/>
+ <Preset hash="1841105618" path="/opt/neuraldsp/Factory Library/Guess Who.pb"/>
+ <Preset hash="1187875650" path="/opt/neuraldsp/Factory Library/Free Dry Wet.pb"/>
+ <Preset hash="3157197763" path="/opt/neuraldsp/Factory Library/JayMP Bass.pb"/>
+ <Preset hash="3740694808" path="/opt/neuraldsp/Factory Library/Fuzz This.pb"/>
+ <Preset hash="3677910063" path="/opt/neuraldsp/Factory Library/Single Coil Rock.pb"/>
+ <Preset hash="994711943" path="/opt/neuraldsp/Factory Library/Stereo Lead.pb"/>
+ <Preset hash="2637538634" path="/opt/neuraldsp/Factory Library/Shredful Day.pb"/>
+ <Preset hash="3531117441" path="/opt/neuraldsp/Factory Library/Brother In Arms.pb"/>
+ <Preset hash="3941308022" path="/opt/neuraldsp/Factory Library/Solo Jam.pb"/>
+ <Preset hash="193814995" path="/opt/neuraldsp/Factory Library/HellFat.pb"/>
+ <Preset hash="756108156" path="/opt/neuraldsp/Factory Library/Write Your Best Riff.pb"/>
+ <Preset hash="309819184" path="/opt/neuraldsp/Factory Library/Fat And Forgiving.pb"/>
+ <Preset hash="4272331389" path="/opt/neuraldsp/Factory Library/Voolish.pb"/>
+ <Preset hash="1882476272" path="/opt/neuraldsp/Factory Library/Clear Lead.pb"/>
+ <Preset hash="2222063882" path="/opt/neuraldsp/Factory Library/3Xs Madness.pb"/>
+ <Preset hash="2618952968" path="/opt/neuraldsp/Factory Library/Tight Metal X.pb"/>
+ <Preset hash="3901805154" path="/opt/neuraldsp/Factory Library/Nestruction 1.pb"/>
+ <Preset hash="3340468169" path="/opt/neuraldsp/Factory Library/Nestruction 2.pb"/>
+ <Preset hash="3646971441" path="/opt/neuraldsp/Factory Library/Modern Power.pb"/>
+ <Preset hash="3912832017" path="/opt/neuraldsp/Factory Library/Double Cabs.pb"/>
+ <Preset hash="2296151218" path="/opt/neuraldsp/Factory Library/Banger Fish.pb"/>
+ <Preset hash="3898452366" path="/opt/neuraldsp/Factory Library/Balls With Power.pb"/>
+ <Preset hash="2377403244" path="/opt/neuraldsp/Factory Library/Cat From Hell.pb"/>
+ <Preset hash="253090086" path="/opt/neuraldsp/Factory Library/Cali 3Axes.pb"/>
+ <Preset hash="242250328" path="/opt/neuraldsp/Factory Library/Cali HiGain Preamps.pb"/>
+ <Preset hash="3720924442" path="/opt/neuraldsp/Factory Library/Cali M2CPlus.pb"/>
+ <Preset hash="3066400140" path="/opt/neuraldsp/Factory Library/Cali M3 Redstripe.pb"/>
+ <Preset hash="3567605943" path="/opt/neuraldsp/Factory Library/Colossal Calis.pb"/>
+ <Preset hash="434193604" path="/opt/neuraldsp/Factory Library/Fryed Sigmund.pb"/>
+ <Preset hash="863609581" path="/opt/neuraldsp/Factory Library/Crank Me Up.pb"/>
+ <Preset hash="3218397312" path="/opt/neuraldsp/Factory Library/Cravin X.pb"/>
+ <Preset hash="3128508817" path="/opt/neuraldsp/Factory Library/Comet.pb"/>
+ <Preset hash="1268821033" path="/opt/neuraldsp/Factory Library/Custom 3SE.pb"/>
+ <Preset hash="1634312573" path="/opt/neuraldsp/Factory Library/NoMatch.pb"/>
+ <Preset hash="1153910218" path="/opt/neuraldsp/Factory Library/Paul's Lunchbox.pb"/>
+ <Preset hash="1852286492" path="/opt/neuraldsp/Factory Library/Prince Bender.pb"/>
+ <Preset hash="29790712" path="/opt/neuraldsp/Factory Library/Range Rocker.pb"/>
+ <Preset hash="1645119636" path="/opt/neuraldsp/Factory Library/Uber Madness.pb"/>
+ <Preset hash="2479658975" path="/opt/neuraldsp/Factory Library/VH Signature.pb"/>
+ <Preset hash="2621834862" path="/opt/neuraldsp/Factory Library/Victor's Marshal.pb"/>
+ <Preset hash="2791581992" path="/opt/neuraldsp/Factory Library/Victor's Mega Squid.pb"/>
+ <Preset hash="790840088" path="/opt/neuraldsp/Factory Library/We Love Herbie.pb"/>
+ <Preset hash="2809072789" path="/opt/neuraldsp/Factory Library/Wet Rocker.pb"/>
+ <Preset hash="1294862799" path="/opt/neuraldsp/Factory Library/Wet Thunder.pb"/>
+ <Preset hash="437646228" path="/opt/neuraldsp/Factory Library/Pres And Power 1.pb"/>
+ <Preset hash="1541418743" path="/opt/neuraldsp/Factory Library/Pres And Power 2.pb"/>
+ <Preset hash="2220712094" path="/opt/neuraldsp/Factory Library/Pres And Power 3.pb"/>
+ <Preset hash="103284929" path="/opt/neuraldsp/Factory Library/Pres And Power 4.pb"/>
+ <Preset hash="3049646416" path="/opt/neuraldsp/Factory Library/Pres And Power 5.pb"/>
+ <Preset hash="2500065811" path="/opt/neuraldsp/Factory Library/Pres And Power 6.pb"/>
+ <Preset hash="3264659386" path="/opt/neuraldsp/Factory Library/Pres And Power 7.pb"/>
+ <Preset hash="1067154877" path="/opt/neuraldsp/Factory Library/Pres And Power 8.pb"/>
+ <Preset hash="1027294925" path="/opt/neuraldsp/Factory Library/Carolina Reaper.pb"/>
+ <Preset hash="437453513" path="/opt/neuraldsp/Factory Library/Godzilla.pb"/>
+ <Preset hash="3057610632" path="/opt/neuraldsp/Factory Library/Sad But True.pb"/>
+ <Preset hash="4115954153" path="/opt/neuraldsp/Factory Library/Forbidden Riff.pb"/>
+ <Preset hash="1684323371" path="/opt/neuraldsp/Factory Library/Cliffs Of Dover.pb"/>
+ <Preset hash="1119694316" path="/opt/neuraldsp/Factory Library/Far Beyond The Sun.pb"/>
+ <Preset hash="1361725212" path="/opt/neuraldsp/Factory Library/Message In A Bottle.pb"/>
+ <Preset hash="242989259" path="/opt/neuraldsp/Factory Library/Rosanna.pb"/>
+ <Preset hash="4006148401" path="/opt/neuraldsp/Factory Library/Nameless Streets.pb"/>
+ <Preset hash="480775470" path="/opt/neuraldsp/Factory Library/Jambi.pb"/>
+ <Preset hash="1007811929" path="/opt/neuraldsp/Factory Library/Appetite.pb"/>
+ <Preset hash="1989495662" path="/opt/neuraldsp/Factory Library/Frankenstrat.pb"/>
+ <Preset hash="3004453653" path="/opt/neuraldsp/Factory Library/Austin Lead.pb"/>
+ <Preset hash="3807187706" path="/opt/neuraldsp/Factory Library/Racer XOXO.pb"/>
+ <Preset hash="2109823622" path="/opt/neuraldsp/Factory Library/Rain In Blood.pb"/>
+ <Preset hash="34841953" path="/opt/neuraldsp/Factory Library/Texas Blues.pb"/>
+ <Preset hash="2727108962" path="/opt/neuraldsp/Factory Library/You Have.pb"/>
+ <Preset hash="2797348411" path="/opt/neuraldsp/Factory Library/The Impostor.pb"/>
+ <Preset hash="1813564315" path="/opt/neuraldsp/Factory Library/Powerslave.pb"/>
+ <Preset hash="2481331049" path="/opt/neuraldsp/Factory Library/Elegance.pb"/>
+ <Preset hash="2094507428" path="/opt/neuraldsp/Factory Library/Helsinki Complex.pb"/>
+ <Preset hash="3477665023" path="/opt/neuraldsp/Factory Library/Air Raid Vehicle.pb"/>
+ <Preset hash="1462054067" path="/opt/neuraldsp/Factory Library/Expanse Anomality.pb"/>
+ <Preset hash="2495655967" path="/opt/neuraldsp/Factory Library/Still Got The Blues.pb"/>
+ <Preset hash="2845717593" path="/opt/neuraldsp/Factory Library/High Voltage.pb"/>
+ <Preset hash="483336894" path="/opt/neuraldsp/Factory Library/Free Spirit Fantasy.pb"/>
+ <Preset hash="2019908977" path="/opt/neuraldsp/Factory Library/RATM.pb"/>
+ <Preset hash="1019811906" path="/opt/neuraldsp/Factory Library/Heavy Halen.pb"/>
+ <Preset hash="1974436270" path="/opt/neuraldsp/Factory Library/Perfect World.pb"/>
+ <Preset hash="2925095914" path="/opt/neuraldsp/Factory Library/Piece of Mind.pb"/>
+ <Preset hash="972968084" path="/opt/neuraldsp/Factory Library/Unleash The Fury.pb"/>
+ <Preset hash="578947210" path="/opt/neuraldsp/Factory Library/Painkiller.pb"/>
+ <Preset hash="1922710111" path="/opt/neuraldsp/Factory Library/La Forever.pb"/>
+ <Preset hash="2108627065" path="/opt/neuraldsp/Factory Library/Future Horn.pb"/>
+ <Preset hash="232334950" path="/opt/neuraldsp/Factory Library/Miller High Life.pb"/>
+ <Preset hash="904306008" path="/opt/neuraldsp/Factory Library/Miller Lite.pb"/>
+ <Preset hash="2694458852" path="/opt/neuraldsp/Factory Library/Cory Wong Clean Rig.pb"/>
+ <Preset hash="183050284" path="/opt/neuraldsp/Factory Library/Cory Wong DI Rig.pb"/>
+ <Preset hash="1871106557" path="/opt/neuraldsp/Factory Library/Multi Amp Pleasure.pb"/>
+ <Preset hash="3205469259" path="/opt/neuraldsp/Factory Library/Smackwound.pb"/>
+ <Preset hash="2164929685" path="/opt/neuraldsp/Factory Library/Egyptian Dream.pb"/>
+ <Preset hash="78993182" path="/opt/neuraldsp/Factory Library/Wet Dry Wet.pb"/>
+ <Preset hash="4050820986" path="/opt/neuraldsp/Factory Library/Bright Brit.pb"/>
+ <Preset hash="2165735999" path="/opt/neuraldsp/Factory Library/Super Wet Dry.pb"/>
+ <Preset hash="1527192349" path="/opt/neuraldsp/Factory Library/Sparkly Meets Nosey.pb"/>
+ <Preset hash="2104685449" path="/opt/neuraldsp/Factory Library/Dano Sol.pb"/>
+ <Preset hash="2190354114" path="/opt/neuraldsp/Factory Library/Dual Trverb.pb"/>
+ <Preset hash="771964319" path="/opt/neuraldsp/Factory Library/Soul Collector.pb"/>
+ <Preset hash="3627600426" path="/opt/neuraldsp/Factory Library/The Kick.pb"/>
+ <Preset hash="232704470" path="/opt/neuraldsp/Factory Library/Space Pulse Synth.pb"/>
+ <Preset hash="2386644609" path="/opt/neuraldsp/Factory Library/Helium Layers.pb"/>
+ <Preset hash="4065895900" path="/opt/neuraldsp/Factory Library/Saruman.pb"/>
+ <Preset hash="1073656033" path="/opt/neuraldsp/Factory Library/Cosmic Event.pb"/>
+ <Preset hash="3704742656" path="/opt/neuraldsp/Factory Library/Inception.pb"/>
+ <Preset hash="3655583379" path="/opt/neuraldsp/Factory Library/Gravity.pb"/>
+ <Preset hash="2454912258" path="/opt/neuraldsp/Factory Library/Ambient Clean.pb"/>
+ <Preset hash="303260171" path="/opt/neuraldsp/Factory Library/Dreams.pb"/>
+ <Preset hash="4008223362" path="/opt/neuraldsp/Factory Library/Sunken Ships.pb"/>
+ <Preset hash="3038962334" path="/opt/neuraldsp/Factory Library/Annoying Flute.pb"/>
+ <Preset hash="4227693926" path="/opt/neuraldsp/Factory Library/Swell Canvas.pb"/>
+ <Preset hash="1604991162" path="/opt/neuraldsp/Factory Library/Arctic Cave.pb"/>
+ <Preset hash="316469171" path="/opt/neuraldsp/Factory Library/Patch Send1 to Ret1.pb"/>
+ <Preset hash="798752723" path="/opt/neuraldsp/Factory Library/Loop Climber Express.pb"/>
+ <Preset hash="3689864664" path="/opt/neuraldsp/Factory Library/Loop Shimmer Express.pb"/>
+ <Preset hash="1370334244" path="/opt/neuraldsp/Factory Library/Wild Buffalo.pb"/>
+ <Preset hash="180726169" path="/opt/neuraldsp/Factory Library/Brut Bass.pb"/>
+ <Preset hash="1797324046" path="/opt/neuraldsp/Factory Library/Stereo Fuzz.pb"/>
+ <Preset hash="1718568300" path="/opt/neuraldsp/Factory Library/Scoop My Amped.pb"/>
+ <Preset hash="1662967338" path="/opt/neuraldsp/Factory Library/CA 400 Ch2.pb"/>
+ <Preset hash="3739742069" path="/opt/neuraldsp/Factory Library/Watt Bass Normal.pb"/>
+ <Preset hash="1842563330" path="/opt/neuraldsp/Factory Library/Bass FlipTop 6466.pb"/>
+ <Preset hash="1249773138" path="/opt/neuraldsp/Factory Library/Bass FlipTop 6664.pb"/>
+ <Preset hash="2735435796" path="/opt/neuraldsp/Factory Library/Light Touch.pb"/>
+ <Preset hash="2313092864" path="/opt/neuraldsp/Factory Library/Kick In The Subs.pb"/>
+ <Preset hash="298499191" path="/opt/neuraldsp/Factory Library/Blast.pb"/>
+ <Preset hash="1983735095" path="/opt/neuraldsp/Factory Library/Don't Cross Me.pb"/>
+ <Preset hash="1531254533" path="/opt/neuraldsp/Factory Library/SuperMegaMassiveBass.pb"/>
+ <Preset hash="4171361918" path="/opt/neuraldsp/Factory Library/Grinder.pb"/>
+ <Preset hash="3297755213" path="/opt/neuraldsp/Factory Library/Goliath.pb"/>
+ <Preset hash="201890304" path="/opt/neuraldsp/Factory Library/Hard Hitter.pb"/>
+ <Preset hash="4094612427" path="/opt/neuraldsp/Factory Library/Amped SV.pb"/>
+ <Preset hash="2613739913" path="/opt/neuraldsp/Factory Library/Amped SV &amp; Rodent.pb"/>
+ <Preset hash="3455290020" path="/opt/neuraldsp/Factory Library/Amped V4B.pb"/>
+ <Preset hash="2251177144" path="/opt/neuraldsp/Factory Library/Amped V4B &amp; Rodent.pb"/>
+ <Preset hash="3638502732" path="/opt/neuraldsp/Factory Library/Cali Basswalk.pb"/>
+ <Preset hash="2785264346" path="/opt/neuraldsp/Factory Library/Cali BB750.pb"/>
+ <Preset hash="2575702895" path="/opt/neuraldsp/Factory Library/Cali M6Rifle.pb"/>
+ <Preset hash="640574913" path="/opt/neuraldsp/Factory Library/Darkglass AO900 1.pb"/>
+ <Preset hash="3801949370" path="/opt/neuraldsp/Factory Library/Darkglass AO900 2.pb"/>
+ <Preset hash="3537005317" path="/opt/neuraldsp/Factory Library/Darkglass MT 900.pb"/>
+ <Preset hash="2659291420" path="/opt/neuraldsp/Factory Library/Sin City.pb"/>
+ <Preset hash="1907759519" path="/opt/neuraldsp/Factory Library/Tangerine Growl.pb"/>
+ <Preset hash="1687299277" path="/opt/neuraldsp/Factory Library/Snakehair Bassmix 1.pb"/>
+ <Preset hash="2116536454" path="/opt/neuraldsp/Factory Library/Snakehair Bassmix 2.pb"/>
+ <Preset hash="1682894239" path="/opt/neuraldsp/Factory Library/Snakehair Bassmix 3.pb"/>
+ <Preset hash="2202654520" path="/opt/neuraldsp/Factory Library/Snakehair Bassmix 4.pb"/>
+ <Preset hash="1329690966" path="/opt/neuraldsp/Factory Library/Deep Underground.pb"/>
+ <Preset hash="1736792192" path="/opt/neuraldsp/Factory Library/Run Steve Run.pb"/>
+ <Preset hash="1729355440" path="/opt/neuraldsp/Factory Library/Hysteria.pb"/>
+ <Preset hash="564987006" path="/opt/neuraldsp/Factory Library/Murder One.pb"/>
+ <Preset hash="2388746107" path="/opt/neuraldsp/Factory Library/The Bass Tolls.pb"/>
+ <Preset hash="4208043023" path="/opt/neuraldsp/Factory Library/Duff Bass.pb"/>
+ <Preset hash="2346691174" path="/opt/neuraldsp/Factory Library/Hurry Geddy.pb"/>
+ <Preset hash="2383813252" path="/opt/neuraldsp/Factory Library/Triple Bass.pb"/>
+ <Preset hash="3460241340" path="/opt/neuraldsp/Factory Library/One Note Arpeggiator.pb"/>
+ <Preset hash="3870850962" path="/opt/neuraldsp/Factory Library/One Note Is A Chord.pb"/>
+ <Preset hash="4021283706" path="/opt/neuraldsp/Factory Library/12 String Bass.pb"/>
+ <Preset hash="3746658789" path="/opt/neuraldsp/Factory Library/Square Wave.pb"/>
+ <Preset hash="4057358867" path="/opt/neuraldsp/Factory Library/Synthesque Bass.pb"/>
+ <Preset hash="3185581081" path="/opt/neuraldsp/Factory Library/Jeremy.pb"/>
+ <Preset hash="3790957169" path="/opt/neuraldsp/Factory Library/Spooky Bass.pb"/>
+ <Preset hash="382049922" path="/opt/neuraldsp/Factory Library/AutoWah.pb"/>
+ <Preset hash="1616918305" path="/opt/neuraldsp/Factory Library/Vocal 58.pb"/>
+ <Preset hash="3523156222" path="/opt/neuraldsp/Factory Library/Voc58 Piezo Acc.pb"/>
+ <Preset hash="3239978968" path="/opt/neuraldsp/Factory Library/Vocal Synth.pb"/>
+ <Preset hash="958881053" path="/opt/neuraldsp/Factory Library/AcGtr &amp; Vocal.pb"/>
+ <Preset hash="4140874114" path="/opt/neuraldsp/Factory Library/AcGtr Multiband.pb"/>
+ <Preset hash="1947499888" path="/opt/neuraldsp/Factory Library/Poor Man's Double.pb"/>
+ <Preset hash="2728252696" path="/opt/neuraldsp/Factory Library/12 String Gtr.pb"/>
+ <Preset hash="1573999727" path="/opt/neuraldsp/Factory Library/AcGtr &amp; Bass.pb"/>
+ <Preset hash="3264173293" path="/opt/neuraldsp/Factory Library/Go To Scene Mode.pb"/>
+ <Preset hash="4095450004" path="/opt/neuraldsp/Factory Library/Go To Stomp Mode.pb"/>
+ <Preset hash="2240416404" path="/opt/neuraldsp/Factory Library/Splitters And Mixers.pb"/>
+ <Preset hash="2666894461" path="/opt/neuraldsp/Factory Library/4 Cable Method.pb"/>
+ <Preset hash="300674124" path="/opt/neuraldsp/Factory Library/7 Cable Method.pb"/>
+ <Preset hash="4082387638" path="/opt/neuraldsp/Factory Library/9 Cable Method.pb"/>
+ <Preset hash="3176147181" path="/opt/neuraldsp/Factory Library/2 Gtrs Switching.pb"/>
+ <Preset hash="2305614952" path="/opt/neuraldsp/Factory Library/Reamp Example.pb"/>
+ </Setlist>
+</Setlists>
diff --git a/Desktop Editor/src/components/PresetBlock.vue b/Desktop Editor/src/components/PresetBlock.vue
new file mode 100644
index 0000000..5e59787
--- /dev/null
+++ b/Desktop Editor/src/components/PresetBlock.vue
@@ -0,0 +1,191 @@
+<template>
+ <div class="block">
+ <button class="block-btn"
+ :class="{ isEmpty: model.hash == 0 }"
+ :style="{ background: blockColor }"
+ @click="showParams">
+ <!-- <img src="rsquare.png" alt="block"> -->
+ {{ modelData.model._attributes.name }}
+ </button>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import store from '@/store';
+
+export default defineComponent({
+ props: {
+ model: {
+ type: Object,
+ required: true
+ },
+ },
+
+ emits: ['show-params'],
+
+ data(){
+ return {
+ modelData: {} as any,
+ blockColor: "rgb(0, 162, 255)",
+
+ blockColorLut: {
+ "Guitar Overdrive": "yellow",
+ "Guitar Amplifier": "red",
+ "Bass Amplifier": "red",
+ "Bass Overdrive": "yellow",
+ "Equalizer": "CornflowerBlue",
+ "Compressor": "green",
+ "Delay": "white",
+ "Modulation": "purple",
+ "Reverb": "white",
+ "Wah": "white",
+ "Splitter": "white",
+ "Mixer": "white",
+ "Cabsim Guitar": "CornflowerBlue",
+ "FX Loop": "white",
+ "Neural Capture": "gray",
+ "Tuner": "white",
+ "Utility": "white",
+ "Pitch": "yellow",
+ "Utility_Deprecated": "black",
+ "Neural Capture Internal": "black",
+ "Cabsim Bass": "CornflowerBlue",
+ "Internal Routing": "black",
+ "Lane output control": "black",
+ "Filter": "white",
+ "Tempo control": "black",
+ "Morph": "white",
+ "Loopers": "red",
+ "InputGateControl": "black",
+ } as any
+ }
+ },
+
+ created(){
+ this.modelData = this.getModelFromRepo(this.model.hash);
+ this.setBlockColor();
+ },
+
+ methods: {
+ getModelFromRepo(hash: number): any{
+
+ const modelRepo = store.state.modelRepo as any;
+ //const model = modelRepo.find((model) => model.hash == hash);
+ let category;
+ let model = {
+ _attributes: {
+ id: hash.toString(),
+ }
+ };
+
+ if(hash != 0){
+ for (let i = 0; i < modelRepo.Category.length; i++){
+ const repoCategory = modelRepo.Category[i];
+ const categoryModels: any = repoCategory.Model;
+
+
+ if(categoryModels == undefined) {
+ if(repoCategory._attributes.id == hash){
+ console.log("undefined", repoCategory, hash)
+ category = "Tuner";
+ model = repoCategory;
+ break;
+ }
+ }
+
+ else{
+
+ // Check if categoryModels is an object or an array
+ if(categoryModels._attributes != undefined){
+ if(categoryModels._attributes.id == hash){
+ category = repoCategory;
+ model = categoryModels;
+ break;
+ }
+ }
+
+ // Check if the categoryModels object contains an array
+ for (let j = 0; j < categoryModels.length; j++){
+
+
+ if(categoryModels[j]._attributes.id == hash){
+ category = repoCategory;
+ model = categoryModels[j]
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return {
+ model: model,
+ category: category
+ };
+ },
+
+ setBlockColor(){
+ // Check the model category
+ if(this.modelData.category){
+ const category = this.modelData.category._attributes.name;
+ this.blockColor = this.blockColorLut[category];
+ }
+ else{
+ this.blockColor = "rgba(0,0,0,0)";
+ }
+ },
+
+ showParams(){
+ // Emit back to the parent component
+ this.$emit('show-params', this.model, this.modelData);
+ }
+ }
+});
+</script>
+
+<style scoped lang="scss">
+.block{
+ width: 4rem;
+ height: 4rem;
+
+
+ border-radius: 1rem;
+
+ justify-content: center;
+ align-items: center;
+
+ border: none;
+ padding: 0;
+ z-index: 1;
+
+ .block-btn{
+ width: 100%;
+ height: 100%;
+ border-radius: 1rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 2rem;
+ font-weight: bold;
+ border: none;
+ background-color: rgba(0, 162, 255, 0);
+ font-size: 1rem;
+
+ &:hover{
+ cursor: pointer;
+ transform: scale(1.1);
+ transition: transform 0.2s ease-in-out;
+ }
+ &.isEmpty:hover{
+ background-color: rgba(0, 162, 255, 0.2) !important;
+ }
+ }
+
+ img{
+ display: flex;
+ width: 100%;
+ height: 100%;
+ }
+}
+</style> \ No newline at end of file
diff --git a/Desktop Editor/src/components/PresetChain.vue b/Desktop Editor/src/components/PresetChain.vue
new file mode 100644
index 0000000..9e5357e
--- /dev/null
+++ b/Desktop Editor/src/components/PresetChain.vue
@@ -0,0 +1,142 @@
+<template>
+ <div class="chain">
+ <!-- The chain contains the input block, the line acros the screen, and the output block -->
+ <button class="io-block">+</button>
+ <div class="track">
+ <div class="chain-objects" v-for="chainObject in chainObjects" :key="chainObject">
+ <PresetBlock
+ v-if="chainObject.hash !== undefined"
+ :model="chainObject"
+ @show-params="showParams">
+ </PresetBlock>
+ <div
+ class="control-point"
+ v-else-if="chainObject.type == 'controlPoint'" :class="{ isControlpoint: chainObject.value > 0}">
+ {{ chainObject.loc }}
+ </div>
+ </div>
+ </div>
+
+
+ <hr class="row-line">
+
+ <button class="io-block">+</button>
+
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import PresetBlock from '@/components/PresetBlock.vue';
+
+export default defineComponent({
+ components: {
+ PresetBlock
+ },
+
+ props: {
+ chain: {
+ type: Object,
+ required: true
+ }
+ },
+
+ emits: ['show-params'],
+
+ data(){
+ return{
+ chainObjects: [] as any
+ }
+ },
+ mounted(){
+ const models: any = this.chain.models;
+ const controlPoint = {"type": "controlPoint", "value": 0, "loc": 0};
+ const chainSplitControlPoints = this.chain.splitControlPoints;
+
+ this.chainObjects.push(controlPoint);
+ for(let i = 0; i < models.length; i++){
+ this.chainObjects.push(models[i]);
+ let cp = {"type": "controlPoint", "value": 0, "loc": i};
+ cp.loc = i + 1;
+
+ for(let j = 0; j < chainSplitControlPoints.length; j++){
+ if(chainSplitControlPoints[j].split == i + 1){
+ cp.value = 1;
+ }
+ else if(chainSplitControlPoints[j].mix == i + 1){
+ cp.value = 2;
+ }
+ }
+
+ this.chainObjects.push(cp);
+ }
+ },
+
+ methods:{
+ showParams(model: any, modelData: any){
+ this.$emit('show-params', model, modelData);
+ }
+ }
+})
+</script>
+
+<style scoped lang="scss">
+.chain {
+ /* Space the content evenly horizontal */
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-evenly;
+ align-items: center;
+ padding: 0 2rem;
+
+ .io-block {
+ width: 3rem;
+ height: 4rem;
+ background-color: rgb(41, 41, 41);
+ color: rgb(255, 255, 255);
+ border-radius: 1rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 2rem;
+ font-weight: bold;
+ border: none;
+ z-index: 1;
+ }
+ .io-block:hover {
+ background-color: rgb(255, 255, 255);
+ color: rgb(41, 41, 41);
+ cursor: pointer;
+ }
+ .row-line {
+ position: absolute;
+ width: calc(100% - 8rem);
+ margin: 0;
+ z-index: 0;
+ border: 1px solid rgb(255, 255, 255);
+ }
+ .track {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-evenly;
+ align-items: center;
+ width: 100%;
+ height: 4rem;
+ z-index: 1;
+
+ .isControlpoint{
+ color: yellow;
+ }
+ }
+
+
+}
+
+
+
+
+
+
+
+</style> \ No newline at end of file
diff --git a/Desktop Editor/src/components/PresetGrid.vue b/Desktop Editor/src/components/PresetGrid.vue
new file mode 100644
index 0000000..482d0af
--- /dev/null
+++ b/Desktop Editor/src/components/PresetGrid.vue
@@ -0,0 +1,80 @@
+<template>
+ <div class="preset-title">
+ <div class="preset-location">
+ <div class="preset-bank">1</div>
+ <div class="preset-letter">A</div>
+ </div>
+ <div class="preset-name" >{{ preset.name }}</div>
+ </div>
+
+ <div v-if="preset" class="grid">
+ <chain :chain="preset.chains[0]" @show-params="showParams"></chain>
+ <chain :chain="preset.chains[1]" @show-params="showParams"></chain>
+ <chain :chain="preset.chains[2]" @show-params="showParams"></chain>
+ <chain :chain="preset.chains[3]" @show-params="showParams"></chain>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import Chain from '@/components/PresetChain.vue';
+
+export default defineComponent({
+ name: 'PresetGrid',
+ components: {
+ Chain
+ },
+
+ emits: ['show-params'],
+
+ props: {
+ preset: {
+ type: Object,
+ required: true
+ }
+ },
+
+ methods: {
+ showParams(model: any, modelData: any){
+ this.$emit('show-params', model, modelData);
+ }
+ },
+})
+</script>
+
+<style>
+.grid {
+ background-color: rgb(0, 0, 0);
+ color: rgb(255, 255, 255);
+ width: 100%;
+ height: 400px;
+
+ /* Space the content evenly vertical */
+ display: flex;
+ flex-direction: column;
+ justify-content: space-evenly;
+
+ margin-bottom: 2rem;
+
+}
+
+.preset-name {
+ text-align: start;
+}
+
+.preset-title {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ font-size: 3rem;
+ font-weight: bold;
+ padding-bottom: 1rem;
+}
+
+.preset-location {
+ display: flex;
+ flex-direction: row;
+ margin-right: 1rem;
+}
+
+</style> \ No newline at end of file
diff --git a/Desktop Editor/src/main.ts b/Desktop Editor/src/main.ts
new file mode 100644
index 0000000..4d89664
--- /dev/null
+++ b/Desktop Editor/src/main.ts
@@ -0,0 +1,31 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+import { createRouter, createWebHistory } from 'vue-router'
+import PresetViewer from './views/PresetViewer.vue'
+import PresetBrowserView from './views/PresetBrowserView.vue'
+
+// Define routes
+const routes = [
+ { path: '/', component: App },
+ {
+ path: '/browser',
+ component: PresetBrowserView,
+ },
+ {
+ name: 'Preset viewer',
+ path: '/viewer',
+ component: PresetViewer,
+ },
+]
+
+// Create router
+const router = createRouter({
+ history: createWebHistory(),
+ routes,
+})
+
+const app = createApp(App);
+
+app.use(router);
+
+app.mount('#app');
diff --git a/Desktop Editor/src/models/Presets/Preset_pb.d.ts b/Desktop Editor/src/models/Presets/Preset_pb.d.ts
new file mode 100644
index 0000000..1bf823d
--- /dev/null
+++ b/Desktop Editor/src/models/Presets/Preset_pb.d.ts
@@ -0,0 +1,661 @@
+import * as jspb from 'google-protobuf'
+
+
+
+export class BinaryPreset extends jspb.Message {
+ getName(): string;
+ setName(value: string): BinaryPreset;
+
+ getHash(): number;
+ setHash(value: number): BinaryPreset;
+
+ getDate(): string;
+ setDate(value: string): BinaryPreset;
+
+ getVolume(): number;
+ setVolume(value: number): BinaryPreset;
+
+ getPan(): number;
+ setPan(value: number): BinaryPreset;
+
+ getDefaultScene(): number;
+ setDefaultScene(value: number): BinaryPreset;
+
+ getAuthorName(): string;
+ setAuthorName(value: string): BinaryPreset;
+
+ getAuthorId(): string;
+ setAuthorId(value: string): BinaryPreset;
+
+ getTempo(): number;
+ setTempo(value: number): BinaryPreset;
+
+ getChainsList(): Array<Chain>;
+ setChainsList(value: Array<Chain>): BinaryPreset;
+ clearChainsList(): BinaryPreset;
+ addChains(value?: Chain, index?: number): Chain;
+
+ getTagsList(): Array<string>;
+ setTagsList(value: Array<string>): BinaryPreset;
+ clearTagsList(): BinaryPreset;
+ addTags(value: string, index?: number): BinaryPreset;
+
+ getLegacyStompModeStompDataList(): Array<LegacyStompModeStompData>;
+ setLegacyStompModeStompDataList(value: Array<LegacyStompModeStompData>): BinaryPreset;
+ clearLegacyStompModeStompDataList(): BinaryPreset;
+ addLegacyStompModeStompData(value?: LegacyStompModeStompData, index?: number): LegacyStompModeStompData;
+
+ getSceneTempoList(): Array<number>;
+ setSceneTempoList(value: Array<number>): BinaryPreset;
+ clearSceneTempoList(): BinaryPreset;
+ addSceneTempo(value: number, index?: number): BinaryPreset;
+
+ getSceneLabelsList(): Array<string>;
+ setSceneLabelsList(value: Array<string>): BinaryPreset;
+ clearSceneLabelsList(): BinaryPreset;
+ addSceneLabels(value: string, index?: number): BinaryPreset;
+
+ getMidiMessagesList(): Array<MidiMessageInfo>;
+ setMidiMessagesList(value: Array<MidiMessageInfo>): BinaryPreset;
+ clearMidiMessagesList(): BinaryPreset;
+ addMidiMessages(value?: MidiMessageInfo, index?: number): MidiMessageInfo;
+
+ getMidiMessagesGeneralList(): Array<MidiMessageInfo>;
+ setMidiMessagesGeneralList(value: Array<MidiMessageInfo>): BinaryPreset;
+ clearMidiMessagesGeneralList(): BinaryPreset;
+ addMidiMessagesGeneral(value?: MidiMessageInfo, index?: number): MidiMessageInfo;
+
+ getBypassList(): Array<Bypass>;
+ setBypassList(value: Array<Bypass>): BinaryPreset;
+ clearBypassList(): BinaryPreset;
+ addBypass(value?: Bypass, index?: number): Bypass;
+
+ getTempoprogramdataList(): Array<Model>;
+ setTempoprogramdataList(value: Array<Model>): BinaryPreset;
+ clearTempoprogramdataList(): BinaryPreset;
+ addTempoprogramdata(value?: Model, index?: number): Model;
+
+ getLayoutCode1List(): Array<number>;
+ setLayoutCode1List(value: Array<number>): BinaryPreset;
+ clearLayoutCode1List(): BinaryPreset;
+ addLayoutCode1(value: number, index?: number): BinaryPreset;
+
+ getLayoutCode2List(): Array<number>;
+ setLayoutCode2List(value: Array<number>): BinaryPreset;
+ clearLayoutCode2List(): BinaryPreset;
+ addLayoutCode2(value: number, index?: number): BinaryPreset;
+
+ getCreatedVersionList(): Array<string>;
+ setCreatedVersionList(value: Array<string>): BinaryPreset;
+ clearCreatedVersionList(): BinaryPreset;
+ addCreatedVersion(value: string, index?: number): BinaryPreset;
+
+ getModifiedVersionList(): Array<string>;
+ setModifiedVersionList(value: Array<string>): BinaryPreset;
+ clearModifiedVersionList(): BinaryPreset;
+ addModifiedVersion(value: string, index?: number): BinaryPreset;
+
+ getOldestCompatibleVersionList(): Array<string>;
+ setOldestCompatibleVersionList(value: Array<string>): BinaryPreset;
+ clearOldestCompatibleVersionList(): BinaryPreset;
+ addOldestCompatibleVersion(value: string, index?: number): BinaryPreset;
+
+ getCloudIdList(): Array<string>;
+ setCloudIdList(value: Array<string>): BinaryPreset;
+ clearCloudIdList(): BinaryPreset;
+ addCloudId(value: string, index?: number): BinaryPreset;
+
+ getDescriptionList(): Array<string>;
+ setDescriptionList(value: Array<string>): BinaryPreset;
+ clearDescriptionList(): BinaryPreset;
+ addDescription(value: string, index?: number): BinaryPreset;
+
+ getStompModeAssignmentsList(): Array<StompModeAssignment>;
+ setStompModeAssignmentsList(value: Array<StompModeAssignment>): BinaryPreset;
+ clearStompModeAssignmentsList(): BinaryPreset;
+ addStompModeAssignments(value?: StompModeAssignment, index?: number): StompModeAssignment;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): BinaryPreset.AsObject;
+ static toObject(includeInstance: boolean, msg: BinaryPreset): BinaryPreset.AsObject;
+ static serializeBinaryToWriter(message: BinaryPreset, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): BinaryPreset;
+ static deserializeBinaryFromReader(message: BinaryPreset, reader: jspb.BinaryReader): BinaryPreset;
+}
+
+export namespace BinaryPreset {
+ export type AsObject = {
+ name: string,
+ hash: number,
+ date: string,
+ volume: number,
+ pan: number,
+ defaultScene: number,
+ authorName: string,
+ authorId: string,
+ tempo: number,
+ chainsList: Array<Chain.AsObject>,
+ tagsList: Array<string>,
+ legacyStompModeStompDataList: Array<LegacyStompModeStompData.AsObject>,
+ sceneTempoList: Array<number>,
+ sceneLabelsList: Array<string>,
+ midiMessagesList: Array<MidiMessageInfo.AsObject>,
+ midiMessagesGeneralList: Array<MidiMessageInfo.AsObject>,
+ bypassList: Array<Bypass.AsObject>,
+ tempoprogramdataList: Array<Model.AsObject>,
+ layoutCode1List: Array<number>,
+ layoutCode2List: Array<number>,
+ createdVersionList: Array<string>,
+ modifiedVersionList: Array<string>,
+ oldestCompatibleVersionList: Array<string>,
+ cloudIdList: Array<string>,
+ descriptionList: Array<string>,
+ stompModeAssignmentsList: Array<StompModeAssignment.AsObject>,
+ }
+}
+
+export class Chain extends jspb.Message {
+ getModelsList(): Array<Model>;
+ setModelsList(value: Array<Model>): Chain;
+ clearModelsList(): Chain;
+ addModels(value?: Model, index?: number): Model;
+
+ getSplitControlPointsList(): Array<SplitControlPoints>;
+ setSplitControlPointsList(value: Array<SplitControlPoints>): Chain;
+ clearSplitControlPointsList(): Chain;
+ addSplitControlPoints(value?: SplitControlPoints, index?: number): SplitControlPoints;
+
+ getSplitterList(): Array<Model>;
+ setSplitterList(value: Array<Model>): Chain;
+ clearSplitterList(): Chain;
+ addSplitter(value?: Model, index?: number): Model;
+
+ getMixerList(): Array<Model>;
+ setMixerList(value: Array<Model>): Chain;
+ clearMixerList(): Chain;
+ addMixer(value?: Model, index?: number): Model;
+
+ getOutputControlList(): Array<Model>;
+ setOutputControlList(value: Array<Model>): Chain;
+ clearOutputControlList(): Chain;
+ addOutputControl(value?: Model, index?: number): Model;
+
+ getSplitbypassList(): Array<SceneBypass>;
+ setSplitbypassList(value: Array<SceneBypass>): Chain;
+ clearSplitbypassList(): Chain;
+ addSplitbypass(value?: SceneBypass, index?: number): SceneBypass;
+
+ getMixbypassList(): Array<SceneBypass>;
+ setMixbypassList(value: Array<SceneBypass>): Chain;
+ clearMixbypassList(): Chain;
+ addMixbypass(value?: SceneBypass, index?: number): SceneBypass;
+
+ getCombinedSplitterList(): Array<Model>;
+ setCombinedSplitterList(value: Array<Model>): Chain;
+ clearCombinedSplitterList(): Chain;
+ addCombinedSplitter(value?: Model, index?: number): Model;
+
+ getInputControlList(): Array<Model>;
+ setInputControlList(value: Array<Model>): Chain;
+ clearInputControlList(): Chain;
+ addInputControl(value?: Model, index?: number): Model;
+
+ getInPortid(): number;
+ setInPortid(value: number): Chain;
+
+ getOutPortid(): number;
+ setOutPortid(value: number): Chain;
+
+ getRow(): number;
+ setRow(value: number): Chain;
+
+ getInPortidCase(): Chain.InPortidCase;
+
+ getOutPortidCase(): Chain.OutPortidCase;
+
+ getRowCase(): Chain.RowCase;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): Chain.AsObject;
+ static toObject(includeInstance: boolean, msg: Chain): Chain.AsObject;
+ static serializeBinaryToWriter(message: Chain, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): Chain;
+ static deserializeBinaryFromReader(message: Chain, reader: jspb.BinaryReader): Chain;
+}
+
+export namespace Chain {
+ export type AsObject = {
+ modelsList: Array<Model.AsObject>,
+ splitControlPointsList: Array<SplitControlPoints.AsObject>,
+ splitterList: Array<Model.AsObject>,
+ mixerList: Array<Model.AsObject>,
+ outputControlList: Array<Model.AsObject>,
+ splitbypassList: Array<SceneBypass.AsObject>,
+ mixbypassList: Array<SceneBypass.AsObject>,
+ combinedSplitterList: Array<Model.AsObject>,
+ inputControlList: Array<Model.AsObject>,
+ inPortid: number,
+ outPortid: number,
+ row: number,
+ }
+
+ export enum InPortidCase {
+ _IN_PORTID_NOT_SET = 0,
+ IN_PORTID = 1,
+ }
+
+ export enum OutPortidCase {
+ _OUT_PORTID_NOT_SET = 0,
+ OUT_PORTID = 2,
+ }
+
+ export enum RowCase {
+ _ROW_NOT_SET = 0,
+ ROW = 14,
+ }
+}
+
+export class Model extends jspb.Message {
+ getParamsList(): Array<Param>;
+ setParamsList(value: Array<Param>): Model;
+ clearParamsList(): Model;
+ addParams(value?: Param, index?: number): Param;
+
+ getBypassExpressionList(): Array<Expression>;
+ setBypassExpressionList(value: Array<Expression>): Model;
+ clearBypassExpressionList(): Model;
+ addBypassExpression(value?: Expression, index?: number): Expression;
+
+ getExpressionBypassInfoList(): Array<ExpressionBypassInfo>;
+ setExpressionBypassInfoList(value: Array<ExpressionBypassInfo>): Model;
+ clearExpressionBypassInfoList(): Model;
+ addExpressionBypassInfo(value?: ExpressionBypassInfo, index?: number): ExpressionBypassInfo;
+
+ getHash(): number;
+ setHash(value: number): Model;
+
+ getColumn(): number;
+ setColumn(value: number): Model;
+
+ getHashCase(): Model.HashCase;
+
+ getColumnCase(): Model.ColumnCase;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): Model.AsObject;
+ static toObject(includeInstance: boolean, msg: Model): Model.AsObject;
+ static serializeBinaryToWriter(message: Model, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): Model;
+ static deserializeBinaryFromReader(message: Model, reader: jspb.BinaryReader): Model;
+}
+
+export namespace Model {
+ export type AsObject = {
+ paramsList: Array<Param.AsObject>,
+ bypassExpressionList: Array<Expression.AsObject>,
+ expressionBypassInfoList: Array<ExpressionBypassInfo.AsObject>,
+ hash: number,
+ column: number,
+ }
+
+ export enum HashCase {
+ _HASH_NOT_SET = 0,
+ HASH = 1,
+ }
+
+ export enum ColumnCase {
+ _COLUMN_NOT_SET = 0,
+ COLUMN = 5,
+ }
+}
+
+export class SplitControlPoints extends jspb.Message {
+ getSplit(): number;
+ setSplit(value: number): SplitControlPoints;
+
+ getMix(): number;
+ setMix(value: number): SplitControlPoints;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): SplitControlPoints.AsObject;
+ static toObject(includeInstance: boolean, msg: SplitControlPoints): SplitControlPoints.AsObject;
+ static serializeBinaryToWriter(message: SplitControlPoints, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): SplitControlPoints;
+ static deserializeBinaryFromReader(message: SplitControlPoints, reader: jspb.BinaryReader): SplitControlPoints;
+}
+
+export namespace SplitControlPoints {
+ export type AsObject = {
+ split: number,
+ mix: number,
+ }
+}
+
+export class Bypass extends jspb.Message {
+ getColbypassList(): Array<ColBypass>;
+ setColbypassList(value: Array<ColBypass>): Bypass;
+ clearColbypassList(): Bypass;
+ addColbypass(value?: ColBypass, index?: number): ColBypass;
+
+ getRow(): number;
+ setRow(value: number): Bypass;
+
+ getRowCase(): Bypass.RowCase;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): Bypass.AsObject;
+ static toObject(includeInstance: boolean, msg: Bypass): Bypass.AsObject;
+ static serializeBinaryToWriter(message: Bypass, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): Bypass;
+ static deserializeBinaryFromReader(message: Bypass, reader: jspb.BinaryReader): Bypass;
+}
+
+export namespace Bypass {
+ export type AsObject = {
+ colbypassList: Array<ColBypass.AsObject>,
+ row: number,
+ }
+
+ export enum RowCase {
+ _ROW_NOT_SET = 0,
+ ROW = 2,
+ }
+}
+
+export class ColBypass extends jspb.Message {
+ getScenebypassList(): Array<SceneBypass>;
+ setScenebypassList(value: Array<SceneBypass>): ColBypass;
+ clearScenebypassList(): ColBypass;
+ addScenebypass(value?: SceneBypass, index?: number): SceneBypass;
+
+ getColumn(): number;
+ setColumn(value: number): ColBypass;
+
+ getColumnCase(): ColBypass.ColumnCase;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): ColBypass.AsObject;
+ static toObject(includeInstance: boolean, msg: ColBypass): ColBypass.AsObject;
+ static serializeBinaryToWriter(message: ColBypass, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): ColBypass;
+ static deserializeBinaryFromReader(message: ColBypass, reader: jspb.BinaryReader): ColBypass;
+}
+
+export namespace ColBypass {
+ export type AsObject = {
+ scenebypassList: Array<SceneBypass.AsObject>,
+ column: number,
+ }
+
+ export enum ColumnCase {
+ _COLUMN_NOT_SET = 0,
+ COLUMN = 2,
+ }
+}
+
+export class SceneBypass extends jspb.Message {
+ getBypass(): boolean;
+ setBypass(value: boolean): SceneBypass;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): SceneBypass.AsObject;
+ static toObject(includeInstance: boolean, msg: SceneBypass): SceneBypass.AsObject;
+ static serializeBinaryToWriter(message: SceneBypass, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): SceneBypass;
+ static deserializeBinaryFromReader(message: SceneBypass, reader: jspb.BinaryReader): SceneBypass;
+}
+
+export namespace SceneBypass {
+ export type AsObject = {
+ bypass: boolean,
+ }
+}
+
+export class Param extends jspb.Message {
+ getParamValuesList(): Array<ParamValue>;
+ setParamValuesList(value: Array<ParamValue>): Param;
+ clearParamValuesList(): Param;
+ addParamValues(value?: ParamValue, index?: number): ParamValue;
+
+ getExpression(): number;
+ setExpression(value: number): Param;
+
+ getExpressionMin(): number;
+ setExpressionMin(value: number): Param;
+
+ getExpressionMax(): number;
+ setExpressionMax(value: number): Param;
+
+ getSceneMode(): boolean;
+ setSceneMode(value: boolean): Param;
+
+ getIndex(): number;
+ setIndex(value: number): Param;
+
+ getExpressionCase(): Param.ExpressionCase;
+
+ getExpressionMinCase(): Param.ExpressionMinCase;
+
+ getExpressionMaxCase(): Param.ExpressionMaxCase;
+
+ getSceneModeCase(): Param.SceneModeCase;
+
+ getIndexCase(): Param.IndexCase;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): Param.AsObject;
+ static toObject(includeInstance: boolean, msg: Param): Param.AsObject;
+ static serializeBinaryToWriter(message: Param, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): Param;
+ static deserializeBinaryFromReader(message: Param, reader: jspb.BinaryReader): Param;
+}
+
+export namespace Param {
+ export type AsObject = {
+ paramValuesList: Array<ParamValue.AsObject>,
+ expression: number,
+ expressionMin: number,
+ expressionMax: number,
+ sceneMode: boolean,
+ index: number,
+ }
+
+ export enum ExpressionCase {
+ _EXPRESSION_NOT_SET = 0,
+ EXPRESSION = 1,
+ }
+
+ export enum ExpressionMinCase {
+ _EXPRESSION_MIN_NOT_SET = 0,
+ EXPRESSION_MIN = 2,
+ }
+
+ export enum ExpressionMaxCase {
+ _EXPRESSION_MAX_NOT_SET = 0,
+ EXPRESSION_MAX = 3,
+ }
+
+ export enum SceneModeCase {
+ _SCENE_MODE_NOT_SET = 0,
+ SCENE_MODE = 4,
+ }
+
+ export enum IndexCase {
+ _INDEX_NOT_SET = 0,
+ INDEX = 6,
+ }
+}
+
+export class ParamValue extends jspb.Message {
+ getIntValue(): number;
+ setIntValue(value: number): ParamValue;
+
+ getFloatValue(): number;
+ setFloatValue(value: number): ParamValue;
+
+ getStringValue(): string;
+ setStringValue(value: string): ParamValue;
+
+ getValueCase(): ParamValue.ValueCase;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): ParamValue.AsObject;
+ static toObject(includeInstance: boolean, msg: ParamValue): ParamValue.AsObject;
+ static serializeBinaryToWriter(message: ParamValue, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): ParamValue;
+ static deserializeBinaryFromReader(message: ParamValue, reader: jspb.BinaryReader): ParamValue;
+}
+
+export namespace ParamValue {
+ export type AsObject = {
+ intValue: number,
+ floatValue: number,
+ stringValue: string,
+ }
+
+ export enum ValueCase {
+ VALUE_NOT_SET = 0,
+ INT_VALUE = 1,
+ FLOAT_VALUE = 2,
+ STRING_VALUE = 3,
+ }
+}
+
+export class LegacyStompModeStompData extends jspb.Message {
+ getRow(): number;
+ setRow(value: number): LegacyStompModeStompData;
+
+ getColumn(): number;
+ setColumn(value: number): LegacyStompModeStompData;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): LegacyStompModeStompData.AsObject;
+ static toObject(includeInstance: boolean, msg: LegacyStompModeStompData): LegacyStompModeStompData.AsObject;
+ static serializeBinaryToWriter(message: LegacyStompModeStompData, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): LegacyStompModeStompData;
+ static deserializeBinaryFromReader(message: LegacyStompModeStompData, reader: jspb.BinaryReader): LegacyStompModeStompData;
+}
+
+export namespace LegacyStompModeStompData {
+ export type AsObject = {
+ row: number,
+ column: number,
+ }
+}
+
+export class StompModeAssignment extends jspb.Message {
+ getRow(): number;
+ setRow(value: number): StompModeAssignment;
+
+ getColumn(): number;
+ setColumn(value: number): StompModeAssignment;
+
+ getStompIndex(): number;
+ setStompIndex(value: number): StompModeAssignment;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): StompModeAssignment.AsObject;
+ static toObject(includeInstance: boolean, msg: StompModeAssignment): StompModeAssignment.AsObject;
+ static serializeBinaryToWriter(message: StompModeAssignment, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): StompModeAssignment;
+ static deserializeBinaryFromReader(message: StompModeAssignment, reader: jspb.BinaryReader): StompModeAssignment;
+}
+
+export namespace StompModeAssignment {
+ export type AsObject = {
+ row: number,
+ column: number,
+ stompIndex: number,
+ }
+}
+
+export class MidiMessageInfo extends jspb.Message {
+ getType(): number;
+ setType(value: number): MidiMessageInfo;
+
+ getChannel(): number;
+ setChannel(value: number): MidiMessageInfo;
+
+ getParam1(): number;
+ setParam1(value: number): MidiMessageInfo;
+
+ getParam2(): number;
+ setParam2(value: number): MidiMessageInfo;
+
+ getParam3(): number;
+ setParam3(value: number): MidiMessageInfo;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): MidiMessageInfo.AsObject;
+ static toObject(includeInstance: boolean, msg: MidiMessageInfo): MidiMessageInfo.AsObject;
+ static serializeBinaryToWriter(message: MidiMessageInfo, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): MidiMessageInfo;
+ static deserializeBinaryFromReader(message: MidiMessageInfo, reader: jspb.BinaryReader): MidiMessageInfo;
+}
+
+export namespace MidiMessageInfo {
+ export type AsObject = {
+ type: number,
+ channel: number,
+ param1: number,
+ param2: number,
+ param3: number,
+ }
+}
+
+export class Expression extends jspb.Message {
+ getExpression(): number;
+ setExpression(value: number): Expression;
+
+ getExpressionMin(): number;
+ setExpressionMin(value: number): Expression;
+
+ getExpressionMax(): number;
+ setExpressionMax(value: number): Expression;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): Expression.AsObject;
+ static toObject(includeInstance: boolean, msg: Expression): Expression.AsObject;
+ static serializeBinaryToWriter(message: Expression, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): Expression;
+ static deserializeBinaryFromReader(message: Expression, reader: jspb.BinaryReader): Expression;
+}
+
+export namespace Expression {
+ export type AsObject = {
+ expression: number,
+ expressionMin: number,
+ expressionMax: number,
+ }
+}
+
+export class ExpressionBypassInfo extends jspb.Message {
+ getType(): number;
+ setType(value: number): ExpressionBypassInfo;
+
+ getInvert(): boolean;
+ setInvert(value: boolean): ExpressionBypassInfo;
+
+ getDelayMs(): number;
+ setDelayMs(value: number): ExpressionBypassInfo;
+
+ getLatchEmulation(): boolean;
+ setLatchEmulation(value: boolean): ExpressionBypassInfo;
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): ExpressionBypassInfo.AsObject;
+ static toObject(includeInstance: boolean, msg: ExpressionBypassInfo): ExpressionBypassInfo.AsObject;
+ static serializeBinaryToWriter(message: ExpressionBypassInfo, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): ExpressionBypassInfo;
+ static deserializeBinaryFromReader(message: ExpressionBypassInfo, reader: jspb.BinaryReader): ExpressionBypassInfo;
+}
+
+export namespace ExpressionBypassInfo {
+ export type AsObject = {
+ type: number,
+ invert: boolean,
+ delayMs: number,
+ latchEmulation: boolean,
+ }
+}
+
diff --git a/Desktop Editor/src/models/Presets/Preset_pb.js b/Desktop Editor/src/models/Presets/Preset_pb.js
new file mode 100644
index 0000000..a2d8be7
--- /dev/null
+++ b/Desktop Editor/src/models/Presets/Preset_pb.js
@@ -0,0 +1,5296 @@
+// source: NDSP/Presets/Preset.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {missingRequire} reports error on implicit type usages.
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ * field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = (function() {
+ if (this) { return this; }
+ if (typeof window !== 'undefined') { return window; }
+ if (typeof global !== 'undefined') { return global; }
+ if (typeof self !== 'undefined') { return self; }
+ return Function('return this')();
+}.call(null));
+
+goog.exportSymbol('proto.BinaryPreset', null, global);
+goog.exportSymbol('proto.Bypass', null, global);
+goog.exportSymbol('proto.Bypass.RowCase', null, global);
+goog.exportSymbol('proto.Chain', null, global);
+goog.exportSymbol('proto.Chain.InPortidCase', null, global);
+goog.exportSymbol('proto.Chain.OutPortidCase', null, global);
+goog.exportSymbol('proto.Chain.RowCase', null, global);
+goog.exportSymbol('proto.ColBypass', null, global);
+goog.exportSymbol('proto.ColBypass.ColumnCase', null, global);
+goog.exportSymbol('proto.Expression', null, global);
+goog.exportSymbol('proto.ExpressionBypassInfo', null, global);
+goog.exportSymbol('proto.LegacyStompModeStompData', null, global);
+goog.exportSymbol('proto.MidiMessageInfo', null, global);
+goog.exportSymbol('proto.Model', null, global);
+goog.exportSymbol('proto.Model.ColumnCase', null, global);
+goog.exportSymbol('proto.Model.HashCase', null, global);
+goog.exportSymbol('proto.Param', null, global);
+goog.exportSymbol('proto.Param.ExpressionCase', null, global);
+goog.exportSymbol('proto.Param.ExpressionMaxCase', null, global);
+goog.exportSymbol('proto.Param.ExpressionMinCase', null, global);
+goog.exportSymbol('proto.Param.IndexCase', null, global);
+goog.exportSymbol('proto.Param.SceneModeCase', null, global);
+goog.exportSymbol('proto.ParamValue', null, global);
+goog.exportSymbol('proto.ParamValue.ValueCase', null, global);
+goog.exportSymbol('proto.SceneBypass', null, global);
+goog.exportSymbol('proto.SplitControlPoints', null, global);
+goog.exportSymbol('proto.StompModeAssignment', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.BinaryPreset = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.BinaryPreset.repeatedFields_, null);
+};
+goog.inherits(proto.BinaryPreset, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.BinaryPreset.displayName = 'proto.BinaryPreset';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.Chain = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.Chain.repeatedFields_, proto.Chain.oneofGroups_);
+};
+goog.inherits(proto.Chain, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.Chain.displayName = 'proto.Chain';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.Model = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.Model.repeatedFields_, proto.Model.oneofGroups_);
+};
+goog.inherits(proto.Model, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.Model.displayName = 'proto.Model';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.SplitControlPoints = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.SplitControlPoints, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.SplitControlPoints.displayName = 'proto.SplitControlPoints';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.Bypass = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.Bypass.repeatedFields_, proto.Bypass.oneofGroups_);
+};
+goog.inherits(proto.Bypass, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.Bypass.displayName = 'proto.Bypass';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.ColBypass = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.ColBypass.repeatedFields_, proto.ColBypass.oneofGroups_);
+};
+goog.inherits(proto.ColBypass, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.ColBypass.displayName = 'proto.ColBypass';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.SceneBypass = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.SceneBypass, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.SceneBypass.displayName = 'proto.SceneBypass';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.Param = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.Param.repeatedFields_, proto.Param.oneofGroups_);
+};
+goog.inherits(proto.Param, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.Param.displayName = 'proto.Param';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.ParamValue = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, proto.ParamValue.oneofGroups_);
+};
+goog.inherits(proto.ParamValue, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.ParamValue.displayName = 'proto.ParamValue';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.LegacyStompModeStompData = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.LegacyStompModeStompData, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.LegacyStompModeStompData.displayName = 'proto.LegacyStompModeStompData';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.StompModeAssignment = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.StompModeAssignment, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.StompModeAssignment.displayName = 'proto.StompModeAssignment';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.MidiMessageInfo = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.MidiMessageInfo, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.MidiMessageInfo.displayName = 'proto.MidiMessageInfo';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.Expression = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.Expression, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.Expression.displayName = 'proto.Expression';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.ExpressionBypassInfo = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.ExpressionBypassInfo, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.ExpressionBypassInfo.displayName = 'proto.ExpressionBypassInfo';
+}
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.BinaryPreset.repeatedFields_ = [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.BinaryPreset.prototype.toObject = function(opt_includeInstance) {
+ return proto.BinaryPreset.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.BinaryPreset} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.BinaryPreset.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ name: jspb.Message.getFieldWithDefault(msg, 2, ""),
+ hash: jspb.Message.getFieldWithDefault(msg, 3, 0),
+ date: jspb.Message.getFieldWithDefault(msg, 4, ""),
+ volume: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),
+ pan: jspb.Message.getFloatingPointFieldWithDefault(msg, 6, 0.0),
+ defaultScene: jspb.Message.getFieldWithDefault(msg, 7, 0),
+ authorName: jspb.Message.getFieldWithDefault(msg, 8, ""),
+ authorId: jspb.Message.getFieldWithDefault(msg, 9, ""),
+ tempo: jspb.Message.getFieldWithDefault(msg, 10, 0),
+ chainsList: jspb.Message.toObjectList(msg.getChainsList(),
+ proto.Chain.toObject, includeInstance),
+ tagsList: (f = jspb.Message.getRepeatedField(msg, 12)) == null ? undefined : f,
+ legacyStompModeStompDataList: jspb.Message.toObjectList(msg.getLegacyStompModeStompDataList(),
+ proto.LegacyStompModeStompData.toObject, includeInstance),
+ sceneTempoList: (f = jspb.Message.getRepeatedField(msg, 14)) == null ? undefined : f,
+ sceneLabelsList: (f = jspb.Message.getRepeatedField(msg, 15)) == null ? undefined : f,
+ midiMessagesList: jspb.Message.toObjectList(msg.getMidiMessagesList(),
+ proto.MidiMessageInfo.toObject, includeInstance),
+ midiMessagesGeneralList: jspb.Message.toObjectList(msg.getMidiMessagesGeneralList(),
+ proto.MidiMessageInfo.toObject, includeInstance),
+ bypassList: jspb.Message.toObjectList(msg.getBypassList(),
+ proto.Bypass.toObject, includeInstance),
+ tempoprogramdataList: jspb.Message.toObjectList(msg.getTempoprogramdataList(),
+ proto.Model.toObject, includeInstance),
+ layoutCode1List: (f = jspb.Message.getRepeatedField(msg, 20)) == null ? undefined : f,
+ layoutCode2List: (f = jspb.Message.getRepeatedField(msg, 21)) == null ? undefined : f,
+ createdVersionList: (f = jspb.Message.getRepeatedField(msg, 22)) == null ? undefined : f,
+ modifiedVersionList: (f = jspb.Message.getRepeatedField(msg, 23)) == null ? undefined : f,
+ oldestCompatibleVersionList: (f = jspb.Message.getRepeatedField(msg, 24)) == null ? undefined : f,
+ cloudIdList: (f = jspb.Message.getRepeatedField(msg, 25)) == null ? undefined : f,
+ descriptionList: (f = jspb.Message.getRepeatedField(msg, 26)) == null ? undefined : f,
+ stompModeAssignmentsList: jspb.Message.toObjectList(msg.getStompModeAssignmentsList(),
+ proto.StompModeAssignment.toObject, includeInstance)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.BinaryPreset}
+ */
+proto.BinaryPreset.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.BinaryPreset;
+ return proto.BinaryPreset.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.BinaryPreset} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.BinaryPreset}
+ */
+proto.BinaryPreset.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 2:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setName(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setHash(value);
+ break;
+ case 4:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setDate(value);
+ break;
+ case 5:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setVolume(value);
+ break;
+ case 6:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setPan(value);
+ break;
+ case 7:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setDefaultScene(value);
+ break;
+ case 8:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setAuthorName(value);
+ break;
+ case 9:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setAuthorId(value);
+ break;
+ case 10:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setTempo(value);
+ break;
+ case 11:
+ var value = new proto.Chain;
+ reader.readMessage(value,proto.Chain.deserializeBinaryFromReader);
+ msg.addChains(value);
+ break;
+ case 12:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addTags(value);
+ break;
+ case 13:
+ var value = new proto.LegacyStompModeStompData;
+ reader.readMessage(value,proto.LegacyStompModeStompData.deserializeBinaryFromReader);
+ msg.addLegacyStompModeStompData(value);
+ break;
+ case 14:
+ var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedUint32() : [reader.readUint32()]);
+ for (var i = 0; i < values.length; i++) {
+ msg.addSceneTempo(values[i]);
+ }
+ break;
+ case 15:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addSceneLabels(value);
+ break;
+ case 16:
+ var value = new proto.MidiMessageInfo;
+ reader.readMessage(value,proto.MidiMessageInfo.deserializeBinaryFromReader);
+ msg.addMidiMessages(value);
+ break;
+ case 17:
+ var value = new proto.MidiMessageInfo;
+ reader.readMessage(value,proto.MidiMessageInfo.deserializeBinaryFromReader);
+ msg.addMidiMessagesGeneral(value);
+ break;
+ case 18:
+ var value = new proto.Bypass;
+ reader.readMessage(value,proto.Bypass.deserializeBinaryFromReader);
+ msg.addBypass(value);
+ break;
+ case 19:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addTempoprogramdata(value);
+ break;
+ case 20:
+ var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedUint32() : [reader.readUint32()]);
+ for (var i = 0; i < values.length; i++) {
+ msg.addLayoutCode1(values[i]);
+ }
+ break;
+ case 21:
+ var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedUint32() : [reader.readUint32()]);
+ for (var i = 0; i < values.length; i++) {
+ msg.addLayoutCode2(values[i]);
+ }
+ break;
+ case 22:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addCreatedVersion(value);
+ break;
+ case 23:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addModifiedVersion(value);
+ break;
+ case 24:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addOldestCompatibleVersion(value);
+ break;
+ case 25:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addCloudId(value);
+ break;
+ case 26:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addDescription(value);
+ break;
+ case 27:
+ var value = new proto.StompModeAssignment;
+ reader.readMessage(value,proto.StompModeAssignment.deserializeBinaryFromReader);
+ msg.addStompModeAssignments(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.BinaryPreset.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.BinaryPreset.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.BinaryPreset} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.BinaryPreset.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getName();
+ if (f.length > 0) {
+ writer.writeString(
+ 2,
+ f
+ );
+ }
+ f = message.getHash();
+ if (f !== 0) {
+ writer.writeUint32(
+ 3,
+ f
+ );
+ }
+ f = message.getDate();
+ if (f.length > 0) {
+ writer.writeString(
+ 4,
+ f
+ );
+ }
+ f = message.getVolume();
+ if (f !== 0.0) {
+ writer.writeFloat(
+ 5,
+ f
+ );
+ }
+ f = message.getPan();
+ if (f !== 0.0) {
+ writer.writeFloat(
+ 6,
+ f
+ );
+ }
+ f = message.getDefaultScene();
+ if (f !== 0) {
+ writer.writeUint32(
+ 7,
+ f
+ );
+ }
+ f = message.getAuthorName();
+ if (f.length > 0) {
+ writer.writeString(
+ 8,
+ f
+ );
+ }
+ f = message.getAuthorId();
+ if (f.length > 0) {
+ writer.writeString(
+ 9,
+ f
+ );
+ }
+ f = message.getTempo();
+ if (f !== 0) {
+ writer.writeUint32(
+ 10,
+ f
+ );
+ }
+ f = message.getChainsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 11,
+ f,
+ proto.Chain.serializeBinaryToWriter
+ );
+ }
+ f = message.getTagsList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 12,
+ f
+ );
+ }
+ f = message.getLegacyStompModeStompDataList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 13,
+ f,
+ proto.LegacyStompModeStompData.serializeBinaryToWriter
+ );
+ }
+ f = message.getSceneTempoList();
+ if (f.length > 0) {
+ writer.writePackedUint32(
+ 14,
+ f
+ );
+ }
+ f = message.getSceneLabelsList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 15,
+ f
+ );
+ }
+ f = message.getMidiMessagesList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 16,
+ f,
+ proto.MidiMessageInfo.serializeBinaryToWriter
+ );
+ }
+ f = message.getMidiMessagesGeneralList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 17,
+ f,
+ proto.MidiMessageInfo.serializeBinaryToWriter
+ );
+ }
+ f = message.getBypassList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 18,
+ f,
+ proto.Bypass.serializeBinaryToWriter
+ );
+ }
+ f = message.getTempoprogramdataList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 19,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = message.getLayoutCode1List();
+ if (f.length > 0) {
+ writer.writePackedUint32(
+ 20,
+ f
+ );
+ }
+ f = message.getLayoutCode2List();
+ if (f.length > 0) {
+ writer.writePackedUint32(
+ 21,
+ f
+ );
+ }
+ f = message.getCreatedVersionList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 22,
+ f
+ );
+ }
+ f = message.getModifiedVersionList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 23,
+ f
+ );
+ }
+ f = message.getOldestCompatibleVersionList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 24,
+ f
+ );
+ }
+ f = message.getCloudIdList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 25,
+ f
+ );
+ }
+ f = message.getDescriptionList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 26,
+ f
+ );
+ }
+ f = message.getStompModeAssignmentsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 27,
+ f,
+ proto.StompModeAssignment.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional string name = 2;
+ * @return {string}
+ */
+proto.BinaryPreset.prototype.getName = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setName = function(value) {
+ return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional uint32 hash = 3;
+ * @return {number}
+ */
+proto.BinaryPreset.prototype.getHash = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setHash = function(value) {
+ return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional string date = 4;
+ * @return {string}
+ */
+proto.BinaryPreset.prototype.getDate = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setDate = function(value) {
+ return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional float volume = 5;
+ * @return {number}
+ */
+proto.BinaryPreset.prototype.getVolume = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setVolume = function(value) {
+ return jspb.Message.setProto3FloatField(this, 5, value);
+};
+
+
+/**
+ * optional float pan = 6;
+ * @return {number}
+ */
+proto.BinaryPreset.prototype.getPan = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 6, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setPan = function(value) {
+ return jspb.Message.setProto3FloatField(this, 6, value);
+};
+
+
+/**
+ * optional uint32 default_scene = 7;
+ * @return {number}
+ */
+proto.BinaryPreset.prototype.getDefaultScene = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setDefaultScene = function(value) {
+ return jspb.Message.setProto3IntField(this, 7, value);
+};
+
+
+/**
+ * optional string author_name = 8;
+ * @return {string}
+ */
+proto.BinaryPreset.prototype.getAuthorName = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setAuthorName = function(value) {
+ return jspb.Message.setProto3StringField(this, 8, value);
+};
+
+
+/**
+ * optional string author_id = 9;
+ * @return {string}
+ */
+proto.BinaryPreset.prototype.getAuthorId = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setAuthorId = function(value) {
+ return jspb.Message.setProto3StringField(this, 9, value);
+};
+
+
+/**
+ * optional uint32 tempo = 10;
+ * @return {number}
+ */
+proto.BinaryPreset.prototype.getTempo = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setTempo = function(value) {
+ return jspb.Message.setProto3IntField(this, 10, value);
+};
+
+
+/**
+ * repeated Chain chains = 11;
+ * @return {!Array<!proto.Chain>}
+ */
+proto.BinaryPreset.prototype.getChainsList = function() {
+ return /** @type{!Array<!proto.Chain>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Chain, 11));
+};
+
+
+/**
+ * @param {!Array<!proto.Chain>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setChainsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 11, value);
+};
+
+
+/**
+ * @param {!proto.Chain=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Chain}
+ */
+proto.BinaryPreset.prototype.addChains = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 11, opt_value, proto.Chain, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearChainsList = function() {
+ return this.setChainsList([]);
+};
+
+
+/**
+ * repeated string tags = 12;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getTagsList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 12));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setTagsList = function(value) {
+ return jspb.Message.setField(this, 12, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addTags = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 12, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearTagsList = function() {
+ return this.setTagsList([]);
+};
+
+
+/**
+ * repeated LegacyStompModeStompData legacy_stomp_mode_stomp_data = 13;
+ * @return {!Array<!proto.LegacyStompModeStompData>}
+ */
+proto.BinaryPreset.prototype.getLegacyStompModeStompDataList = function() {
+ return /** @type{!Array<!proto.LegacyStompModeStompData>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.LegacyStompModeStompData, 13));
+};
+
+
+/**
+ * @param {!Array<!proto.LegacyStompModeStompData>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setLegacyStompModeStompDataList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 13, value);
+};
+
+
+/**
+ * @param {!proto.LegacyStompModeStompData=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.LegacyStompModeStompData}
+ */
+proto.BinaryPreset.prototype.addLegacyStompModeStompData = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 13, opt_value, proto.LegacyStompModeStompData, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearLegacyStompModeStompDataList = function() {
+ return this.setLegacyStompModeStompDataList([]);
+};
+
+
+/**
+ * repeated uint32 scene_tempo = 14;
+ * @return {!Array<number>}
+ */
+proto.BinaryPreset.prototype.getSceneTempoList = function() {
+ return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 14));
+};
+
+
+/**
+ * @param {!Array<number>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setSceneTempoList = function(value) {
+ return jspb.Message.setField(this, 14, value || []);
+};
+
+
+/**
+ * @param {number} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addSceneTempo = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 14, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearSceneTempoList = function() {
+ return this.setSceneTempoList([]);
+};
+
+
+/**
+ * repeated string scene_labels = 15;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getSceneLabelsList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 15));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setSceneLabelsList = function(value) {
+ return jspb.Message.setField(this, 15, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addSceneLabels = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 15, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearSceneLabelsList = function() {
+ return this.setSceneLabelsList([]);
+};
+
+
+/**
+ * repeated MidiMessageInfo midi_messages = 16;
+ * @return {!Array<!proto.MidiMessageInfo>}
+ */
+proto.BinaryPreset.prototype.getMidiMessagesList = function() {
+ return /** @type{!Array<!proto.MidiMessageInfo>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.MidiMessageInfo, 16));
+};
+
+
+/**
+ * @param {!Array<!proto.MidiMessageInfo>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setMidiMessagesList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 16, value);
+};
+
+
+/**
+ * @param {!proto.MidiMessageInfo=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.MidiMessageInfo}
+ */
+proto.BinaryPreset.prototype.addMidiMessages = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 16, opt_value, proto.MidiMessageInfo, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearMidiMessagesList = function() {
+ return this.setMidiMessagesList([]);
+};
+
+
+/**
+ * repeated MidiMessageInfo midi_messages_general = 17;
+ * @return {!Array<!proto.MidiMessageInfo>}
+ */
+proto.BinaryPreset.prototype.getMidiMessagesGeneralList = function() {
+ return /** @type{!Array<!proto.MidiMessageInfo>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.MidiMessageInfo, 17));
+};
+
+
+/**
+ * @param {!Array<!proto.MidiMessageInfo>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setMidiMessagesGeneralList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 17, value);
+};
+
+
+/**
+ * @param {!proto.MidiMessageInfo=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.MidiMessageInfo}
+ */
+proto.BinaryPreset.prototype.addMidiMessagesGeneral = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 17, opt_value, proto.MidiMessageInfo, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearMidiMessagesGeneralList = function() {
+ return this.setMidiMessagesGeneralList([]);
+};
+
+
+/**
+ * repeated Bypass bypass = 18;
+ * @return {!Array<!proto.Bypass>}
+ */
+proto.BinaryPreset.prototype.getBypassList = function() {
+ return /** @type{!Array<!proto.Bypass>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Bypass, 18));
+};
+
+
+/**
+ * @param {!Array<!proto.Bypass>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setBypassList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 18, value);
+};
+
+
+/**
+ * @param {!proto.Bypass=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Bypass}
+ */
+proto.BinaryPreset.prototype.addBypass = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 18, opt_value, proto.Bypass, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearBypassList = function() {
+ return this.setBypassList([]);
+};
+
+
+/**
+ * repeated Model tempoProgramData = 19;
+ * @return {!Array<!proto.Model>}
+ */
+proto.BinaryPreset.prototype.getTempoprogramdataList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 19));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setTempoprogramdataList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 19, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.BinaryPreset.prototype.addTempoprogramdata = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 19, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearTempoprogramdataList = function() {
+ return this.setTempoprogramdataList([]);
+};
+
+
+/**
+ * repeated uint32 layout_code_1 = 20;
+ * @return {!Array<number>}
+ */
+proto.BinaryPreset.prototype.getLayoutCode1List = function() {
+ return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 20));
+};
+
+
+/**
+ * @param {!Array<number>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setLayoutCode1List = function(value) {
+ return jspb.Message.setField(this, 20, value || []);
+};
+
+
+/**
+ * @param {number} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addLayoutCode1 = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 20, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearLayoutCode1List = function() {
+ return this.setLayoutCode1List([]);
+};
+
+
+/**
+ * repeated uint32 layout_code_2 = 21;
+ * @return {!Array<number>}
+ */
+proto.BinaryPreset.prototype.getLayoutCode2List = function() {
+ return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 21));
+};
+
+
+/**
+ * @param {!Array<number>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setLayoutCode2List = function(value) {
+ return jspb.Message.setField(this, 21, value || []);
+};
+
+
+/**
+ * @param {number} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addLayoutCode2 = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 21, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearLayoutCode2List = function() {
+ return this.setLayoutCode2List([]);
+};
+
+
+/**
+ * repeated string created_version = 22;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getCreatedVersionList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 22));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setCreatedVersionList = function(value) {
+ return jspb.Message.setField(this, 22, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addCreatedVersion = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 22, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearCreatedVersionList = function() {
+ return this.setCreatedVersionList([]);
+};
+
+
+/**
+ * repeated string modified_version = 23;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getModifiedVersionList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 23));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setModifiedVersionList = function(value) {
+ return jspb.Message.setField(this, 23, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addModifiedVersion = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 23, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearModifiedVersionList = function() {
+ return this.setModifiedVersionList([]);
+};
+
+
+/**
+ * repeated string oldest_compatible_version = 24;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getOldestCompatibleVersionList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 24));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setOldestCompatibleVersionList = function(value) {
+ return jspb.Message.setField(this, 24, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addOldestCompatibleVersion = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 24, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearOldestCompatibleVersionList = function() {
+ return this.setOldestCompatibleVersionList([]);
+};
+
+
+/**
+ * repeated string cloud_id = 25;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getCloudIdList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 25));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setCloudIdList = function(value) {
+ return jspb.Message.setField(this, 25, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addCloudId = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 25, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearCloudIdList = function() {
+ return this.setCloudIdList([]);
+};
+
+
+/**
+ * repeated string description = 26;
+ * @return {!Array<string>}
+ */
+proto.BinaryPreset.prototype.getDescriptionList = function() {
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 26));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.setDescriptionList = function(value) {
+ return jspb.Message.setField(this, 26, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.addDescription = function(value, opt_index) {
+ return jspb.Message.addToRepeatedField(this, 26, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearDescriptionList = function() {
+ return this.setDescriptionList([]);
+};
+
+
+/**
+ * repeated StompModeAssignment stomp_mode_assignments = 27;
+ * @return {!Array<!proto.StompModeAssignment>}
+ */
+proto.BinaryPreset.prototype.getStompModeAssignmentsList = function() {
+ return /** @type{!Array<!proto.StompModeAssignment>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.StompModeAssignment, 27));
+};
+
+
+/**
+ * @param {!Array<!proto.StompModeAssignment>} value
+ * @return {!proto.BinaryPreset} returns this
+*/
+proto.BinaryPreset.prototype.setStompModeAssignmentsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 27, value);
+};
+
+
+/**
+ * @param {!proto.StompModeAssignment=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.StompModeAssignment}
+ */
+proto.BinaryPreset.prototype.addStompModeAssignments = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 27, opt_value, proto.StompModeAssignment, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BinaryPreset} returns this
+ */
+proto.BinaryPreset.prototype.clearStompModeAssignmentsList = function() {
+ return this.setStompModeAssignmentsList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.Chain.repeatedFields_ = [5,6,7,8,9,10,11,12,13];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.Chain.oneofGroups_ = [[1],[2],[14]];
+
+/**
+ * @enum {number}
+ */
+proto.Chain.InPortidCase = {
+ _IN_PORTID_NOT_SET: 0,
+ IN_PORTID: 1
+};
+
+/**
+ * @return {proto.Chain.InPortidCase}
+ */
+proto.Chain.prototype.getInPortidCase = function() {
+ return /** @type {proto.Chain.InPortidCase} */(jspb.Message.computeOneofCase(this, proto.Chain.oneofGroups_[0]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Chain.OutPortidCase = {
+ _OUT_PORTID_NOT_SET: 0,
+ OUT_PORTID: 2
+};
+
+/**
+ * @return {proto.Chain.OutPortidCase}
+ */
+proto.Chain.prototype.getOutPortidCase = function() {
+ return /** @type {proto.Chain.OutPortidCase} */(jspb.Message.computeOneofCase(this, proto.Chain.oneofGroups_[1]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Chain.RowCase = {
+ _ROW_NOT_SET: 0,
+ ROW: 14
+};
+
+/**
+ * @return {proto.Chain.RowCase}
+ */
+proto.Chain.prototype.getRowCase = function() {
+ return /** @type {proto.Chain.RowCase} */(jspb.Message.computeOneofCase(this, proto.Chain.oneofGroups_[2]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.Chain.prototype.toObject = function(opt_includeInstance) {
+ return proto.Chain.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.Chain} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Chain.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ modelsList: jspb.Message.toObjectList(msg.getModelsList(),
+ proto.Model.toObject, includeInstance),
+ splitControlPointsList: jspb.Message.toObjectList(msg.getSplitControlPointsList(),
+ proto.SplitControlPoints.toObject, includeInstance),
+ splitterList: jspb.Message.toObjectList(msg.getSplitterList(),
+ proto.Model.toObject, includeInstance),
+ mixerList: jspb.Message.toObjectList(msg.getMixerList(),
+ proto.Model.toObject, includeInstance),
+ outputControlList: jspb.Message.toObjectList(msg.getOutputControlList(),
+ proto.Model.toObject, includeInstance),
+ splitbypassList: jspb.Message.toObjectList(msg.getSplitbypassList(),
+ proto.SceneBypass.toObject, includeInstance),
+ mixbypassList: jspb.Message.toObjectList(msg.getMixbypassList(),
+ proto.SceneBypass.toObject, includeInstance),
+ combinedSplitterList: jspb.Message.toObjectList(msg.getCombinedSplitterList(),
+ proto.Model.toObject, includeInstance),
+ inputControlList: jspb.Message.toObjectList(msg.getInputControlList(),
+ proto.Model.toObject, includeInstance),
+ inPortid: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ outPortid: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ row: jspb.Message.getFieldWithDefault(msg, 14, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.Chain}
+ */
+proto.Chain.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.Chain;
+ return proto.Chain.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.Chain} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.Chain}
+ */
+proto.Chain.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 5:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addModels(value);
+ break;
+ case 6:
+ var value = new proto.SplitControlPoints;
+ reader.readMessage(value,proto.SplitControlPoints.deserializeBinaryFromReader);
+ msg.addSplitControlPoints(value);
+ break;
+ case 7:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addSplitter(value);
+ break;
+ case 8:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addMixer(value);
+ break;
+ case 9:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addOutputControl(value);
+ break;
+ case 10:
+ var value = new proto.SceneBypass;
+ reader.readMessage(value,proto.SceneBypass.deserializeBinaryFromReader);
+ msg.addSplitbypass(value);
+ break;
+ case 11:
+ var value = new proto.SceneBypass;
+ reader.readMessage(value,proto.SceneBypass.deserializeBinaryFromReader);
+ msg.addMixbypass(value);
+ break;
+ case 12:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addCombinedSplitter(value);
+ break;
+ case 13:
+ var value = new proto.Model;
+ reader.readMessage(value,proto.Model.deserializeBinaryFromReader);
+ msg.addInputControl(value);
+ break;
+ case 1:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setInPortid(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setOutPortid(value);
+ break;
+ case 14:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setRow(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.Chain.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.Chain.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.Chain} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Chain.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getModelsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 5,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = message.getSplitControlPointsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 6,
+ f,
+ proto.SplitControlPoints.serializeBinaryToWriter
+ );
+ }
+ f = message.getSplitterList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 7,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = message.getMixerList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 8,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = message.getOutputControlList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 9,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = message.getSplitbypassList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 10,
+ f,
+ proto.SceneBypass.serializeBinaryToWriter
+ );
+ }
+ f = message.getMixbypassList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 11,
+ f,
+ proto.SceneBypass.serializeBinaryToWriter
+ );
+ }
+ f = message.getCombinedSplitterList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 12,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = message.getInputControlList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 13,
+ f,
+ proto.Model.serializeBinaryToWriter
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 1));
+ if (f != null) {
+ writer.writeUint32(
+ 1,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeUint32(
+ 2,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 14));
+ if (f != null) {
+ writer.writeUint32(
+ 14,
+ f
+ );
+ }
+};
+
+
+/**
+ * repeated Model models = 5;
+ * @return {!Array<!proto.Model>}
+ */
+proto.Chain.prototype.getModelsList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setModelsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.Chain.prototype.addModels = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearModelsList = function() {
+ return this.setModelsList([]);
+};
+
+
+/**
+ * repeated SplitControlPoints split_control_points = 6;
+ * @return {!Array<!proto.SplitControlPoints>}
+ */
+proto.Chain.prototype.getSplitControlPointsList = function() {
+ return /** @type{!Array<!proto.SplitControlPoints>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.SplitControlPoints, 6));
+};
+
+
+/**
+ * @param {!Array<!proto.SplitControlPoints>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setSplitControlPointsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 6, value);
+};
+
+
+/**
+ * @param {!proto.SplitControlPoints=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.SplitControlPoints}
+ */
+proto.Chain.prototype.addSplitControlPoints = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.SplitControlPoints, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearSplitControlPointsList = function() {
+ return this.setSplitControlPointsList([]);
+};
+
+
+/**
+ * repeated Model splitter = 7;
+ * @return {!Array<!proto.Model>}
+ */
+proto.Chain.prototype.getSplitterList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 7));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setSplitterList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 7, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.Chain.prototype.addSplitter = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearSplitterList = function() {
+ return this.setSplitterList([]);
+};
+
+
+/**
+ * repeated Model mixer = 8;
+ * @return {!Array<!proto.Model>}
+ */
+proto.Chain.prototype.getMixerList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 8));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setMixerList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 8, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.Chain.prototype.addMixer = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 8, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearMixerList = function() {
+ return this.setMixerList([]);
+};
+
+
+/**
+ * repeated Model output_control = 9;
+ * @return {!Array<!proto.Model>}
+ */
+proto.Chain.prototype.getOutputControlList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 9));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setOutputControlList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 9, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.Chain.prototype.addOutputControl = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 9, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearOutputControlList = function() {
+ return this.setOutputControlList([]);
+};
+
+
+/**
+ * repeated SceneBypass splitBypass = 10;
+ * @return {!Array<!proto.SceneBypass>}
+ */
+proto.Chain.prototype.getSplitbypassList = function() {
+ return /** @type{!Array<!proto.SceneBypass>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.SceneBypass, 10));
+};
+
+
+/**
+ * @param {!Array<!proto.SceneBypass>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setSplitbypassList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 10, value);
+};
+
+
+/**
+ * @param {!proto.SceneBypass=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.SceneBypass}
+ */
+proto.Chain.prototype.addSplitbypass = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 10, opt_value, proto.SceneBypass, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearSplitbypassList = function() {
+ return this.setSplitbypassList([]);
+};
+
+
+/**
+ * repeated SceneBypass mixBypass = 11;
+ * @return {!Array<!proto.SceneBypass>}
+ */
+proto.Chain.prototype.getMixbypassList = function() {
+ return /** @type{!Array<!proto.SceneBypass>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.SceneBypass, 11));
+};
+
+
+/**
+ * @param {!Array<!proto.SceneBypass>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setMixbypassList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 11, value);
+};
+
+
+/**
+ * @param {!proto.SceneBypass=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.SceneBypass}
+ */
+proto.Chain.prototype.addMixbypass = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 11, opt_value, proto.SceneBypass, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearMixbypassList = function() {
+ return this.setMixbypassList([]);
+};
+
+
+/**
+ * repeated Model combined_splitter = 12;
+ * @return {!Array<!proto.Model>}
+ */
+proto.Chain.prototype.getCombinedSplitterList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 12));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setCombinedSplitterList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 12, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.Chain.prototype.addCombinedSplitter = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 12, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearCombinedSplitterList = function() {
+ return this.setCombinedSplitterList([]);
+};
+
+
+/**
+ * repeated Model input_control = 13;
+ * @return {!Array<!proto.Model>}
+ */
+proto.Chain.prototype.getInputControlList = function() {
+ return /** @type{!Array<!proto.Model>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Model, 13));
+};
+
+
+/**
+ * @param {!Array<!proto.Model>} value
+ * @return {!proto.Chain} returns this
+*/
+proto.Chain.prototype.setInputControlList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 13, value);
+};
+
+
+/**
+ * @param {!proto.Model=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Model}
+ */
+proto.Chain.prototype.addInputControl = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 13, opt_value, proto.Model, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearInputControlList = function() {
+ return this.setInputControlList([]);
+};
+
+
+/**
+ * optional uint32 in_portid = 1;
+ * @return {number}
+ */
+proto.Chain.prototype.getInPortid = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.setInPortid = function(value) {
+ return jspb.Message.setOneofField(this, 1, proto.Chain.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearInPortid = function() {
+ return jspb.Message.setOneofField(this, 1, proto.Chain.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Chain.prototype.hasInPortid = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional uint32 out_portid = 2;
+ * @return {number}
+ */
+proto.Chain.prototype.getOutPortid = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.setOutPortid = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.Chain.oneofGroups_[1], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearOutPortid = function() {
+ return jspb.Message.setOneofField(this, 2, proto.Chain.oneofGroups_[1], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Chain.prototype.hasOutPortid = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional uint32 row = 14;
+ * @return {number}
+ */
+proto.Chain.prototype.getRow = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 14, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.setRow = function(value) {
+ return jspb.Message.setOneofField(this, 14, proto.Chain.oneofGroups_[2], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Chain} returns this
+ */
+proto.Chain.prototype.clearRow = function() {
+ return jspb.Message.setOneofField(this, 14, proto.Chain.oneofGroups_[2], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Chain.prototype.hasRow = function() {
+ return jspb.Message.getField(this, 14) != null;
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.Model.repeatedFields_ = [2,3,4];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.Model.oneofGroups_ = [[1],[5]];
+
+/**
+ * @enum {number}
+ */
+proto.Model.HashCase = {
+ _HASH_NOT_SET: 0,
+ HASH: 1
+};
+
+/**
+ * @return {proto.Model.HashCase}
+ */
+proto.Model.prototype.getHashCase = function() {
+ return /** @type {proto.Model.HashCase} */(jspb.Message.computeOneofCase(this, proto.Model.oneofGroups_[0]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Model.ColumnCase = {
+ _COLUMN_NOT_SET: 0,
+ COLUMN: 5
+};
+
+/**
+ * @return {proto.Model.ColumnCase}
+ */
+proto.Model.prototype.getColumnCase = function() {
+ return /** @type {proto.Model.ColumnCase} */(jspb.Message.computeOneofCase(this, proto.Model.oneofGroups_[1]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.Model.prototype.toObject = function(opt_includeInstance) {
+ return proto.Model.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.Model} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Model.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ paramsList: jspb.Message.toObjectList(msg.getParamsList(),
+ proto.Param.toObject, includeInstance),
+ bypassExpressionList: jspb.Message.toObjectList(msg.getBypassExpressionList(),
+ proto.Expression.toObject, includeInstance),
+ expressionBypassInfoList: jspb.Message.toObjectList(msg.getExpressionBypassInfoList(),
+ proto.ExpressionBypassInfo.toObject, includeInstance),
+ hash: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ column: jspb.Message.getFieldWithDefault(msg, 5, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.Model}
+ */
+proto.Model.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.Model;
+ return proto.Model.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.Model} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.Model}
+ */
+proto.Model.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 2:
+ var value = new proto.Param;
+ reader.readMessage(value,proto.Param.deserializeBinaryFromReader);
+ msg.addParams(value);
+ break;
+ case 3:
+ var value = new proto.Expression;
+ reader.readMessage(value,proto.Expression.deserializeBinaryFromReader);
+ msg.addBypassExpression(value);
+ break;
+ case 4:
+ var value = new proto.ExpressionBypassInfo;
+ reader.readMessage(value,proto.ExpressionBypassInfo.deserializeBinaryFromReader);
+ msg.addExpressionBypassInfo(value);
+ break;
+ case 1:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setHash(value);
+ break;
+ case 5:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setColumn(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.Model.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.Model.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.Model} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Model.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getParamsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 2,
+ f,
+ proto.Param.serializeBinaryToWriter
+ );
+ }
+ f = message.getBypassExpressionList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 3,
+ f,
+ proto.Expression.serializeBinaryToWriter
+ );
+ }
+ f = message.getExpressionBypassInfoList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 4,
+ f,
+ proto.ExpressionBypassInfo.serializeBinaryToWriter
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 1));
+ if (f != null) {
+ writer.writeUint32(
+ 1,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 5));
+ if (f != null) {
+ writer.writeUint32(
+ 5,
+ f
+ );
+ }
+};
+
+
+/**
+ * repeated Param params = 2;
+ * @return {!Array<!proto.Param>}
+ */
+proto.Model.prototype.getParamsList = function() {
+ return /** @type{!Array<!proto.Param>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Param, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.Param>} value
+ * @return {!proto.Model} returns this
+*/
+proto.Model.prototype.setParamsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.Param=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Param}
+ */
+proto.Model.prototype.addParams = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Param, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.clearParamsList = function() {
+ return this.setParamsList([]);
+};
+
+
+/**
+ * repeated Expression bypass_expression = 3;
+ * @return {!Array<!proto.Expression>}
+ */
+proto.Model.prototype.getBypassExpressionList = function() {
+ return /** @type{!Array<!proto.Expression>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.Expression, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.Expression>} value
+ * @return {!proto.Model} returns this
+*/
+proto.Model.prototype.setBypassExpressionList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.Expression=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.Expression}
+ */
+proto.Model.prototype.addBypassExpression = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Expression, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.clearBypassExpressionList = function() {
+ return this.setBypassExpressionList([]);
+};
+
+
+/**
+ * repeated ExpressionBypassInfo expression_bypass_info = 4;
+ * @return {!Array<!proto.ExpressionBypassInfo>}
+ */
+proto.Model.prototype.getExpressionBypassInfoList = function() {
+ return /** @type{!Array<!proto.ExpressionBypassInfo>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.ExpressionBypassInfo, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.ExpressionBypassInfo>} value
+ * @return {!proto.Model} returns this
+*/
+proto.Model.prototype.setExpressionBypassInfoList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.ExpressionBypassInfo=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.ExpressionBypassInfo}
+ */
+proto.Model.prototype.addExpressionBypassInfo = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.ExpressionBypassInfo, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.clearExpressionBypassInfoList = function() {
+ return this.setExpressionBypassInfoList([]);
+};
+
+
+/**
+ * optional uint32 hash = 1;
+ * @return {number}
+ */
+proto.Model.prototype.getHash = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.setHash = function(value) {
+ return jspb.Message.setOneofField(this, 1, proto.Model.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.clearHash = function() {
+ return jspb.Message.setOneofField(this, 1, proto.Model.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Model.prototype.hasHash = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional uint32 column = 5;
+ * @return {number}
+ */
+proto.Model.prototype.getColumn = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.setColumn = function(value) {
+ return jspb.Message.setOneofField(this, 5, proto.Model.oneofGroups_[1], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Model} returns this
+ */
+proto.Model.prototype.clearColumn = function() {
+ return jspb.Message.setOneofField(this, 5, proto.Model.oneofGroups_[1], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Model.prototype.hasColumn = function() {
+ return jspb.Message.getField(this, 5) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.SplitControlPoints.prototype.toObject = function(opt_includeInstance) {
+ return proto.SplitControlPoints.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.SplitControlPoints} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.SplitControlPoints.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ split: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ mix: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.SplitControlPoints}
+ */
+proto.SplitControlPoints.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.SplitControlPoints;
+ return proto.SplitControlPoints.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.SplitControlPoints} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.SplitControlPoints}
+ */
+proto.SplitControlPoints.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setSplit(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setMix(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.SplitControlPoints.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.SplitControlPoints.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.SplitControlPoints} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.SplitControlPoints.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getSplit();
+ if (f !== 0) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = message.getMix();
+ if (f !== 0) {
+ writer.writeInt32(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional int32 split = 1;
+ * @return {number}
+ */
+proto.SplitControlPoints.prototype.getSplit = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.SplitControlPoints} returns this
+ */
+proto.SplitControlPoints.prototype.setSplit = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional int32 mix = 2;
+ * @return {number}
+ */
+proto.SplitControlPoints.prototype.getMix = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.SplitControlPoints} returns this
+ */
+proto.SplitControlPoints.prototype.setMix = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.Bypass.repeatedFields_ = [1];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.Bypass.oneofGroups_ = [[2]];
+
+/**
+ * @enum {number}
+ */
+proto.Bypass.RowCase = {
+ _ROW_NOT_SET: 0,
+ ROW: 2
+};
+
+/**
+ * @return {proto.Bypass.RowCase}
+ */
+proto.Bypass.prototype.getRowCase = function() {
+ return /** @type {proto.Bypass.RowCase} */(jspb.Message.computeOneofCase(this, proto.Bypass.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.Bypass.prototype.toObject = function(opt_includeInstance) {
+ return proto.Bypass.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.Bypass} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Bypass.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ colbypassList: jspb.Message.toObjectList(msg.getColbypassList(),
+ proto.ColBypass.toObject, includeInstance),
+ row: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.Bypass}
+ */
+proto.Bypass.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.Bypass;
+ return proto.Bypass.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.Bypass} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.Bypass}
+ */
+proto.Bypass.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = new proto.ColBypass;
+ reader.readMessage(value,proto.ColBypass.deserializeBinaryFromReader);
+ msg.addColbypass(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setRow(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.Bypass.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.Bypass.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.Bypass} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Bypass.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getColbypassList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 1,
+ f,
+ proto.ColBypass.serializeBinaryToWriter
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeUint32(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * repeated ColBypass colBypass = 1;
+ * @return {!Array<!proto.ColBypass>}
+ */
+proto.Bypass.prototype.getColbypassList = function() {
+ return /** @type{!Array<!proto.ColBypass>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.ColBypass, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.ColBypass>} value
+ * @return {!proto.Bypass} returns this
+*/
+proto.Bypass.prototype.setColbypassList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.ColBypass=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.ColBypass}
+ */
+proto.Bypass.prototype.addColbypass = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.ColBypass, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Bypass} returns this
+ */
+proto.Bypass.prototype.clearColbypassList = function() {
+ return this.setColbypassList([]);
+};
+
+
+/**
+ * optional uint32 row = 2;
+ * @return {number}
+ */
+proto.Bypass.prototype.getRow = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Bypass} returns this
+ */
+proto.Bypass.prototype.setRow = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.Bypass.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Bypass} returns this
+ */
+proto.Bypass.prototype.clearRow = function() {
+ return jspb.Message.setOneofField(this, 2, proto.Bypass.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Bypass.prototype.hasRow = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.ColBypass.repeatedFields_ = [1];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.ColBypass.oneofGroups_ = [[2]];
+
+/**
+ * @enum {number}
+ */
+proto.ColBypass.ColumnCase = {
+ _COLUMN_NOT_SET: 0,
+ COLUMN: 2
+};
+
+/**
+ * @return {proto.ColBypass.ColumnCase}
+ */
+proto.ColBypass.prototype.getColumnCase = function() {
+ return /** @type {proto.ColBypass.ColumnCase} */(jspb.Message.computeOneofCase(this, proto.ColBypass.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.ColBypass.prototype.toObject = function(opt_includeInstance) {
+ return proto.ColBypass.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.ColBypass} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ColBypass.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ scenebypassList: jspb.Message.toObjectList(msg.getScenebypassList(),
+ proto.SceneBypass.toObject, includeInstance),
+ column: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.ColBypass}
+ */
+proto.ColBypass.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.ColBypass;
+ return proto.ColBypass.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.ColBypass} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.ColBypass}
+ */
+proto.ColBypass.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = new proto.SceneBypass;
+ reader.readMessage(value,proto.SceneBypass.deserializeBinaryFromReader);
+ msg.addScenebypass(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setColumn(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.ColBypass.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.ColBypass.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.ColBypass} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ColBypass.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getScenebypassList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 1,
+ f,
+ proto.SceneBypass.serializeBinaryToWriter
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeUint32(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * repeated SceneBypass sceneBypass = 1;
+ * @return {!Array<!proto.SceneBypass>}
+ */
+proto.ColBypass.prototype.getScenebypassList = function() {
+ return /** @type{!Array<!proto.SceneBypass>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.SceneBypass, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.SceneBypass>} value
+ * @return {!proto.ColBypass} returns this
+*/
+proto.ColBypass.prototype.setScenebypassList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.SceneBypass=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.SceneBypass}
+ */
+proto.ColBypass.prototype.addScenebypass = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.SceneBypass, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.ColBypass} returns this
+ */
+proto.ColBypass.prototype.clearScenebypassList = function() {
+ return this.setScenebypassList([]);
+};
+
+
+/**
+ * optional uint32 column = 2;
+ * @return {number}
+ */
+proto.ColBypass.prototype.getColumn = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ColBypass} returns this
+ */
+proto.ColBypass.prototype.setColumn = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.ColBypass.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.ColBypass} returns this
+ */
+proto.ColBypass.prototype.clearColumn = function() {
+ return jspb.Message.setOneofField(this, 2, proto.ColBypass.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.ColBypass.prototype.hasColumn = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.SceneBypass.prototype.toObject = function(opt_includeInstance) {
+ return proto.SceneBypass.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.SceneBypass} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.SceneBypass.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ bypass: jspb.Message.getBooleanFieldWithDefault(msg, 1, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.SceneBypass}
+ */
+proto.SceneBypass.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.SceneBypass;
+ return proto.SceneBypass.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.SceneBypass} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.SceneBypass}
+ */
+proto.SceneBypass.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setBypass(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.SceneBypass.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.SceneBypass.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.SceneBypass} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.SceneBypass.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getBypass();
+ if (f) {
+ writer.writeBool(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional bool bypass = 1;
+ * @return {boolean}
+ */
+proto.SceneBypass.prototype.getBypass = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.SceneBypass} returns this
+ */
+proto.SceneBypass.prototype.setBypass = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 1, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.Param.repeatedFields_ = [5];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.Param.oneofGroups_ = [[1],[2],[3],[4],[6]];
+
+/**
+ * @enum {number}
+ */
+proto.Param.ExpressionCase = {
+ _EXPRESSION_NOT_SET: 0,
+ EXPRESSION: 1
+};
+
+/**
+ * @return {proto.Param.ExpressionCase}
+ */
+proto.Param.prototype.getExpressionCase = function() {
+ return /** @type {proto.Param.ExpressionCase} */(jspb.Message.computeOneofCase(this, proto.Param.oneofGroups_[0]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Param.ExpressionMinCase = {
+ _EXPRESSION_MIN_NOT_SET: 0,
+ EXPRESSION_MIN: 2
+};
+
+/**
+ * @return {proto.Param.ExpressionMinCase}
+ */
+proto.Param.prototype.getExpressionMinCase = function() {
+ return /** @type {proto.Param.ExpressionMinCase} */(jspb.Message.computeOneofCase(this, proto.Param.oneofGroups_[1]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Param.ExpressionMaxCase = {
+ _EXPRESSION_MAX_NOT_SET: 0,
+ EXPRESSION_MAX: 3
+};
+
+/**
+ * @return {proto.Param.ExpressionMaxCase}
+ */
+proto.Param.prototype.getExpressionMaxCase = function() {
+ return /** @type {proto.Param.ExpressionMaxCase} */(jspb.Message.computeOneofCase(this, proto.Param.oneofGroups_[2]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Param.SceneModeCase = {
+ _SCENE_MODE_NOT_SET: 0,
+ SCENE_MODE: 4
+};
+
+/**
+ * @return {proto.Param.SceneModeCase}
+ */
+proto.Param.prototype.getSceneModeCase = function() {
+ return /** @type {proto.Param.SceneModeCase} */(jspb.Message.computeOneofCase(this, proto.Param.oneofGroups_[3]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.Param.IndexCase = {
+ _INDEX_NOT_SET: 0,
+ INDEX: 6
+};
+
+/**
+ * @return {proto.Param.IndexCase}
+ */
+proto.Param.prototype.getIndexCase = function() {
+ return /** @type {proto.Param.IndexCase} */(jspb.Message.computeOneofCase(this, proto.Param.oneofGroups_[4]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.Param.prototype.toObject = function(opt_includeInstance) {
+ return proto.Param.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.Param} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Param.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ paramValuesList: jspb.Message.toObjectList(msg.getParamValuesList(),
+ proto.ParamValue.toObject, includeInstance),
+ expression: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ expressionMin: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),
+ expressionMax: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0),
+ sceneMode: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),
+ index: jspb.Message.getFieldWithDefault(msg, 6, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.Param}
+ */
+proto.Param.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.Param;
+ return proto.Param.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.Param} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.Param}
+ */
+proto.Param.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 5:
+ var value = new proto.ParamValue;
+ reader.readMessage(value,proto.ParamValue.deserializeBinaryFromReader);
+ msg.addParamValues(value);
+ break;
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setExpression(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setExpressionMin(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setExpressionMax(value);
+ break;
+ case 4:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setSceneMode(value);
+ break;
+ case 6:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setIndex(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.Param.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.Param.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.Param} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Param.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getParamValuesList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 5,
+ f,
+ proto.ParamValue.serializeBinaryToWriter
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 1));
+ if (f != null) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeFloat(
+ 2,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 3));
+ if (f != null) {
+ writer.writeFloat(
+ 3,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 4));
+ if (f != null) {
+ writer.writeBool(
+ 4,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 6));
+ if (f != null) {
+ writer.writeUint32(
+ 6,
+ f
+ );
+ }
+};
+
+
+/**
+ * repeated ParamValue param_values = 5;
+ * @return {!Array<!proto.ParamValue>}
+ */
+proto.Param.prototype.getParamValuesList = function() {
+ return /** @type{!Array<!proto.ParamValue>} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.ParamValue, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.ParamValue>} value
+ * @return {!proto.Param} returns this
+*/
+proto.Param.prototype.setParamValuesList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.ParamValue=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.ParamValue}
+ */
+proto.Param.prototype.addParamValues = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.ParamValue, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.clearParamValuesList = function() {
+ return this.setParamValuesList([]);
+};
+
+
+/**
+ * optional int32 expression = 1;
+ * @return {number}
+ */
+proto.Param.prototype.getExpression = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.setExpression = function(value) {
+ return jspb.Message.setOneofField(this, 1, proto.Param.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.clearExpression = function() {
+ return jspb.Message.setOneofField(this, 1, proto.Param.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Param.prototype.hasExpression = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional float expression_min = 2;
+ * @return {number}
+ */
+proto.Param.prototype.getExpressionMin = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.setExpressionMin = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.Param.oneofGroups_[1], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.clearExpressionMin = function() {
+ return jspb.Message.setOneofField(this, 2, proto.Param.oneofGroups_[1], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Param.prototype.hasExpressionMin = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional float expression_max = 3;
+ * @return {number}
+ */
+proto.Param.prototype.getExpressionMax = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.setExpressionMax = function(value) {
+ return jspb.Message.setOneofField(this, 3, proto.Param.oneofGroups_[2], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.clearExpressionMax = function() {
+ return jspb.Message.setOneofField(this, 3, proto.Param.oneofGroups_[2], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Param.prototype.hasExpressionMax = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional bool scene_mode = 4;
+ * @return {boolean}
+ */
+proto.Param.prototype.getSceneMode = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.setSceneMode = function(value) {
+ return jspb.Message.setOneofField(this, 4, proto.Param.oneofGroups_[3], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.clearSceneMode = function() {
+ return jspb.Message.setOneofField(this, 4, proto.Param.oneofGroups_[3], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Param.prototype.hasSceneMode = function() {
+ return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional uint32 index = 6;
+ * @return {number}
+ */
+proto.Param.prototype.getIndex = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.setIndex = function(value) {
+ return jspb.Message.setOneofField(this, 6, proto.Param.oneofGroups_[4], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.Param} returns this
+ */
+proto.Param.prototype.clearIndex = function() {
+ return jspb.Message.setOneofField(this, 6, proto.Param.oneofGroups_[4], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.Param.prototype.hasIndex = function() {
+ return jspb.Message.getField(this, 6) != null;
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
+ */
+proto.ParamValue.oneofGroups_ = [[1,2,3]];
+
+/**
+ * @enum {number}
+ */
+proto.ParamValue.ValueCase = {
+ VALUE_NOT_SET: 0,
+ INT_VALUE: 1,
+ FLOAT_VALUE: 2,
+ STRING_VALUE: 3
+};
+
+/**
+ * @return {proto.ParamValue.ValueCase}
+ */
+proto.ParamValue.prototype.getValueCase = function() {
+ return /** @type {proto.ParamValue.ValueCase} */(jspb.Message.computeOneofCase(this, proto.ParamValue.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.ParamValue.prototype.toObject = function(opt_includeInstance) {
+ return proto.ParamValue.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.ParamValue} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ParamValue.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ intValue: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ floatValue: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),
+ stringValue: jspb.Message.getFieldWithDefault(msg, 3, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.ParamValue}
+ */
+proto.ParamValue.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.ParamValue;
+ return proto.ParamValue.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.ParamValue} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.ParamValue}
+ */
+proto.ParamValue.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setIntValue(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setFloatValue(value);
+ break;
+ case 3:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setStringValue(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.ParamValue.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.ParamValue.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.ParamValue} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ParamValue.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = /** @type {number} */ (jspb.Message.getField(message, 1));
+ if (f != null) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeFloat(
+ 2,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 3));
+ if (f != null) {
+ writer.writeString(
+ 3,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional int32 int_value = 1;
+ * @return {number}
+ */
+proto.ParamValue.prototype.getIntValue = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ParamValue} returns this
+ */
+proto.ParamValue.prototype.setIntValue = function(value) {
+ return jspb.Message.setOneofField(this, 1, proto.ParamValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.ParamValue} returns this
+ */
+proto.ParamValue.prototype.clearIntValue = function() {
+ return jspb.Message.setOneofField(this, 1, proto.ParamValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.ParamValue.prototype.hasIntValue = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional float float_value = 2;
+ * @return {number}
+ */
+proto.ParamValue.prototype.getFloatValue = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ParamValue} returns this
+ */
+proto.ParamValue.prototype.setFloatValue = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.ParamValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.ParamValue} returns this
+ */
+proto.ParamValue.prototype.clearFloatValue = function() {
+ return jspb.Message.setOneofField(this, 2, proto.ParamValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.ParamValue.prototype.hasFloatValue = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional string string_value = 3;
+ * @return {string}
+ */
+proto.ParamValue.prototype.getStringValue = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ParamValue} returns this
+ */
+proto.ParamValue.prototype.setStringValue = function(value) {
+ return jspb.Message.setOneofField(this, 3, proto.ParamValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.ParamValue} returns this
+ */
+proto.ParamValue.prototype.clearStringValue = function() {
+ return jspb.Message.setOneofField(this, 3, proto.ParamValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.ParamValue.prototype.hasStringValue = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.LegacyStompModeStompData.prototype.toObject = function(opt_includeInstance) {
+ return proto.LegacyStompModeStompData.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.LegacyStompModeStompData} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.LegacyStompModeStompData.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ row: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ column: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.LegacyStompModeStompData}
+ */
+proto.LegacyStompModeStompData.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.LegacyStompModeStompData;
+ return proto.LegacyStompModeStompData.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.LegacyStompModeStompData} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.LegacyStompModeStompData}
+ */
+proto.LegacyStompModeStompData.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setRow(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setColumn(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.LegacyStompModeStompData.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.LegacyStompModeStompData.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.LegacyStompModeStompData} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.LegacyStompModeStompData.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getRow();
+ if (f !== 0) {
+ writer.writeUint32(
+ 1,
+ f
+ );
+ }
+ f = message.getColumn();
+ if (f !== 0) {
+ writer.writeUint32(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional uint32 row = 1;
+ * @return {number}
+ */
+proto.LegacyStompModeStompData.prototype.getRow = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.LegacyStompModeStompData} returns this
+ */
+proto.LegacyStompModeStompData.prototype.setRow = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 column = 2;
+ * @return {number}
+ */
+proto.LegacyStompModeStompData.prototype.getColumn = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.LegacyStompModeStompData} returns this
+ */
+proto.LegacyStompModeStompData.prototype.setColumn = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.StompModeAssignment.prototype.toObject = function(opt_includeInstance) {
+ return proto.StompModeAssignment.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.StompModeAssignment} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.StompModeAssignment.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ row: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ column: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ stompIndex: jspb.Message.getFieldWithDefault(msg, 3, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.StompModeAssignment}
+ */
+proto.StompModeAssignment.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.StompModeAssignment;
+ return proto.StompModeAssignment.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.StompModeAssignment} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.StompModeAssignment}
+ */
+proto.StompModeAssignment.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setRow(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setColumn(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setStompIndex(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.StompModeAssignment.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.StompModeAssignment.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.StompModeAssignment} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.StompModeAssignment.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getRow();
+ if (f !== 0) {
+ writer.writeUint32(
+ 1,
+ f
+ );
+ }
+ f = message.getColumn();
+ if (f !== 0) {
+ writer.writeUint32(
+ 2,
+ f
+ );
+ }
+ f = message.getStompIndex();
+ if (f !== 0) {
+ writer.writeUint32(
+ 3,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional uint32 row = 1;
+ * @return {number}
+ */
+proto.StompModeAssignment.prototype.getRow = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.StompModeAssignment} returns this
+ */
+proto.StompModeAssignment.prototype.setRow = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 column = 2;
+ * @return {number}
+ */
+proto.StompModeAssignment.prototype.getColumn = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.StompModeAssignment} returns this
+ */
+proto.StompModeAssignment.prototype.setColumn = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional uint32 stomp_index = 3;
+ * @return {number}
+ */
+proto.StompModeAssignment.prototype.getStompIndex = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.StompModeAssignment} returns this
+ */
+proto.StompModeAssignment.prototype.setStompIndex = function(value) {
+ return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.MidiMessageInfo.prototype.toObject = function(opt_includeInstance) {
+ return proto.MidiMessageInfo.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.MidiMessageInfo} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.MidiMessageInfo.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ type: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ channel: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ param1: jspb.Message.getFieldWithDefault(msg, 3, 0),
+ param2: jspb.Message.getFieldWithDefault(msg, 4, 0),
+ param3: jspb.Message.getFieldWithDefault(msg, 5, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.MidiMessageInfo}
+ */
+proto.MidiMessageInfo.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.MidiMessageInfo;
+ return proto.MidiMessageInfo.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.MidiMessageInfo} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.MidiMessageInfo}
+ */
+proto.MidiMessageInfo.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setType(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setChannel(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setParam1(value);
+ break;
+ case 4:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setParam2(value);
+ break;
+ case 5:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setParam3(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.MidiMessageInfo.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.MidiMessageInfo.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.MidiMessageInfo} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.MidiMessageInfo.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getType();
+ if (f !== 0) {
+ writer.writeUint32(
+ 1,
+ f
+ );
+ }
+ f = message.getChannel();
+ if (f !== 0) {
+ writer.writeUint32(
+ 2,
+ f
+ );
+ }
+ f = message.getParam1();
+ if (f !== 0) {
+ writer.writeUint32(
+ 3,
+ f
+ );
+ }
+ f = message.getParam2();
+ if (f !== 0) {
+ writer.writeUint32(
+ 4,
+ f
+ );
+ }
+ f = message.getParam3();
+ if (f !== 0) {
+ writer.writeUint32(
+ 5,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional uint32 type = 1;
+ * @return {number}
+ */
+proto.MidiMessageInfo.prototype.getType = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.MidiMessageInfo} returns this
+ */
+proto.MidiMessageInfo.prototype.setType = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 channel = 2;
+ * @return {number}
+ */
+proto.MidiMessageInfo.prototype.getChannel = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.MidiMessageInfo} returns this
+ */
+proto.MidiMessageInfo.prototype.setChannel = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional uint32 param1 = 3;
+ * @return {number}
+ */
+proto.MidiMessageInfo.prototype.getParam1 = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.MidiMessageInfo} returns this
+ */
+proto.MidiMessageInfo.prototype.setParam1 = function(value) {
+ return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional uint32 param2 = 4;
+ * @return {number}
+ */
+proto.MidiMessageInfo.prototype.getParam2 = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.MidiMessageInfo} returns this
+ */
+proto.MidiMessageInfo.prototype.setParam2 = function(value) {
+ return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+/**
+ * optional uint32 param3 = 5;
+ * @return {number}
+ */
+proto.MidiMessageInfo.prototype.getParam3 = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.MidiMessageInfo} returns this
+ */
+proto.MidiMessageInfo.prototype.setParam3 = function(value) {
+ return jspb.Message.setProto3IntField(this, 5, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.Expression.prototype.toObject = function(opt_includeInstance) {
+ return proto.Expression.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.Expression} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Expression.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ expression: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ expressionMin: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),
+ expressionMax: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.Expression}
+ */
+proto.Expression.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.Expression;
+ return proto.Expression.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.Expression} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.Expression}
+ */
+proto.Expression.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setExpression(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setExpressionMin(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readFloat());
+ msg.setExpressionMax(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.Expression.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.Expression.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.Expression} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Expression.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getExpression();
+ if (f !== 0) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = message.getExpressionMin();
+ if (f !== 0.0) {
+ writer.writeFloat(
+ 2,
+ f
+ );
+ }
+ f = message.getExpressionMax();
+ if (f !== 0.0) {
+ writer.writeFloat(
+ 3,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional int32 expression = 1;
+ * @return {number}
+ */
+proto.Expression.prototype.getExpression = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Expression} returns this
+ */
+proto.Expression.prototype.setExpression = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional float expression_min = 2;
+ * @return {number}
+ */
+proto.Expression.prototype.getExpressionMin = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Expression} returns this
+ */
+proto.Expression.prototype.setExpressionMin = function(value) {
+ return jspb.Message.setProto3FloatField(this, 2, value);
+};
+
+
+/**
+ * optional float expression_max = 3;
+ * @return {number}
+ */
+proto.Expression.prototype.getExpressionMax = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.Expression} returns this
+ */
+proto.Expression.prototype.setExpressionMax = function(value) {
+ return jspb.Message.setProto3FloatField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.ExpressionBypassInfo.prototype.toObject = function(opt_includeInstance) {
+ return proto.ExpressionBypassInfo.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.ExpressionBypassInfo} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ExpressionBypassInfo.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ type: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ invert: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
+ delayMs: jspb.Message.getFieldWithDefault(msg, 3, 0),
+ latchEmulation: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.ExpressionBypassInfo}
+ */
+proto.ExpressionBypassInfo.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.ExpressionBypassInfo;
+ return proto.ExpressionBypassInfo.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.ExpressionBypassInfo} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.ExpressionBypassInfo}
+ */
+proto.ExpressionBypassInfo.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setType(value);
+ break;
+ case 2:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setInvert(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readUint32());
+ msg.setDelayMs(value);
+ break;
+ case 4:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setLatchEmulation(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.ExpressionBypassInfo.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.ExpressionBypassInfo.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.ExpressionBypassInfo} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ExpressionBypassInfo.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getType();
+ if (f !== 0) {
+ writer.writeUint32(
+ 1,
+ f
+ );
+ }
+ f = message.getInvert();
+ if (f) {
+ writer.writeBool(
+ 2,
+ f
+ );
+ }
+ f = message.getDelayMs();
+ if (f !== 0) {
+ writer.writeUint32(
+ 3,
+ f
+ );
+ }
+ f = message.getLatchEmulation();
+ if (f) {
+ writer.writeBool(
+ 4,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional uint32 type = 1;
+ * @return {number}
+ */
+proto.ExpressionBypassInfo.prototype.getType = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ExpressionBypassInfo} returns this
+ */
+proto.ExpressionBypassInfo.prototype.setType = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional bool invert = 2;
+ * @return {boolean}
+ */
+proto.ExpressionBypassInfo.prototype.getInvert = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.ExpressionBypassInfo} returns this
+ */
+proto.ExpressionBypassInfo.prototype.setInvert = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 2, value);
+};
+
+
+/**
+ * optional uint32 delay_ms = 3;
+ * @return {number}
+ */
+proto.ExpressionBypassInfo.prototype.getDelayMs = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ExpressionBypassInfo} returns this
+ */
+proto.ExpressionBypassInfo.prototype.setDelayMs = function(value) {
+ return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional bool latch_emulation = 4;
+ * @return {boolean}
+ */
+proto.ExpressionBypassInfo.prototype.getLatchEmulation = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.ExpressionBypassInfo} returns this
+ */
+proto.ExpressionBypassInfo.prototype.setLatchEmulation = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 4, value);
+};
+
+
+goog.object.extend(exports, proto);
diff --git a/Desktop Editor/src/models/Presets/index.ts b/Desktop Editor/src/models/Presets/index.ts
new file mode 100644
index 0000000..669931b
--- /dev/null
+++ b/Desktop Editor/src/models/Presets/index.ts
@@ -0,0 +1 @@
+export * from './Preset_pb'
diff --git a/Desktop Editor/src/protos/Preset.proto b/Desktop Editor/src/protos/Preset.proto
new file mode 100644
index 0000000..5fd8174
--- /dev/null
+++ b/Desktop Editor/src/protos/Preset.proto
@@ -0,0 +1,157 @@
+syntax = "proto3";
+
+message BinaryPreset {
+ string name = 2;
+ uint32 hash = 3;
+ string date = 4;
+ float volume = 5;
+ float pan = 6;
+ uint32 default_scene = 7;
+ string author_name = 8;
+ string author_id = 9;
+ uint32 tempo = 10;
+ repeated Chain chains = 11;
+ repeated string tags = 12;
+ repeated LegacyStompModeStompData legacy_stomp_mode_stomp_data = 13;
+ repeated uint32 scene_tempo = 14;
+ repeated string scene_labels = 15;
+ repeated MidiMessageInfo midi_messages = 16;
+ repeated MidiMessageInfo midi_messages_general = 17;
+ repeated Bypass bypass = 18;
+ repeated Model tempoProgramData = 19;
+ repeated uint32 layout_code_1 = 20;
+ repeated uint32 layout_code_2 = 21;
+ repeated string created_version = 22;
+ repeated string modified_version = 23;
+ repeated string oldest_compatible_version = 24;
+ repeated string cloud_id = 25;
+ repeated string description = 26;
+ repeated StompModeAssignment stomp_mode_assignments = 27;
+}
+
+message Chain {
+ repeated Model models = 5;
+ repeated SplitControlPoints split_control_points = 6;
+ repeated Model splitter = 7;
+ repeated Model mixer = 8;
+ repeated Model output_control = 9;
+ repeated SceneBypass splitBypass = 10;
+ repeated SceneBypass mixBypass = 11;
+ repeated Model combined_splitter = 12;
+ repeated Model input_control = 13;
+
+ oneof _in_portid {
+ uint32 in_portid = 1;
+ }
+
+ oneof _out_portid {
+ uint32 out_portid = 2;
+ }
+
+ oneof _row {
+ uint32 row = 14;
+ }
+}
+
+message Model {
+ repeated Param params = 2;
+ repeated Expression bypass_expression = 3;
+ repeated ExpressionBypassInfo expression_bypass_info = 4;
+
+ oneof _hash {
+ uint32 hash = 1;
+ }
+
+ oneof _column {
+ uint32 column = 5;
+ }
+}
+
+message SplitControlPoints {
+ int32 split = 1;
+ int32 mix = 2;
+}
+
+message Bypass {
+ repeated ColBypass colBypass = 1;
+
+ oneof _row {
+ uint32 row = 2;
+ }
+}
+
+message ColBypass {
+ repeated SceneBypass sceneBypass = 1;
+
+ oneof _column {
+ uint32 column = 2;
+ }
+}
+
+message SceneBypass {
+ bool bypass = 1;
+}
+
+message Param {
+ repeated ParamValue param_values = 5;
+
+ oneof _expression {
+ int32 expression = 1;
+ }
+
+ oneof _expression_min {
+ float expression_min = 2;
+ }
+
+ oneof _expression_max {
+ float expression_max = 3;
+ }
+
+ oneof _scene_mode {
+ bool scene_mode = 4;
+ }
+
+ oneof _index {
+ uint32 index = 6;
+ }
+}
+
+message ParamValue {
+ oneof value {
+ int32 int_value = 1;
+ float float_value = 2;
+ string string_value = 3;
+ }
+}
+
+message LegacyStompModeStompData {
+ uint32 row = 1;
+ uint32 column = 2;
+}
+
+message StompModeAssignment {
+ uint32 row = 1;
+ uint32 column = 2;
+ uint32 stomp_index = 3;
+}
+
+message MidiMessageInfo {
+ uint32 type = 1;
+ uint32 channel = 2;
+ uint32 param1 = 3;
+ uint32 param2 = 4;
+ uint32 param3 = 5;
+}
+
+message Expression {
+ int32 expression = 1;
+ float expression_min = 2;
+ float expression_max = 3;
+}
+
+message ExpressionBypassInfo {
+ uint32 type = 1;
+ bool invert = 2;
+ uint32 delay_ms = 3;
+ bool latch_emulation = 4;
+}
diff --git a/Desktop Editor/src/shims-vue.d.ts b/Desktop Editor/src/shims-vue.d.ts
new file mode 100644
index 0000000..3804a43
--- /dev/null
+++ b/Desktop Editor/src/shims-vue.d.ts
@@ -0,0 +1,6 @@
+/* eslint-disable */
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/Desktop Editor/src/store.ts b/Desktop Editor/src/store.ts
new file mode 100644
index 0000000..976d9eb
--- /dev/null
+++ b/Desktop Editor/src/store.ts
@@ -0,0 +1,38 @@
+import { createStore } from 'vuex'
+
+
+export default createStore({
+ state: {
+ currentPreset: null,
+ currentSetlits: null,
+ modelRepo: null,
+ },
+ getters: {
+ currentPreset: state => state.currentPreset,
+ currentSetlits: state => state.currentSetlits,
+ modelRepo: state => state.modelRepo,
+ },
+ mutations: {
+ SET_PRESET(state, preset) {
+ state.currentPreset = preset;
+ },
+ SET_SETLIST(state, setlits) {
+ state.currentSetlits = setlits;
+ },
+ SET_MODEL_REPO(state, modelRepo) {
+ state.modelRepo = modelRepo;
+ }
+ },
+ actions: {
+ setSelectedPreset(context, preset) {
+ context.commit('SET_PRESET', preset);
+ },
+ setSelectedSetlist(context, setlits) {
+ context.commit('SET_SETLIST', setlits);
+ },
+ setModelRepo(context, modelRepo) {
+ context.commit('SET_MODEL_REPO', modelRepo);
+ }
+ },
+})
+
diff --git a/Desktop Editor/src/views/PresetBrowserView.vue b/Desktop Editor/src/views/PresetBrowserView.vue
new file mode 100644
index 0000000..8dcd3a7
--- /dev/null
+++ b/Desktop Editor/src/views/PresetBrowserView.vue
@@ -0,0 +1,174 @@
+<template>
+ <h1>Quad Cortex preset browser</h1>
+ <!-- Add a list that contains all prestets -->
+ <ul>
+ <li v-for="sl in presets.Setlist" :key="sl">
+ <h2>{{ PathToFile(sl._attributes.path) }}</h2>
+ <p v-for="p in sl.Preset" :key="p">
+ <button
+ v-if="p._attributes.path != ''"
+ :data-path="p._attributes.path"
+ @click="OpenPreset(p, sl.Preset)">
+ {{ PathToFile(p._attributes.path, true) }}
+ </button>
+ </p>
+ </li>
+ </ul>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import axios from 'axios';
+import xmljs from 'xml-js';
+import protobuf from 'protobufjs';
+import store from '@/store';
+import BinaryPreset from '../models/Presets/Preset_pb';
+
+export default defineComponent({
+ name: 'PresetBrowserView',
+ components: {
+ },
+ data(){
+ return {
+ presets: {} as any,
+ modelRepo: {} as any
+ }
+ },
+ async mounted() {
+ // First check if the environment is development or production
+ // If the environment is development, load the example xml file
+ // If the environment is production, load the xml file from the Quad Cortex
+ let presetXMLPath = '';
+ let modelRepoXMLPath = '';
+
+ if(process.env.NODE_ENV === 'development'){
+ presetXMLPath = 'setlist_example.xml';
+ modelRepoXMLPath = 'ModelRepo[1.4.1].xml';
+ } else {
+ // The setlist file is an XML but doesn't contain the extension for some reason
+ presetXMLPath = '/media/p4/Presets/setlists';
+ modelRepoXMLPath = '/opt/neuraldsp/ModelRepo.xml';
+ }
+
+ console.log("Loading presets from: " + presetXMLPath);
+ this.loadXML(presetXMLPath).then((json) => {
+ this.presets = json.Setlists;
+ console.log(this.presets);
+ });
+
+ console.log("Loading model repo from: " + modelRepoXMLPath);
+ this.loadXML(modelRepoXMLPath).then((json) => {
+ this.modelRepo = json.Models;
+ store.dispatch('setModelRepo', this.modelRepo);
+ console.log(this.modelRepo);
+ });
+ },
+ methods: {
+ async loadXML(presetXMLPath: string) {
+ // Load the xml file from the presetXMLPath
+ // Convert the xml to json
+ let response = await axios.get(presetXMLPath);
+ const xml = response.data;
+ const json = xmljs.xml2json(xml, {compact: true, spaces: 4});
+
+ // The json is a string, so we need to parse it
+ const parsedJson = JSON.parse(json);
+
+ return parsedJson;
+ },
+
+ objectToXML(object: any) {
+ // Convert the object to xml
+ // Return the xml
+ const xml2 = xmljs.js2xml(object, {compact: true, spaces: 4});
+ console.log(xml2);
+ },
+
+ PathToFile(path: string, removeExtension: boolean = false) {
+ // Convert the path to a file
+ // Return the file
+ let file = path.split('/').pop();
+
+ if (removeExtension) {
+ return file!.split('.').shift();
+ }
+ return file;
+ },
+
+ async OpenPreset(preset: Object){
+ const presetPath = (preset as any)._attributes.path;
+ // const presetLocation = this.GetPresetLocation(preset, setlist);
+ // Go to the preset viewer and pass the presets as a prop
+ // const decodedPreset = await this.DecodePreset(presetPath, presetLocation);
+ this.DecodePreset("Vienna.pb").then((decodedPreset) => {
+ console.log("decoded", decodedPreset)
+ console.log("preset path: ", presetPath)
+ store.dispatch('setSelectedPreset', decodedPreset);
+ this.$router.push({
+ name: 'Preset viewer',
+ });
+ });
+ //, params: { preset: decodedPreset }
+
+ },
+
+ async DecodePreset(presetPath: string): Promise<BinaryPreset.BinaryPreset.AsObject>{
+ return new Promise((resolve, reject) => {
+ protobuf.load('protos/Preset.proto', async (err) => {
+ if (err) return reject(err);
+
+ // Get the .pb file Antartica.pb from the public folder and decode it
+ // Do this without using the fs module
+ const response = await fetch(presetPath);
+ const arrayBuffer = await response.arrayBuffer();
+
+ // Decode an Uint8Array (browser) or Buffer (node) to a message
+ const preset: BinaryPreset.BinaryPreset = BinaryPreset.BinaryPreset.deserializeBinary(new Uint8Array(arrayBuffer));
+ const object: BinaryPreset.BinaryPreset.AsObject = preset.toObject();
+
+ resolve(object);
+ });
+ });
+ },
+
+
+ GetPresetLocation(preset: any, setlist: Array<any>){
+ console.log("setlist", setlist)
+ console.log("setlists", this.presets.Setlist)
+ // Get the index of the preset in the setlist
+
+ const presetIndex = setlist.indexOf(preset);
+ let setlistIndex = 0;
+
+ for(let i = 0; i < this.presets.Setlist.length; i++){
+ if(this.presets.Setlist[i].Preset == setlist){
+ setlistIndex = i;
+ }
+ }
+
+ // The presets are stored per 8 presets per bank
+ // So we need to calculate the bank and the preset index
+ // The preset index is the preset index % 8
+
+ const presetIndexInBank = presetIndex % 8;
+ // Convert the index to the letter in the alphabet
+ const presetLetter = String.fromCharCode(65 + presetIndexInBank);
+
+ // Every 8 presets the bank has to be increased by 1
+ // The bank is the preset index / 8
+ const bank = Math.floor(presetIndex / 8) + 1;
+
+ return {
+ bank: bank,
+ preset: presetLetter,
+ presetIndex: presetIndex,
+ setlistIndex: setlistIndex
+ };
+ }
+ },
+})
+
+</script>
+
+<style scoped>
+</style> \ No newline at end of file
diff --git a/Desktop Editor/src/views/PresetViewer.vue b/Desktop Editor/src/views/PresetViewer.vue
new file mode 100644
index 0000000..7016c87
--- /dev/null
+++ b/Desktop Editor/src/views/PresetViewer.vue
@@ -0,0 +1,63 @@
+
+
+<template>
+ <h1>Preset viewer</h1>
+ <div class="content-container">
+ <PresetGrid
+ v-if="preset"
+ :preset="preset"
+ @show-params="showParams"
+ ></PresetGrid>
+
+ <div v-if="selectedModel">
+ <div v-for="(param, index) in selectedModel.params" :key="param">
+ <p>{{ selectedModelStructure.model.Parameter[index]._attributes.name }}</p>
+ <input type="range" min="0" max="100" :value="param.paramValues[0].floatValue * 100" >
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import PresetGrid from '@/components/PresetGrid.vue';
+import store from '@/store';
+
+export default defineComponent({
+ name: 'PresetBrowserView',
+ components: {
+ PresetGrid
+ },
+
+ data(){
+ return {
+ preset: null as any,
+ selectedModel: null as any,
+ selectedModelStructure: null as any
+ }
+ },
+
+ async mounted() {
+ this.preset = store.state.currentPreset;
+ },
+ methods: {
+ showParams(model: any, modelData: any){
+ console.log(model, modelData);
+ this.selectedModel = model;
+ this.selectedModelStructure = modelData;
+ }
+ },
+})
+
+</script>
+
+<style scoped lang="scss">
+.content-container {
+ max-width: 1200px;
+ margin: 0 auto;
+
+ .preset-grid{
+ margin-bottom: 3rem;
+ }
+}
+</style> \ No newline at end of file