Browse Source

Serialize keyframes

tags/v0.5.0
Andrew Belt 7 years ago
parent
commit
527fab2d10
1 changed files with 40 additions and 0 deletions
  1. +40
    -0
      src/Frames.cpp

+ 40
- 0
src/Frames.cpp View File

@@ -55,6 +55,21 @@ struct Frames : Module {
json_t *toJson() {
json_t *rootJ = json_object();
json_object_set_new(rootJ, "polyLfo", json_boolean(poly_lfo_mode));

json_t *keyframesJ = json_array();
for (int i = 0; i < keyframer.num_keyframes(); i++) {
json_t *keyframeJ = json_array();
frames::Keyframe *keyframe = keyframer.mutable_keyframe(i);
json_array_append_new(keyframeJ, json_integer(keyframe->timestamp));
for (int k = 0; k < 4; k++) {
json_array_append_new(keyframeJ, json_integer(keyframe->values[k]));
}
json_array_append_new(keyframesJ, keyframeJ);
}
json_object_set_new(rootJ, "keyframes", keyframesJ);

// TODO Channel settings

return rootJ;
}

@@ -62,6 +77,31 @@ struct Frames : Module {
json_t *polyLfoJ = json_object_get(rootJ, "polyLfo");
if (polyLfoJ)
poly_lfo_mode = json_boolean_value(polyLfoJ);

json_t *keyframesJ = json_object_get(rootJ, "keyframes");
if (keyframesJ) {
json_t *keyframeJ;
size_t i;
json_array_foreach(keyframesJ, i, keyframeJ) {
uint16_t timestamp = json_integer_value(json_array_get(keyframeJ, 0));
uint16_t values[4];
for (int k = 0; k < 4; k++) {
values[k] = json_integer_value(json_array_get(keyframeJ, k + 1));
}
keyframer.AddKeyframe(timestamp, values);
}
}

// TODO Channel settings
}

void initialize() {
poly_lfo_mode = false;
keyframer.Clear();
}
void randomize() {
// TODO
// Maybe something useful should go in here??
}
};



Loading…
Cancel
Save