├── LICENSE ├── MGJSON_Schema2.0.0.json ├── demo.mgjson ├── dji.mgjson ├── from-csv.mgjson ├── from-gpx.mgjson ├── gopro.mgjson └── readme.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Juan Irache Duesca 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MGJSON_Schema2.0.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "description": "JSON Schema for MGJSON(Motion Graphics JSON) defined by Adobe Systems Inc.", 4 | "type": "object", 5 | 6 | "_comment": "Adobe MGJSON format allows sensor data to be structured in hierarchical format. Data can be of two types: Static data which does not change with time and Dynamic data which changes with time. Group can be used to represent any logical grouping of Static and Dynamic data. MGJSON format is mainly divided into 6 JSON objects : \"version\" - must be the first property in the top level JSON object with value equal to \"MGJSON2.0.0\". This indicates that MGJSON file conforms to the schema describe in this file. \"creator\" - Optional property. \"dynamicSamplesPresentB\" - mandatory property, if set to true indicates that MGJSON contains dynamic samples. If false, only static data should be present.\"dynamicDataInfo\" - this property must be present if and only if \"dynamicSamplesPresentB\" is true. Properties of MGJSON which is required for dynamic sample data like \"useTimecodeB\", \"timecodeInfo\" must be present. \"dataOutline\" - mandatory property, represents the collection of data which can be present in static, dynamic or group format. \"dataDynamicSamples\" - represents dynamic data samples associated with Dynamic data present in \"dataOutline\". This need not to be always present, MGJSON can contain only static data", 7 | 8 | "properties": { 9 | "version": { 10 | "description": "MGJSON(Motion Graphics JSON) schema version - current:2.0.0, value of the key must be equals to \"MGJSON2.0.0\". This string is not case sensitive so \"MGJSON2.0.0\" or \"mgjson2.0.0\" is acceptable. Other cases like \"mgjson2.0\" or \"MGJSON 2\" are not acceptable. Property is mandatory.", 11 | "type": "string" 12 | }, 13 | "creator": { 14 | "description": "An entity primarily responsible for making the resource. Property is not mandatory.", 15 | "type": "string" 16 | }, 17 | 18 | "dataOutline": { 19 | "description": "dataOutline will hold information about data node in hierarchical manner. Property is mandatory.", 20 | "type": "array", 21 | "minItems": 1, 22 | "items": { 23 | "$ref": "#/definitions/dataGroupChild" 24 | } 25 | }, 26 | 27 | "dynamicSamplesPresentB": { 28 | "description": "indicates that whether MGJSON file contains any dynamic data samples or only static data. dynamicSamplesPresentB must be set to true if MGJSON file contains dynamic data, false otherwise. If dynamicSamplesPresentB is set to true, \"dynamicDataInfo\" must be present otherwise it shall not be present in MGJSON file. Property is mandatory. This property must be present before \"dynamicDataInfo\".", 29 | "type": "boolean" 30 | }, 31 | 32 | "dynamicDataInfo": { 33 | "description": "represents the information related to dynamic data samples. It is a collection of properties which indicates about time format used in samples to represent sample time and video sync information. Property is mandatory only if \"dynamicSamplesPresentB\" is set to true and must be present after \"dynamicSamplesPresentB\" and before \"dataDynamicSamples\".", 34 | "type": "object", 35 | "properties": { 36 | "useTimecodeB": { 37 | "description": "if true, dynamic sample time strings are formatted as SMPTE format HH:MM:SS:FF else as UTC format YYYY-MM-DDTHH:MM:SS.ssssTZD where TZD is time zone designator (Z or +hh:mm or -hh:mm) and ssss is zero or more digits representing a decimal fraction of a second. Property is mandatory. \"timecodeInfo\" must be present if value is set to true otherwise \"utcInfo\" must be present", 38 | "type": "boolean" 39 | }, 40 | "timecodeInfo": { 41 | "description": "represents the SMPTE timecode related information i.e. frame rate and whether timecode is drop frame or non-drop frame. Property is not mandatory. It must be present if \"useTimecodeB\" is set to true.", 42 | "$ref": "#/definitions/timecodeInfo" 43 | }, 44 | "utcInfo": { 45 | "description": "represents the UTC time related information i.e. whether utc time contains timezone and precision length. Property is not mandatory. It must be present if \"useTimecodeB\" is set to false.", 46 | "$ref": "#/definitions/utcInfo" 47 | }, 48 | "videoSyncTimeList": { 49 | "type": "array", 50 | "minItems": 1, 51 | "description": "represents the list of sync time structures. Property is not mandatory.", 52 | "items": { 53 | "$ref": "#/definitions/syncTime" 54 | } 55 | } 56 | }, 57 | "required": ["useTimecodeB"], 58 | 59 | "additionalProperties": false 60 | }, 61 | 62 | "dataDynamicSamples": { 63 | "description": "represents the list of dynamic samples data set present in the file. Each dynamic sample data set must have one entry of \"dynamicData\" in \"dataOutline\" whose \"sampleId\" matches with the \"sampleSetID\" of \"dataDynamicSampleSet\". This property is not mandatory but must be present if \"dynamicSamplesPresentB\" is set to true.", 64 | "type": "array", 65 | "minItems": 1, 66 | "items": { 67 | "$ref": "#/definitions/dataDynamicSampleSet" 68 | } 69 | } 70 | }, 71 | "required": ["version", "dynamicSamplesPresentB", "dataOutline"], 72 | 73 | "additionalProperties": false, 74 | 75 | "definitions": { 76 | "timecodeInfo": { 77 | "description": "must be present if useTimecodeB is true.", 78 | "type": "object", 79 | "properties": { 80 | "dropFrame": { 81 | "type": "boolean" 82 | }, 83 | "frameRate": { 84 | "description": "it defines frameRate", 85 | "$ref": "#/definitions/frameRate" 86 | } 87 | }, 88 | "required": ["dropFrame", "frameRate"], 89 | "additionalProperties": false 90 | }, 91 | "utcInfo": { 92 | "description": "must be present if useTimecodeB is false.", 93 | "type": "object", 94 | "properties": { 95 | "precisionLength": { 96 | "description": "number of digits representing a decimal fraction of a second in UTC time.", 97 | "type": "number" 98 | }, 99 | "isGMT": { 100 | "description": "if true, time string does not contain time zone info (e.g.: YYYY-MM-DDTHH:MM:SS.ssssZ).", 101 | "type": "boolean" 102 | } 103 | } 104 | }, 105 | "syncTime": { 106 | "type": "object", 107 | "description": "one of the frameNumber or timeString must be present", 108 | "properties": { 109 | "timeString": { 110 | "type": "string" 111 | }, 112 | "frameNumber": { 113 | "type": "number" 114 | }, 115 | "fileName": { 116 | "type": "string" 117 | } 118 | }, 119 | "required": ["fileName"], 120 | "additionalProperties": false 121 | }, 122 | "frameRate": { 123 | "type": "object", 124 | "properties": { 125 | "value": { 126 | "type": "number" 127 | }, 128 | "scale": { 129 | "type": "number" 130 | } 131 | }, 132 | "required": ["value", "scale"], 133 | "additionalProperties": false 134 | }, 135 | 136 | "paddedString": { 137 | "type": "object", 138 | "properties": { 139 | "length": { 140 | "description": "length of the actual string without padding. If the number of digits used to represent this property is less than \"maxDigitsInStrLength\", then it must be padded with '0' before the value ", 141 | "type": "numberString" 142 | }, 143 | "str": { 144 | "description": "string must be padded with space (' ') to maxLen specified by \"numberStringProperties\" after the value.", 145 | "type": "string" 146 | } 147 | }, 148 | "required": ["length", "str"], 149 | "additionalProperties": false 150 | }, 151 | 152 | "numberString": { 153 | "description": "numberString will contain number represented as string.", 154 | "type": "string" 155 | }, 156 | 157 | "numberStringArray": { 158 | "description": "numberStringArray will contain elements represented as numberString. Only up-to three dimensional data is supported.", 159 | "type": "array", 160 | "minItems": 1, 161 | "maxItems": 3, 162 | "items": { 163 | "type": "numberString" 164 | } 165 | }, 166 | 167 | "numberArray": { 168 | "description": "numberArray will contain elements represented as number. Only up-to three dimensional data is supported.", 169 | "type": "array", 170 | "minItems": 1, 171 | "maxItems": 3, 172 | "items": { 173 | "type": "number" 174 | } 175 | }, 176 | 177 | "stringArray": { 178 | "description": "array of strings", 179 | "type": "array", 180 | "minItems": 1, 181 | "maxItems": 3, 182 | "items": { 183 | "type": "string" 184 | } 185 | }, 186 | "numberMinMax": { 187 | "type": "object", 188 | "properties": { 189 | "min": { 190 | "type": "number" 191 | }, 192 | "max": { 193 | "type": "number" 194 | } 195 | }, 196 | "required": ["min", "max"], 197 | "additionalProperties": false 198 | }, 199 | "numberRange": { 200 | "description": "value extremes (legal and occurring in sampleSet) of a number", 201 | "type": "object", 202 | "properties": { 203 | "occuring": { 204 | "description": "indicates extremes of values occurring in a sample set", 205 | "$ref": "#/definitions/numberMinMax" 206 | }, 207 | "legal": { 208 | "description": "indicates legal extremes for component values", 209 | "$ref": "#/definitions/numberMinMax" 210 | } 211 | }, 212 | "required": ["occuring", "legal"], 213 | "additionalProperties": false 214 | }, 215 | "numberArrayRange": { 216 | "description": " ranges for all elements of numberArray and numberStringArray type", 217 | "type": "object", 218 | "properties": { 219 | "ranges": { 220 | "type": "array", 221 | "minItems": 1, 222 | "maxItems": 3, 223 | "items": { 224 | "$ref": "#/definitions/numberRange" 225 | } 226 | } 227 | }, 228 | "required": ["ranges"], 229 | "additionalProperties": false 230 | }, 231 | "numberPattern": { 232 | "description": "specifies number of digits in a number", 233 | "type": "object", 234 | "properties": { 235 | "isSigned": { 236 | "description": "set to true if sign (+/-) is prefixed in number, otherwise false.", 237 | "type": "boolean" 238 | }, 239 | "digitsInteger": { 240 | "description": "number of digits before decimal", 241 | "type": "number" 242 | }, 243 | "digitsDecimal": { 244 | "description": "number of digits after decimal", 245 | "type": "number" 246 | } 247 | }, 248 | "required": ["digitsInteger", "digitsDecimal", "isSigned"], 249 | "additionalProperties": false 250 | }, 251 | "numberArrayProperties": { 252 | "description": "extra information for numberArray and numberStringArray type", 253 | "type": "object", 254 | "properties": { 255 | "pattern": { 256 | "description": "defines pattern for all elements in the array", 257 | "$ref": "#/definitions/numberPattern" 258 | }, 259 | "arraySize": { 260 | "description": "size of the array", 261 | "type": "number" 262 | }, 263 | "arrayDisplayNames": { 264 | "description": "labels used for elements in the array", 265 | "$ref": "#/definitions/stringArray" 266 | }, 267 | "arrayRanges": { 268 | "description": "range for each element in the array", 269 | "$ref": "#/definitions/numberArrayRange" 270 | }, 271 | "isPoint": { 272 | "description": "indicates whether the numberArray or numberStringArray should be treated as a point (2D/3D).", 273 | "type": "boolean" 274 | } 275 | }, 276 | "required": ["pattern", "arraySize", "arrayDisplayNames", "arrayRanges"], 277 | "additionalProperties": false 278 | }, 279 | "numberStringProperties": { 280 | "description": "extra information for number and numberString type", 281 | "type": "object", 282 | "properties": { 283 | "pattern": { 284 | "$ref": "#/definitions/numberPattern" 285 | }, 286 | "range": { 287 | "$ref": "#/definitions/numberRange" 288 | } 289 | }, 290 | "required": ["pattern", "range"], 291 | "additionalProperties": false 292 | }, 293 | "paddedStringProperties": { 294 | "description": "extra information for paddedString type, maxLen represents maximum length of a padded string value, smaller strings must be padded to maxLen and maxDigitsInStrLength represents maximum number of digits required to write the \"length\" property of padded string, smaller \"length\" property must be padded to maxDigitsInStrLength", 295 | "type": "object", 296 | "properties": { 297 | "maxLen": { 298 | "type": "number" 299 | }, 300 | "maxDigitsInStrLength": { 301 | "type": "number" 302 | }, 303 | "eventMarkerB": { 304 | "description": "indicates that the string is an event marker (should not be interpreted as a keyframe)", 305 | "type": "boolean" 306 | } 307 | }, 308 | "required": ["maxLen", "maxDigitsInStrLength", "eventMarkerB"], 309 | "additionalProperties": false 310 | }, 311 | "dynamicDataType": { 312 | "description": "specifies data type for the dynamic data node.", 313 | "type": "object", 314 | "properties": { 315 | "type": { 316 | "type": "string", 317 | "enum": ["numberString", "paddedString", "numberStringArray"] 318 | }, 319 | "numberArrayProperties": { 320 | "description": "used for numberStringArray only, properties needed for numberStringArray datatype", 321 | "$ref": "#/definitions/numberArrayProperties" 322 | }, 323 | "numberStringProperties": { 324 | "description": "used for numberString type only, properties needed for numberString datatype", 325 | "$ref": "#/definitions/numberStringProperties" 326 | }, 327 | "paddedStringProperties": { 328 | "description": "used for paddedString type only, properties needed for paddedString datatype", 329 | "$ref": "#/definitions/paddedStringProperties" 330 | } 331 | }, 332 | "required": ["type"], 333 | "additionalProperties": false 334 | }, 335 | "interpolationType": { 336 | "description": "value for paddedString dataType will always be hold.", 337 | "type": "string", 338 | "enum": ["linear", "hold"], 339 | "additionalProperties": false 340 | }, 341 | "dynamicDataValue": { 342 | "description": "specifies data value for the dynamic data node. Its type can be one of numberString, paddedString or numberStringArray.", 343 | "oneOf": [ 344 | { 345 | "$ref": "#/definitions/numberString" 346 | }, 347 | { 348 | "$ref": "#/definitions/paddedString" 349 | }, 350 | { 351 | "$ref": "#/definitions/numberStringArray" 352 | } 353 | ], 354 | "additionalProperties": false 355 | }, 356 | "staticDataType": { 357 | "description": "specifies data type for the static data node. JSON object can be supported through \"dataGroup\". numberArray with greater than three elements can be supported through \"dataGroup\".", 358 | "properties": { 359 | "type": { 360 | "type": "string", 361 | "enum": ["number", "string", "numberArray", "boolean"] 362 | }, 363 | "numberArrayProperties": { 364 | "description": "used for numberArray only, properties needed for numberArray data type", 365 | "$ref": "#/definitions/numberArrayProperties" 366 | }, 367 | "numberStringProperties": { 368 | "description": "used for number type only, properties needed for number data type", 369 | "$ref": "#/definitions/numberStringProperties" 370 | }, 371 | "paddedStringProperties": { 372 | "description": "used for string type only, properties needed for string data type", 373 | "$ref": "#/definitions/paddedStringProperties" 374 | } 375 | }, 376 | "required": ["type"], 377 | "additionalProperties": false 378 | }, 379 | 380 | "staticDataValue": { 381 | "description": "specifies data value for the static data node. Its type can be one of number, string, boolean or numberArray.", 382 | "oneOf": [ 383 | "string", 384 | "number", 385 | "boolean", 386 | { 387 | "$ref": "#/definitions/numberArray" 388 | } 389 | ], 390 | "additionalProperties": false 391 | }, 392 | "dataStatic": { 393 | "type": "object", 394 | "properties": { 395 | "objectType": { 396 | "enum": ["dataStatic"] 397 | }, 398 | "matchName": { 399 | "description": "unique identifier with ASCII, alphanumeric chars and no leading numerals", 400 | "type": "string" 401 | }, 402 | "displayName": { 403 | "description": "label used for stream", 404 | "type": "string" 405 | }, 406 | "dataType": { 407 | "$ref": "#/definitions/staticDataType" 408 | }, 409 | "value": { 410 | "$ref": "#/definitions/staticDataValue" 411 | } 412 | }, 413 | "required": ["objectType", "displayName", "dataType", "value", "matchName"], 414 | "additionalProperties": false 415 | }, 416 | "dataDynamic": { 417 | "type": "object", 418 | "properties": { 419 | "objectType": { 420 | "enum": ["dataDynamic"] 421 | }, 422 | "matchName": { 423 | "description": "unique identifier with ASCII, alphanumeric chars and no leading numerals.", 424 | "type": "string" 425 | }, 426 | "displayName": { 427 | "description": "label used for stream.", 428 | "type": "string" 429 | }, 430 | "sampleSetID": { 431 | "description": "unique identifier for a sample set. It must match \"sampleSetID\" in associated \"dataDynamicSampleSet\".", 432 | "type": "string" 433 | }, 434 | "dataType": { 435 | "$ref": "#/definitions/dyamicDataType" 436 | }, 437 | "interpolation": { 438 | "$ref": "#/definitions/interpolationType" 439 | }, 440 | "hasExpectedFrequecyB": { 441 | "description": "true means minimum rate of samples is expected", 442 | "type": "boolean" 443 | }, 444 | "expectedMaxInterSampleDuration": { 445 | "description": "maximum expected duration allowed between adjacent samples. If \"useTimecodeB\" is true, the format of the value must be HH:MM:SS:FF else YYYY-MM-DDTHH:MM:SS.ssssTZD. For more details on time format, refer \"dynamicDataInfo\"", 446 | "type": "string" 447 | }, 448 | "sampleCount": { 449 | "description": "number of samples associated \"dataDynamicSampleSet\".", 450 | "type": "number" 451 | } 452 | }, 453 | "required": [ 454 | "objectType", 455 | "displayName", 456 | "sampleSetID", 457 | "dataType", 458 | "interpolation", 459 | "hasExpectedFrequecyB", 460 | "sampleCount", 461 | "matchName" 462 | ], 463 | "additionalProperties": false 464 | }, 465 | "dataGroupChild": { 466 | "type": "object", 467 | "oneOf": [ 468 | { 469 | "$ref": "#/definitions/dataGroup" 470 | }, 471 | { 472 | "$ref": "#/definitions/dataDynamic" 473 | }, 474 | { 475 | "$ref": "#/definitions/dataStatic" 476 | } 477 | ], 478 | "additionalProperties": false 479 | }, 480 | "dataGroup": { 481 | "type": "object", 482 | "properties": { 483 | "objectType": { 484 | "enum": ["dataGroup"] 485 | }, 486 | "matchName": { 487 | "description": "unique identifier with ASCII, alphanumeric chars and no leading numerals", 488 | "type": "string" 489 | }, 490 | "displayName": { 491 | "description": "label used for stream", 492 | "type": "string" 493 | }, 494 | "children": { 495 | "type": "array", 496 | "minItems": 1, 497 | "items": { 498 | "$ref": "#/definitions/dataGroupChild" 499 | } 500 | } 501 | }, 502 | "required": ["objectType", "displayName", "children", "matchName"], 503 | "additionalProperties": false 504 | }, 505 | "dataDynamicSample": { 506 | "type": "object", 507 | "properties": { 508 | "value": { 509 | "$ref": "#/definitions/dynamicDataValue" 510 | }, 511 | "time": { 512 | "description": "If \"useTimecodeB\" is true, the format of the value must be HH:MM:SS:FF else YYYY-MM-DDTHH:MM:SS.ssssTZD. For more details on time format, refer \"dynamicDataInfo\"", 513 | "type": "string" 514 | } 515 | }, 516 | "required": ["value", "time"], 517 | "additionalProperties": false 518 | }, 519 | "dataDynamicSampleSet": { 520 | "type": "object", 521 | "properties": { 522 | "sampleSetID": { 523 | "description": "It must match \"sampleSetID\" in associated dataDynamic", 524 | "type": "string" 525 | }, 526 | "samples": { 527 | "description": "samples must be temporally pre-sorted (earliest first)", 528 | "type": "array", 529 | "minItems": 1, 530 | "items": { 531 | "$ref": "#/definitions/dataDynamicSample" 532 | } 533 | } 534 | }, 535 | "required": ["sampleSetID", "samples"], 536 | "additionalProperties": false 537 | } 538 | } 539 | } 540 | -------------------------------------------------------------------------------- /demo.mgjson: -------------------------------------------------------------------------------- 1 | { 2 | "version": "MGJSON2.0.0", 3 | "creator": "https://github.com/juanirache", 4 | "dynamicSamplesPresentB": true, 5 | "dynamicDataInfo": { 6 | "useTimecodeB": false, 7 | "utcInfo": { 8 | "precisionLength": 3, 9 | "isGMT": true 10 | } 11 | }, 12 | "dataOutline": [ 13 | { 14 | "objectType": "dataStatic", 15 | "displayName": "Information", 16 | "dataType": { 17 | "type": "string", 18 | "paddedStringProperties": { 19 | "maxLen": 26, 20 | "maxDigitsInStrLength": 2, 21 | "eventMarkerB": false 22 | } 23 | }, 24 | "matchName": "INFO", 25 | "value": "This is a test mgJSON file" 26 | }, 27 | { 28 | "objectType": "dataStatic", 29 | "displayName": "Static number", 30 | "dataType": { 31 | "type": "number", 32 | "numberStringProperties": { 33 | "pattern": { 34 | "isSigned": true, 35 | "digitsInteger": 2, 36 | "digitsDecimal": 0 37 | }, 38 | "range": { 39 | "occuring": { 40 | "min": 50, 41 | "max": 50 42 | }, 43 | "legal": { 44 | "min": -2147483648, 45 | "max": 2147483648 46 | } 47 | } 48 | } 49 | }, 50 | "matchName": "staticnum", 51 | "value": 50 52 | }, 53 | { 54 | "objectType": "dataDynamic", 55 | "displayName": "Accelerometer", 56 | "sampleSetID": "00001", 57 | "dataType": { 58 | "type": "numberString", 59 | "numberStringProperties": { 60 | "pattern": { 61 | "digitsInteger": 5, 62 | "digitsDecimal": 0, 63 | "isSigned": false 64 | }, 65 | "range": { 66 | "occuring": { 67 | "min": 16009, 68 | "max": 16187 69 | }, 70 | "legal": { 71 | "min": 16000, 72 | "max": 17000 73 | } 74 | } 75 | } 76 | }, 77 | "interpolation": "linear", 78 | "hasExpectedFrequecyB": false, 79 | "sampleCount": 3, 80 | "matchName": "ACCL" 81 | } 82 | ], 83 | "dataDynamicSamples": [ 84 | { 85 | "sampleSetID": "00001", 86 | "samples": [ 87 | { 88 | "time": "2017-06-02T12:40:25.390Z", 89 | "value": "16009" 90 | }, 91 | { 92 | "time": "2017-06-02T12:40:25.437Z", 93 | "value": "16167" 94 | }, 95 | { 96 | "time": "2017-06-02T12:40:25.453Z", 97 | "value": "16187" 98 | } 99 | ] 100 | } 101 | ] 102 | } 103 | -------------------------------------------------------------------------------- /from-csv.mgjson: -------------------------------------------------------------------------------- 1 | {"version":"MGJSON2.0.0","creator":"goprotelemetryextractor.com","dynamicSamplesPresentB":true,"dynamicDataInfo":{"useTimecodeB":false,"utcInfo":{"precisionLength":3,"isGMT":true}},"dataOutline":[{"objectType":"dataDynamic","displayName":"Perlin noise","sampleSetID":"Stream0","dataType":{"type":"numberString","numberStringProperties":{"pattern":{"digitsInteger":1,"digitsDecimal":10,"isSigned":true},"range":{"occuring":{"min":0.1426276409,"max":0.3031450875},"legal":{"min":-2147483648,"max":2147483648}}}},"interpolation":"linear","hasExpectedFrequecyB":false,"sampleCount":193,"matchName":"Stream0"},{"objectType":"dataDynamic","displayName":"Signed 1k Perlin","sampleSetID":"Stream1","dataType":{"type":"numberString","numberStringProperties":{"pattern":{"digitsInteger":3,"digitsDecimal":15,"isSigned":true},"range":{"occuring":{"min":-527.050855395532,"max":290.283955792213},"legal":{"min":-2147483648,"max":2147483648}}}},"interpolation":"linear","hasExpectedFrequecyB":false,"sampleCount":193,"matchName":"Stream1"}],"dataDynamicSamples":[{"sampleSetID":"Stream0","samples":[{"time":"1969-12-31T19:00:00.000Z","value":"+0.5397930392"},{"time":"1969-12-31T19:00:00.100Z","value":"+0.7190434091"},{"time":"1969-12-31T19:00:00.200Z","value":"+0.2639732906"},{"time":"1969-12-31T19:00:00.300Z","value":"+0.5977110828"},{"time":"1969-12-31T19:00:00.400Z","value":"+0.3536424812"},{"time":"1969-12-31T19:00:00.500Z","value":"+0.3823258105"},{"time":"1969-12-31T19:00:00.600Z","value":"+0.1635685938"},{"time":"1969-12-31T19:00:00.700Z","value":"+0.2796414495"},{"time":"1969-12-31T19:00:00.800Z","value":"+0.8025746082"},{"time":"1969-12-31T19:00:00.900Z","value":"+0.2881525973"},{"time":"1969-12-31T19:00:01.000Z","value":"+0.1575395313"},{"time":"1969-12-31T19:00:01.100Z","value":"+0.4029455330"},{"time":"1969-12-31T19:00:01.199Z","value":"+0.7406687323"},{"time":"1969-12-31T19:00:01.300Z","value":"+0.2857479811"},{"time":"1969-12-31T19:00:01.399Z","value":"+0.4148098621"},{"time":"1969-12-31T19:00:01.500Z","value":"+0.4707428923"},{"time":"1969-12-31T19:00:01.600Z","value":"+0.2227131258"},{"time":"1969-12-31T19:00:01.700Z","value":"+0.8003551118"},{"time":"1969-12-31T19:00:01.800Z","value":"+0.3286887182"},{"time":"1969-12-31T19:00:01.899Z","value":"+0.4486510127"},{"time":"1969-12-31T19:00:02.000Z","value":"+0.5569061880"},{"time":"1969-12-31T19:00:02.100Z","value":"+0.2450510229"},{"time":"1969-12-31T19:00:02.200Z","value":"+0.4127918870"},{"time":"1969-12-31T19:00:02.299Z","value":"+0.5677965075"},{"time":"1969-12-31T19:00:02.399Z","value":"+0.2356746778"},{"time":"1969-12-31T19:00:02.500Z","value":"+0.6821906494"},{"time":"1969-12-31T19:00:02.600Z","value":"+0.4141052596"},{"time":"1969-12-31T19:00:02.700Z","value":"+0.4839676808"},{"time":"1969-12-31T19:00:02.799Z","value":"+0.6164817994"},{"time":"1969-12-31T19:00:02.899Z","value":"+0.3839208491"},{"time":"1969-12-31T19:00:03.000Z","value":"+0.5326568255"},{"time":"1969-12-31T19:00:03.100Z","value":"+0.7048934648"},{"time":"1969-12-31T19:00:03.200Z","value":"+0.4114366824"},{"time":"1969-12-31T19:00:03.299Z","value":"+0.3468985465"},{"time":"1969-12-31T19:00:03.399Z","value":"+0.3246351302"},{"time":"1969-12-31T19:00:03.500Z","value":"+0.6915118625"},{"time":"1969-12-31T19:00:03.600Z","value":"+0.7068696592"},{"time":"1969-12-31T19:00:03.700Z","value":"+0.6209424667"},{"time":"1969-12-31T19:00:03.799Z","value":"+0.3009413561"},{"time":"1969-12-31T19:00:03.899Z","value":"+0.4048481056"},{"time":"1969-12-31T19:00:04.000Z","value":"+0.4003905268"},{"time":"1969-12-31T19:00:04.099Z","value":"+0.2985031280"},{"time":"1969-12-31T19:00:04.200Z","value":"+0.2198118978"},{"time":"1969-12-31T19:00:04.299Z","value":"+0.1877011814"},{"time":"1969-12-31T19:00:04.400Z","value":"+0.6175488612"},{"time":"1969-12-31T19:00:04.500Z","value":"+0.5525243155"},{"time":"1969-12-31T19:00:04.599Z","value":"+0.5358402423"},{"time":"1969-12-31T19:00:04.700Z","value":"+0.6194812629"},{"time":"1969-12-31T19:00:04.799Z","value":"+0.5412144844"},{"time":"1969-12-31T19:00:04.900Z","value":"+0.2939480739"},{"time":"1969-12-31T19:00:05.000Z","value":"+0.5147659537"},{"time":"1969-12-31T19:00:05.099Z","value":"+0.4660889743"},{"time":"1969-12-31T19:00:05.200Z","value":"+0.3531962190"},{"time":"1969-12-31T19:00:05.299Z","value":"+0.3500567996"},{"time":"1969-12-31T19:00:05.400Z","value":"+0.4518886166"},{"time":"1969-12-31T19:00:05.500Z","value":"+0.6252621484"},{"time":"1969-12-31T19:00:05.599Z","value":"+0.7899966440"},{"time":"1969-12-31T19:00:05.700Z","value":"+0.3541271607"},{"time":"1969-12-31T19:00:05.799Z","value":"+0.3063621559"},{"time":"1969-12-31T19:00:05.900Z","value":"+0.3264825297"},{"time":"1969-12-31T19:00:06.000Z","value":"+0.3249007187"},{"time":"1969-12-31T19:00:06.099Z","value":"+0.3502676419"},{"time":"1969-12-31T19:00:06.200Z","value":"+0.4083030769"},{"time":"1969-12-31T19:00:06.299Z","value":"+0.5738076538"},{"time":"1969-12-31T19:00:06.400Z","value":"+0.5351401240"},{"time":"1969-12-31T19:00:06.500Z","value":"+0.6496952368"},{"time":"1969-12-31T19:00:06.599Z","value":"+0.5091953117"},{"time":"1969-12-31T19:00:06.700Z","value":"+0.5513128767"},{"time":"1969-12-31T19:00:06.799Z","value":"+0.5301720965"},{"time":"1969-12-31T19:00:06.900Z","value":"+0.5445154716"},{"time":"1969-12-31T19:00:07.000Z","value":"+0.5561504788"},{"time":"1969-12-31T19:00:07.099Z","value":"+0.7262047298"},{"time":"1969-12-31T19:00:07.200Z","value":"+0.1932458101"},{"time":"1969-12-31T19:00:07.299Z","value":"+0.4853462169"},{"time":"1969-12-31T19:00:07.400Z","value":"+0.1851042192"},{"time":"1969-12-31T19:00:07.500Z","value":"+0.3756329948"},{"time":"1969-12-31T19:00:07.599Z","value":"+0.3778729728"},{"time":"1969-12-31T19:00:07.700Z","value":"+0.5664879777"},{"time":"1969-12-31T19:00:07.799Z","value":"+0.5658749282"},{"time":"1969-12-31T19:00:07.900Z","value":"+0.5930210293"},{"time":"1969-12-31T19:00:08.000Z","value":"+0.4391890307"},{"time":"1969-12-31T19:00:08.099Z","value":"+0.6206792853"},{"time":"1969-12-31T19:00:08.199Z","value":"+0.7489125068"},{"time":"1969-12-31T19:00:08.300Z","value":"+0.6386030315"},{"time":"1969-12-31T19:00:08.400Z","value":"+0.4903679126"},{"time":"1969-12-31T19:00:08.500Z","value":"+0.4694784277"},{"time":"1969-12-31T19:00:08.599Z","value":"+0.3197065779"},{"time":"1969-12-31T19:00:08.699Z","value":"+0.2828747396"},{"time":"1969-12-31T19:00:08.800Z","value":"+0.5330115535"},{"time":"1969-12-31T19:00:08.900Z","value":"+0.7834161894"},{"time":"1969-12-31T19:00:09.000Z","value":"+0.5313220006"},{"time":"1969-12-31T19:00:09.099Z","value":"+0.5511427904"},{"time":"1969-12-31T19:00:09.199Z","value":"+0.7115822559"},{"time":"1969-12-31T19:00:09.300Z","value":"+0.5648455859"},{"time":"1969-12-31T19:00:09.400Z","value":"+0.5539605446"},{"time":"1969-12-31T19:00:09.500Z","value":"+0.5806106396"},{"time":"1969-12-31T19:00:09.599Z","value":"+0.3605914492"},{"time":"1969-12-31T19:00:09.699Z","value":"+0.2531935619"},{"time":"1969-12-31T19:00:09.800Z","value":"+0.7067602752"},{"time":"1969-12-31T19:00:09.900Z","value":"+0.2154107022"},{"time":"1969-12-31T19:00:10.000Z","value":"+0.6324545657"},{"time":"1969-12-31T19:00:10.099Z","value":"+0.6410171983"},{"time":"1969-12-31T19:00:10.199Z","value":"+0.3921283960"},{"time":"1969-12-31T19:00:10.300Z","value":"+0.4939673086"},{"time":"1969-12-31T19:00:10.400Z","value":"+0.7089531209"},{"time":"1969-12-31T19:00:10.500Z","value":"+0.4720632880"},{"time":"1969-12-31T19:00:10.599Z","value":"+0.4359628520"},{"time":"1969-12-31T19:00:10.699Z","value":"+0.5281017058"},{"time":"1969-12-31T19:00:10.800Z","value":"+0.6251006559"},{"time":"1969-12-31T19:00:10.900Z","value":"+0.4826277085"},{"time":"1969-12-31T19:00:11.000Z","value":"+0.3994699997"},{"time":"1969-12-31T19:00:11.099Z","value":"+0.3446585391"},{"time":"1969-12-31T19:00:11.199Z","value":"+0.4436143621"},{"time":"1969-12-31T19:00:11.300Z","value":"+0.6159125044"},{"time":"1969-12-31T19:00:11.400Z","value":"+0.4661748283"},{"time":"1969-12-31T19:00:11.500Z","value":"+0.5483443207"},{"time":"1969-12-31T19:00:11.599Z","value":"+0.6381472018"},{"time":"1969-12-31T19:00:11.699Z","value":"+0.1698805523"},{"time":"1969-12-31T19:00:11.800Z","value":"+0.3163481311"},{"time":"1969-12-31T19:00:11.900Z","value":"+0.6076325807"},{"time":"1969-12-31T19:00:12.000Z","value":"+0.5463368497"},{"time":"1969-12-31T19:00:12.099Z","value":"+0.5217777249"},{"time":"1969-12-31T19:00:12.199Z","value":"+0.2822031195"},{"time":"1969-12-31T19:00:12.300Z","value":"+0.4439961762"},{"time":"1969-12-31T19:00:12.400Z","value":"+0.4715784644"},{"time":"1969-12-31T19:00:12.500Z","value":"+0.5676232884"},{"time":"1969-12-31T19:00:12.599Z","value":"+0.4089428044"},{"time":"1969-12-31T19:00:12.699Z","value":"+0.7045757237"},{"time":"1969-12-31T19:00:12.800Z","value":"+0.5939248578"},{"time":"1969-12-31T19:00:12.900Z","value":"+0.5903423525"},{"time":"1969-12-31T19:00:13.000Z","value":"+0.3284440862"},{"time":"1969-12-31T19:00:13.099Z","value":"+0.4269626878"},{"time":"1969-12-31T19:00:13.199Z","value":"+0.1426276409"},{"time":"1969-12-31T19:00:13.300Z","value":"+0.5019941558"},{"time":"1969-12-31T19:00:13.400Z","value":"+0.5215666178"},{"time":"1969-12-31T19:00:13.500Z","value":"+0.3375151537"},{"time":"1969-12-31T19:00:13.599Z","value":"+0.2926982339"},{"time":"1969-12-31T19:00:13.699Z","value":"+0.3650817493"},{"time":"1969-12-31T19:00:13.800Z","value":"+0.5756929944"},{"time":"1969-12-31T19:00:13.900Z","value":"+0.5750712873"},{"time":"1969-12-31T19:00:14.000Z","value":"+0.5361386209"},{"time":"1969-12-31T19:00:14.099Z","value":"+0.5426032877"},{"time":"1969-12-31T19:00:14.199Z","value":"+0.4600540154"},{"time":"1969-12-31T19:00:14.300Z","value":"+0.7181704069"},{"time":"1969-12-31T19:00:14.400Z","value":"+0.2620513129"},{"time":"1969-12-31T19:00:14.500Z","value":"+0.3121768752"},{"time":"1969-12-31T19:00:14.599Z","value":"+0.6662821188"},{"time":"1969-12-31T19:00:14.699Z","value":"+0.8246814808"},{"time":"1969-12-31T19:00:14.800Z","value":"+0.3222979831"},{"time":"1969-12-31T19:00:14.900Z","value":"+0.2779399876"},{"time":"1969-12-31T19:00:15.000Z","value":"+0.3370134394"},{"time":"1969-12-31T19:00:15.099Z","value":"+0.1711661901"},{"time":"1969-12-31T19:00:15.199Z","value":"+0.3139059938"},{"time":"1969-12-31T19:00:15.300Z","value":"+0.6915627535"},{"time":"1969-12-31T19:00:15.400Z","value":"+0.3436256602"},{"time":"1969-12-31T19:00:15.500Z","value":"+0.5706034352"},{"time":"1969-12-31T19:00:15.599Z","value":"+0.6965472075"},{"time":"1969-12-31T19:00:15.699Z","value":"+0.3370092330"},{"time":"1969-12-31T19:00:15.800Z","value":"+0.3080847848"},{"time":"1969-12-31T19:00:15.900Z","value":"+0.6140981014"},{"time":"1969-12-31T19:00:16.000Z","value":"+0.6780947192"},{"time":"1969-12-31T19:00:16.100Z","value":"+0.4016568704"},{"time":"1969-12-31T19:00:16.199Z","value":"+0.4366286072"},{"time":"1969-12-31T19:00:16.300Z","value":"+0.3122791758"},{"time":"1969-12-31T19:00:16.399Z","value":"+0.5703547849"},{"time":"1969-12-31T19:00:16.500Z","value":"+0.5760076500"},{"time":"1969-12-31T19:00:16.600Z","value":"+0.4149323683"},{"time":"1969-12-31T19:00:16.699Z","value":"+0.5766826481"},{"time":"1969-12-31T19:00:16.800Z","value":"+0.6152911119"},{"time":"1969-12-31T19:00:16.899Z","value":"+0.6323982401"},{"time":"1969-12-31T19:00:17.000Z","value":"+0.5497270690"},{"time":"1969-12-31T19:00:17.100Z","value":"+0.5080936027"},{"time":"1969-12-31T19:00:17.199Z","value":"+0.5803358085"},{"time":"1969-12-31T19:00:17.300Z","value":"+0.5357784094"},{"time":"1969-12-31T19:00:17.399Z","value":"+0.5203603938"},{"time":"1969-12-31T19:00:17.500Z","value":"+0.2443976584"},{"time":"1969-12-31T19:00:17.600Z","value":"+0.6367642994"},{"time":"1969-12-31T19:00:17.699Z","value":"+0.1560468728"},{"time":"1969-12-31T19:00:17.800Z","value":"+0.4209018781"},{"time":"1969-12-31T19:00:17.899Z","value":"+0.5900943610"},{"time":"1969-12-31T19:00:18.000Z","value":"+0.2622784178"},{"time":"1969-12-31T19:00:18.100Z","value":"+0.3879897033"},{"time":"1969-12-31T19:00:18.199Z","value":"+0.7760555431"},{"time":"1969-12-31T19:00:18.300Z","value":"+0.5362709979"},{"time":"1969-12-31T19:00:18.399Z","value":"+0.4031922579"},{"time":"1969-12-31T19:00:18.500Z","value":"+0.6467207473"},{"time":"1969-12-31T19:00:18.600Z","value":"+0.6397997958"},{"time":"1969-12-31T19:00:18.699Z","value":"+0.6746151342"},{"time":"1969-12-31T19:00:18.800Z","value":"+0.7528487699"},{"time":"1969-12-31T19:00:18.899Z","value":"+0.7060081522"},{"time":"1969-12-31T19:00:19.000Z","value":"+0.4146718355"},{"time":"1969-12-31T19:00:19.100Z","value":"+0.4752624496"},{"time":"1969-12-31T19:00:19.199Z","value":"+0.3031450875"}]},{"sampleSetID":"Stream1","samples":[{"time":"1969-12-31T19:00:00.000Z","value":"+104.522291239230000"},{"time":"1969-12-31T19:00:00.100Z","value":"+079.433395171576194"},{"time":"1969-12-31T19:00:00.200Z","value":"+072.228642853371397"},{"time":"1969-12-31T19:00:00.300Z","value":"+044.003118878190698"},{"time":"1969-12-31T19:00:00.400Z","value":"+037.002548829420199"},{"time":"1969-12-31T19:00:00.500Z","value":"+074.183789246285201"},{"time":"1969-12-31T19:00:00.600Z","value":"+000.468663460292873"},{"time":"1969-12-31T19:00:00.700Z","value":"-075.459028376549199"},{"time":"1969-12-31T19:00:00.800Z","value":"-075.721932000382594"},{"time":"1969-12-31T19:00:00.900Z","value":"-116.021422134426999"},{"time":"1969-12-31T19:00:01.000Z","value":"-043.774032039622099"},{"time":"1969-12-31T19:00:01.100Z","value":"+032.034026153384701"},{"time":"1969-12-31T19:00:01.199Z","value":"-002.533873053562730"},{"time":"1969-12-31T19:00:01.300Z","value":"-198.355285613641996"},{"time":"1969-12-31T19:00:01.399Z","value":"-264.788104033583977"},{"time":"1969-12-31T19:00:01.500Z","value":"-317.432498149554021"},{"time":"1969-12-31T19:00:01.600Z","value":"-301.347533990428019"},{"time":"1969-12-31T19:00:01.700Z","value":"-333.642568037237993"},{"time":"1969-12-31T19:00:01.800Z","value":"-414.257695963900005"},{"time":"1969-12-31T19:00:01.899Z","value":"-363.772186835939010"},{"time":"1969-12-31T19:00:02.000Z","value":"-330.537375627893027"},{"time":"1969-12-31T19:00:02.100Z","value":"-200.353979553978007"},{"time":"1969-12-31T19:00:02.200Z","value":"-102.084933684369005"},{"time":"1969-12-31T19:00:02.299Z","value":"+019.444807318650401"},{"time":"1969-12-31T19:00:02.399Z","value":"+112.715696637579995"},{"time":"1969-12-31T19:00:02.500Z","value":"+024.123607018274701"},{"time":"1969-12-31T19:00:02.600Z","value":"-158.018182517720987"},{"time":"1969-12-31T19:00:02.700Z","value":"-255.408546632733987"},{"time":"1969-12-31T19:00:02.799Z","value":"-248.458816420583986"},{"time":"1969-12-31T19:00:02.899Z","value":"-241.240838331170011"},{"time":"1969-12-31T19:00:03.000Z","value":"-253.798073596904004"},{"time":"1969-12-31T19:00:03.100Z","value":"-199.323760614234004"},{"time":"1969-12-31T19:00:03.200Z","value":"-106.688923630787002"},{"time":"1969-12-31T19:00:03.299Z","value":"-014.311802043597099"},{"time":"1969-12-31T19:00:03.399Z","value":"+008.035383608820670"},{"time":"1969-12-31T19:00:03.500Z","value":"+037.713442821176400"},{"time":"1969-12-31T19:00:03.600Z","value":"-058.986792503414598"},{"time":"1969-12-31T19:00:03.700Z","value":"-080.375737953376898"},{"time":"1969-12-31T19:00:03.799Z","value":"+018.184566406959298"},{"time":"1969-12-31T19:00:03.899Z","value":"+045.005231718703698"},{"time":"1969-12-31T19:00:04.000Z","value":"+085.388729402898207"},{"time":"1969-12-31T19:00:04.099Z","value":"+125.287696249785000"},{"time":"1969-12-31T19:00:04.200Z","value":"+212.759324434359996"},{"time":"1969-12-31T19:00:04.299Z","value":"+329.905297879561999"},{"time":"1969-12-31T19:00:04.400Z","value":"+420.068385252002997"},{"time":"1969-12-31T19:00:04.500Z","value":"+384.557987556020976"},{"time":"1969-12-31T19:00:04.599Z","value":"+479.260860857023999"},{"time":"1969-12-31T19:00:04.700Z","value":"+602.442489446178001"},{"time":"1969-12-31T19:00:04.799Z","value":"+704.210185935010031"},{"time":"1969-12-31T19:00:04.900Z","value":"+696.215079813040006"},{"time":"1969-12-31T19:00:05.000Z","value":"+599.410058760799984"},{"time":"1969-12-31T19:00:05.099Z","value":"+376.848681599237011"},{"time":"1969-12-31T19:00:05.200Z","value":"+179.559988478283003"},{"time":"1969-12-31T19:00:05.299Z","value":"+008.298601738453391"},{"time":"1969-12-31T19:00:05.400Z","value":"-231.233203369830989"},{"time":"1969-12-31T19:00:05.500Z","value":"-288.457595861669006"},{"time":"1969-12-31T19:00:05.599Z","value":"-350.447355881801002"},{"time":"1969-12-31T19:00:05.700Z","value":"-369.724877325453974"},{"time":"1969-12-31T19:00:05.799Z","value":"-363.395851446064000"},{"time":"1969-12-31T19:00:05.900Z","value":"-386.008436535678982"},{"time":"1969-12-31T19:00:06.000Z","value":"-327.850089117754010"},{"time":"1969-12-31T19:00:06.099Z","value":"-321.108087333280025"},{"time":"1969-12-31T19:00:06.200Z","value":"-319.276241300011975"},{"time":"1969-12-31T19:00:06.299Z","value":"-297.337117272638011"},{"time":"1969-12-31T19:00:06.400Z","value":"-220.659228800438001"},{"time":"1969-12-31T19:00:06.500Z","value":"-134.985895801157000"},{"time":"1969-12-31T19:00:06.599Z","value":"-095.337469217749899"},{"time":"1969-12-31T19:00:06.700Z","value":"-047.303800274197400"},{"time":"1969-12-31T19:00:06.799Z","value":"-021.023809342450399"},{"time":"1969-12-31T19:00:06.900Z","value":"-052.681238536197498"},{"time":"1969-12-31T19:00:07.000Z","value":"-078.036849221033094"},{"time":"1969-12-31T19:00:07.099Z","value":"-073.174022481798005"},{"time":"1969-12-31T19:00:07.200Z","value":"-150.428140489250012"},{"time":"1969-12-31T19:00:07.299Z","value":"-287.155945788913982"},{"time":"1969-12-31T19:00:07.400Z","value":"-469.971501065619975"},{"time":"1969-12-31T19:00:07.500Z","value":"-471.216111541504006"},{"time":"1969-12-31T19:00:07.599Z","value":"-311.875361530789974"},{"time":"1969-12-31T19:00:07.700Z","value":"-230.449656274049005"},{"time":"1969-12-31T19:00:07.799Z","value":"-250.691087760578995"},{"time":"1969-12-31T19:00:07.900Z","value":"-197.108658645476993"},{"time":"1969-12-31T19:00:08.000Z","value":"-143.772140532593994"},{"time":"1969-12-31T19:00:08.099Z","value":"-124.310401306385003"},{"time":"1969-12-31T19:00:08.199Z","value":"-141.350986283329007"},{"time":"1969-12-31T19:00:08.300Z","value":"-161.264468655884997"},{"time":"1969-12-31T19:00:08.400Z","value":"-106.481474445377998"},{"time":"1969-12-31T19:00:08.500Z","value":"+052.506220016943402"},{"time":"1969-12-31T19:00:08.599Z","value":"+094.046649339170500"},{"time":"1969-12-31T19:00:08.699Z","value":"+166.035006153647004"},{"time":"1969-12-31T19:00:08.800Z","value":"+263.210242884220008"},{"time":"1969-12-31T19:00:08.900Z","value":"+319.001613738292008"},{"time":"1969-12-31T19:00:09.000Z","value":"+194.032502405363005"},{"time":"1969-12-31T19:00:09.099Z","value":"+167.841180110685997"},{"time":"1969-12-31T19:00:09.199Z","value":"+212.154982427432003"},{"time":"1969-12-31T19:00:09.300Z","value":"+278.848599623372991"},{"time":"1969-12-31T19:00:09.400Z","value":"+308.204773764494007"},{"time":"1969-12-31T19:00:09.500Z","value":"+410.385962455318008"},{"time":"1969-12-31T19:00:09.599Z","value":"+573.546197519797033"},{"time":"1969-12-31T19:00:09.699Z","value":"+641.634639439219995"},{"time":"1969-12-31T19:00:09.800Z","value":"+621.130024539860983"},{"time":"1969-12-31T19:00:09.900Z","value":"+575.739553949106039"},{"time":"1969-12-31T19:00:10.000Z","value":"+610.931754709973006"},{"time":"1969-12-31T19:00:10.099Z","value":"+490.089025468665000"},{"time":"1969-12-31T19:00:10.199Z","value":"+342.543521423250979"},{"time":"1969-12-31T19:00:10.300Z","value":"+156.667732089959003"},{"time":"1969-12-31T19:00:10.400Z","value":"+002.473393002022700"},{"time":"1969-12-31T19:00:10.500Z","value":"-076.615397835575607"},{"time":"1969-12-31T19:00:10.599Z","value":"-137.783373577949988"},{"time":"1969-12-31T19:00:10.699Z","value":"-244.918936313589995"},{"time":"1969-12-31T19:00:10.800Z","value":"-364.365862051240015"},{"time":"1969-12-31T19:00:10.900Z","value":"-504.259499236849990"},{"time":"1969-12-31T19:00:11.000Z","value":"-424.607505806760003"},{"time":"1969-12-31T19:00:11.099Z","value":"-349.989962338614987"},{"time":"1969-12-31T19:00:11.199Z","value":"-257.250164582357002"},{"time":"1969-12-31T19:00:11.300Z","value":"-181.227752984674993"},{"time":"1969-12-31T19:00:11.400Z","value":"-171.301153319137995"},{"time":"1969-12-31T19:00:11.500Z","value":"-112.481577995671003"},{"time":"1969-12-31T19:00:11.599Z","value":"+007.316427990625930"},{"time":"1969-12-31T19:00:11.699Z","value":"+048.211433112913703"},{"time":"1969-12-31T19:00:11.800Z","value":"+003.007991866792280"},{"time":"1969-12-31T19:00:11.900Z","value":"+042.090887682862302"},{"time":"1969-12-31T19:00:12.000Z","value":"+040.218370544844497"},{"time":"1969-12-31T19:00:12.099Z","value":"+142.508611699263014"},{"time":"1969-12-31T19:00:12.199Z","value":"+128.609588950838997"},{"time":"1969-12-31T19:00:12.300Z","value":"+093.776481001389399"},{"time":"1969-12-31T19:00:12.400Z","value":"+141.897748011010009"},{"time":"1969-12-31T19:00:12.500Z","value":"+018.588719586412498"},{"time":"1969-12-31T19:00:12.599Z","value":"-016.985156816652001"},{"time":"1969-12-31T19:00:12.699Z","value":"+004.165750660536790"},{"time":"1969-12-31T19:00:12.800Z","value":"+017.903681138509999"},{"time":"1969-12-31T19:00:12.900Z","value":"+009.267422279166910"},{"time":"1969-12-31T19:00:13.000Z","value":"+059.676131805846602"},{"time":"1969-12-31T19:00:13.099Z","value":"+104.039475423422004"},{"time":"1969-12-31T19:00:13.199Z","value":"+128.883398999284992"},{"time":"1969-12-31T19:00:13.300Z","value":"+099.797586021503307"},{"time":"1969-12-31T19:00:13.400Z","value":"+034.789456155121599"},{"time":"1969-12-31T19:00:13.500Z","value":"+122.171062268643993"},{"time":"1969-12-31T19:00:13.599Z","value":"+173.321043805945010"},{"time":"1969-12-31T19:00:13.699Z","value":"+110.898059137703001"},{"time":"1969-12-31T19:00:13.800Z","value":"-007.711013040009560"},{"time":"1969-12-31T19:00:13.900Z","value":"-033.053107569837501"},{"time":"1969-12-31T19:00:14.000Z","value":"+038.163597418012600"},{"time":"1969-12-31T19:00:14.099Z","value":"-031.175772313175202"},{"time":"1969-12-31T19:00:14.199Z","value":"-050.857755494554198"},{"time":"1969-12-31T19:00:14.300Z","value":"-022.413478169188600"},{"time":"1969-12-31T19:00:14.400Z","value":"-027.222527743384600"},{"time":"1969-12-31T19:00:14.500Z","value":"-099.233349197314098"},{"time":"1969-12-31T19:00:14.599Z","value":"-149.744868592170008"},{"time":"1969-12-31T19:00:14.699Z","value":"-251.057602252728003"},{"time":"1969-12-31T19:00:14.800Z","value":"-418.531924421053020"},{"time":"1969-12-31T19:00:14.900Z","value":"-527.050855395532039"},{"time":"1969-12-31T19:00:15.000Z","value":"-510.240975376918016"},{"time":"1969-12-31T19:00:15.099Z","value":"-405.268696887713986"},{"time":"1969-12-31T19:00:15.199Z","value":"-215.799759892645994"},{"time":"1969-12-31T19:00:15.300Z","value":"+088.839846465318701"},{"time":"1969-12-31T19:00:15.400Z","value":"+220.793347276182004"},{"time":"1969-12-31T19:00:15.500Z","value":"+310.761237270276979"},{"time":"1969-12-31T19:00:15.599Z","value":"+226.373714121731012"},{"time":"1969-12-31T19:00:15.699Z","value":"+261.907346883862999"},{"time":"1969-12-31T19:00:15.800Z","value":"+396.793987491592020"},{"time":"1969-12-31T19:00:15.900Z","value":"+426.869907170345982"},{"time":"1969-12-31T19:00:16.000Z","value":"+430.314745902181983"},{"time":"1969-12-31T19:00:16.100Z","value":"+486.610336255254026"},{"time":"1969-12-31T19:00:16.199Z","value":"+521.569548488620967"},{"time":"1969-12-31T19:00:16.300Z","value":"+502.120163828869011"},{"time":"1969-12-31T19:00:16.399Z","value":"+394.162530641410001"},{"time":"1969-12-31T19:00:16.500Z","value":"+295.985949395448984"},{"time":"1969-12-31T19:00:16.600Z","value":"+233.927673045066001"},{"time":"1969-12-31T19:00:16.699Z","value":"+225.174416540171990"},{"time":"1969-12-31T19:00:16.800Z","value":"+217.193812447466996"},{"time":"1969-12-31T19:00:16.899Z","value":"+147.653151674974993"},{"time":"1969-12-31T19:00:17.000Z","value":"+228.429340894842994"},{"time":"1969-12-31T19:00:17.100Z","value":"+375.067399840665018"},{"time":"1969-12-31T19:00:17.199Z","value":"+407.884697263851990"},{"time":"1969-12-31T19:00:17.300Z","value":"+346.831673574340016"},{"time":"1969-12-31T19:00:17.399Z","value":"+333.686588462100019"},{"time":"1969-12-31T19:00:17.500Z","value":"+352.565918685992983"},{"time":"1969-12-31T19:00:17.600Z","value":"+421.100280303075010"},{"time":"1969-12-31T19:00:17.699Z","value":"+486.085605986044982"},{"time":"1969-12-31T19:00:17.800Z","value":"+569.452042178328043"},{"time":"1969-12-31T19:00:17.899Z","value":"+539.363715790630977"},{"time":"1969-12-31T19:00:18.000Z","value":"+450.828696719832976"},{"time":"1969-12-31T19:00:18.100Z","value":"+300.705323047901004"},{"time":"1969-12-31T19:00:18.199Z","value":"+198.109783564298993"},{"time":"1969-12-31T19:00:18.300Z","value":"+209.818893050228013"},{"time":"1969-12-31T19:00:18.399Z","value":"+243.550618422014992"},{"time":"1969-12-31T19:00:18.500Z","value":"+226.388386207389004"},{"time":"1969-12-31T19:00:18.600Z","value":"+226.389979896444999"},{"time":"1969-12-31T19:00:18.699Z","value":"+262.624443795038019"},{"time":"1969-12-31T19:00:18.800Z","value":"+227.688151046967988"},{"time":"1969-12-31T19:00:18.899Z","value":"+146.282483106275009"},{"time":"1969-12-31T19:00:19.000Z","value":"+230.027807565410001"},{"time":"1969-12-31T19:00:19.100Z","value":"+227.087581766189004"},{"time":"1969-12-31T19:00:19.199Z","value":"+290.283955792213021"}]}]} -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # MGJSON (Motion Graphics JSON) 2 | 3 | This repository contains documentation on the mgJSON format and demo files that can be imported in Adobe After Effects to read external dynamic and static data. 4 | 5 | ## Example files 6 | 7 | - **demo**.mgjson: Minimal working example. A static text a static nubmer and a dynamic stream with three samples (keyframes of sorts) 8 | - **gopro**.mgjson: Comprehensive file with many data streams. Created with [GoPro Telemetry](https://goprotelemetryextractor.com/free) 9 | - **dji**.mgjson: File with flight data from a Mavic Pro drone. Created with [DJI SRT Viewer](https://djitelemetryoverlay.com/srt-viewer) 10 | - **from-csv**.mgjson: File with numeric data originally in CSV format. Created with [To mgJSON](https://goprotelemetryextractor.com/csv-gpx-to-mgjson/) 11 | - **from-gpx**.mgjson: File with gps path data originally in GPX format. Created with [To mgJSON](https://goprotelemetryextractor.com/csv-gpx-to-mgjson/) 12 | 13 | The underlying JSON schema is available for download under [Adobe's SensorManager SDK Package](https://console.adobe.io/downloads/ae). 14 | 15 | ## Software that supports mgJSON 16 | 17 | Convert other file formats to mgJSON (CSV, GPX...): 18 | 19 | - [To mgJSON](https://goprotelemetryextractor.com/csv-gpx-to-mgjson/) 20 | 21 | These apps can output mgJSON files: 22 | 23 | - [GoPro Telemetry Extractor](https://goprotelemetryextractor.com) 24 | - [DJI Telemetry Overlay](https://djitelemetryoverlay.com) 25 | 26 | ## Sample projects 27 | 28 | You can find sample projects that use mgJSON files on the [GoPro Telemetry Extractor page](https://goprotelemetryextractor.com). Look for the **Lite templates**. 29 | 30 | ## Videos made with mgJSON 31 | 32 | - [mgJSON playlist on YouTube](https://youtu.be/TAdxsTv4hPU?list=PLgoeWSWqXedI7FbZccAEudt2_t8qPX0Px) 33 | 34 | If you create something with mgJSON, let me know and I'll add it to the list. 35 | 36 | ## Tutorial 37 | 38 | - HKChad created a [tutorial explaining the basics of displaying mgJSON data in After Effects](https://youtu.be/btY0NNFDOUs). Much more complex things are possible, but it's a great way to get started. 39 | 40 | ## Code implementations 41 | 42 | These repositories convert other formats to mgJSON: 43 | 44 | - [tomgjson](https://github.com/JuanIrache/tomgjson) (Go) 45 | - [gopro-telemetry](https://github.com/JuanIrache/gopro-telemetry/blob/master/code/toMgjson.js) (JavaScript) 46 | - [DJI_SRT_Parser](https://github.com/JuanIrache/DJI_SRT_Parser/blob/master/modules/toMGJSON.js) (JavaScript) 47 | 48 | ## Notes 49 | 50 | Real world files filled with data from different sources can have different structures and data types than the examples here, but since online documentation is very scarce, I thought these demos were worth posting. 51 | 52 | For instructions on how to use the imported data, see [Work with Data-driven animation](https://helpx.adobe.com/after-effects/using/data-driven-animations.html) 53 | 54 | Feel free to submit your own samples if you think they can be useful for the community. 55 | 56 | Note that the code has some typos, like _frequecy_ instead of _frequency_. These are necessary for the files to load in some After Effects versions. 57 | --------------------------------------------------------------------------------