Browse Source

Fix Param serialization mistake. Update template patch.

tags/v1.0.0
Andrew Belt 5 years ago
parent
commit
669ace54c6
2 changed files with 87 additions and 36 deletions
  1. +21
    -12
      src/engine/Module.cpp
  2. +66
    -24
      template.vcv

+ 21
- 12
src/engine/Module.cpp View File

@@ -35,13 +35,18 @@ json_t *Module::toJson() {
// params
json_t *paramsJ = json_array();
for (size_t paramId = 0; paramId < params.size(); paramId++) {
float value = params[paramId].getValue();
// Set value to 0 if param is unbounded
// Don't serialize unbounded Params
if (!paramQuantities[paramId]->isBounded())
value = 0.f;
continue;

json_t *paramJ = json_object();

json_object_set_new(paramJ, "id", json_integer(paramId));

float value = params[paramId].getValue();
json_object_set_new(paramJ, "value", json_real(value));

json_t *paramJ = json_real(value);
json_array_insert_new(paramsJ, paramId, paramJ);
json_array_append(paramsJ, paramJ);
}
json_object_set_new(rootJ, "params", paramsJ);

@@ -72,23 +77,27 @@ void Module::fromJson(json_t *rootJ) {
size_t i;
json_t *paramJ;
json_array_foreach(paramsJ, i, paramJ) {
size_t paramId = i;
// Get paramId
// Legacy v0.6.0 to <v1.0
json_t *paramIdJ = json_object_get(paramJ, "paramId");
if (paramIdJ) {
json_t *paramIdJ = json_object_get(paramJ, "id");
// Legacy v0.6 to <v1
if (!paramIdJ)
paramIdJ = json_object_get(paramJ, "paramId");
size_t paramId;
if (paramIdJ)
paramId = json_integer_value(paramIdJ);
}
// Use index if all else fails
else
paramId = i;

// Check ID bounds
if (paramId >= params.size())
continue;

// Check that param is bounded
// Check that the Param is bounded
if (!paramQuantities[paramId]->isBounded())
continue;

json_t *valueJ = json_object_get(rootJ, "value");
json_t *valueJ = json_object_get(paramJ, "value");
if (valueJ)
params[paramId].setValue(json_number_value(valueJ));
}


+ 66
- 24
template.vcv View File

@@ -1,13 +1,22 @@
{
"version": "1.dev",
"version": "1.dev.71fab3d",
"modules": [
{
"plugin": "Core",
"version": "1.dev",
"version": "1.dev.7bd9894",
"model": "AudioInterface",
"params": [],
"data": {
"audio": {
"driver": 1,
"offset": 1,
"maxChannels": 8,
"sampleRate": 44100,
"blockSize": 256
}
},
"leftModuleId": 2,
"rightModuleId": 8,
"id": 1,
"pos": [
57,
@@ -20,21 +29,28 @@
"model": "VCMixer",
"params": [
{
"id": 0,
"value": 1.0
},
{
"id": 1,
"value": 1.0
},
{
"id": 2,
"value": 1.0
},
{
"id": 3,
"value": 1.0
},
{
"id": 4,
"value": 1.0
}
],
"leftModuleId": 7,
"rightModuleId": 1,
"id": 2,
"pos": [
47,
@@ -47,27 +63,36 @@
"model": "VCO",
"params": [
{
"id": 0,
"value": 1.0
},
{
"id": 1,
"value": 1.0
},
{
"id": 2,
"value": 0.0
},
{
"id": 3,
"value": 0.0
},
{
"id": 4,
"value": 0.0
},
{
"id": 5,
"value": 0.5
},
{
"id": 6,
"value": 0.0
}
],
"leftModuleId": 5,
"rightModuleId": 4,
"id": 3,
"pos": [
8,
@@ -80,21 +105,28 @@
"model": "VCF",
"params": [
{
"value": 0.0599999949
"id": 0,
"value": 0.0464999937
},
{
"id": 1,
"value": 0.5
},
{
"id": 2,
"value": 0.236999944
},
{
"id": 3,
"value": 1.0
},
{
"id": 4,
"value": 0.0
}
],
"leftModuleId": 3,
"rightModuleId": 6,
"id": 4,
"pos": [
18,
@@ -103,20 +135,22 @@
},
{
"plugin": "Core",
"version": "1.dev",
"version": "1.dev.7bd9894",
"model": "MIDIToCVInterface",
"params": [],
"data": {
"divisions": [
24,
6
],
"channels": 1,
"polyMode": 0,
"clockDivision": 24,
"lastPitch": 8192,
"lastMod": 0,
"midi": {
"driver": -11,
"deviceName": "QWERTY keyboard (US)",
"channel": -1
}
},
"rightModuleId": 3,
"id": 5,
"pos": [
0,
@@ -129,18 +163,24 @@
"model": "ADSR",
"params": [
{
"value": 0.25
"id": 0,
"value": 0.247000009
},
{
"value": 0.671000004
"id": 1,
"value": 0.725000203
},
{
"value": 0.358999938
"id": 2,
"value": 0.361999929
},
{
"value": 0.5
"id": 3,
"value": 0.55850035
}
],
"leftModuleId": 4,
"rightModuleId": 7,
"id": 6,
"pos": [
26,
@@ -153,27 +193,35 @@
"model": "Scope",
"params": [
{
"id": 0,
"value": 0.0
},
{
"id": 1,
"value": 0.0
},
{
"id": 2,
"value": 0.0
},
{
"id": 3,
"value": 0.0
},
{
"id": 4,
"value": 14.0
},
{
"id": 5,
"value": 0.0
},
{
"id": 6,
"value": 0.0
},
{
"id": 7,
"value": 0.0
}
],
@@ -181,6 +229,8 @@
"lissajous": 0,
"external": 0
},
"leftModuleId": 6,
"rightModuleId": 2,
"id": 7,
"pos": [
34,
@@ -189,10 +239,11 @@
},
{
"plugin": "Core",
"version": "1.dev",
"version": "1.dev.7bd9894",
"model": "Notes",
"params": [],
"text": "Demo patch instructions:\n\n1. Choose an audio driver and device in the AUDIO module. \n\n2. Use the QWERTY and ZXCVB rows of your keyboard to generate MIDI notes and convert them to 1V/oct and GATE signals.\n\n3. Drag knobs up/down. Hold CTRL (CMD on Mac) while dragging to fine-tune. Right-click knobs to edit or reset their value. \n\n4. Drag cables to patch them between inputs and outputs. Stack multiple cables on outputs by holding CTRL (CMD on Mac) and dragging from an output. \n",
"leftModuleId": 1,
"text": "Demo patch instructions:\n\n1. Choose an audio driver and device in the AUDIO module.\n\n2. Use the QWERTY and ZXCVB rows of your keyboard to generate MIDI notes, which are converted to 1V/oct and GATE signals.\n\n3. Drag knobs up/down. Hold Ctrl (Cmd on Mac) while dragging to fine-tune. Right-click knobs to edit, or double-click to initialize.\n\n4. Drag cables to patch them between inputs and outputs. Stack multiple cables on outputs by holding Ctrl (Cmd on Mac) and dragging from an output.\n\n5. Right-click on an empty rack space to add new modules.",
"id": 8,
"pos": [
67,
@@ -200,9 +251,9 @@
]
}
],
"id": 19,
"cables": [
{
"id": 1,
"outputModuleId": 5,
"outputId": 0,
"inputModuleId": 3,
@@ -210,7 +261,6 @@
"color": "#c91847"
},
{
"id": 2,
"outputModuleId": 3,
"outputId": 2,
"inputModuleId": 4,
@@ -218,7 +268,6 @@
"color": "#0c8e15"
},
{
"id": 3,
"outputModuleId": 2,
"outputId": 0,
"inputModuleId": 1,
@@ -226,7 +275,6 @@
"color": "#0986ad"
},
{
"id": 4,
"outputModuleId": 2,
"outputId": 0,
"inputModuleId": 1,
@@ -234,7 +282,6 @@
"color": "#c9b70e"
},
{
"id": 5,
"outputModuleId": 6,
"outputId": 0,
"inputModuleId": 4,
@@ -242,7 +289,6 @@
"color": "#c91847"
},
{
"id": 6,
"outputModuleId": 5,
"outputId": 1,
"inputModuleId": 6,
@@ -250,7 +296,6 @@
"color": "#c9b70e"
},
{
"id": 7,
"outputModuleId": 6,
"outputId": 0,
"inputModuleId": 2,
@@ -258,7 +303,6 @@
"color": "#0c8e15"
},
{
"id": 8,
"outputModuleId": 4,
"outputId": 0,
"inputModuleId": 2,
@@ -266,7 +310,6 @@
"color": "#0986ad"
},
{
"id": 9,
"outputModuleId": 2,
"outputId": 1,
"inputModuleId": 7,
@@ -274,7 +317,6 @@
"color": "#c9b70e"
},
{
"id": 10,
"outputModuleId": 5,
"outputId": 6,
"inputModuleId": 6,


Loading…
Cancel
Save