{
  "scope": "Constructed MIDI file parsing only, no sound/DAW/driver performance test",
  "rows": [
    {
      "file": "explicit.mid",
      "bytes": 49,
      "result": "PASS",
      "events": 4,
      "explicitStatuses": 4,
      "channels": "1"
    },
    {
      "file": "running.mid",
      "bytes": 46,
      "result": "PASS",
      "events": 4,
      "explicitStatuses": 1,
      "channels": "1"
    },
    {
      "file": "channel-change.mid",
      "bytes": 47,
      "result": "PASS",
      "events": 4,
      "explicitStatuses": 2,
      "channels": "1,2"
    },
    {
      "file": "missing-first-status.mid",
      "bytes": 45,
      "result": "No prior channel status",
      "events": 0,
      "explicitStatuses": 0,
      "channels": ""
    }
  ],
  "cases": [
    {
      "file": "explicit.mid",
      "events": [
        {
          "tick": 0,
          "status": 144,
          "channel": 1,
          "key": 60,
          "velocity": 80,
          "kind": "on",
          "statusStored": true
        },
        {
          "tick": 120,
          "status": 144,
          "channel": 1,
          "key": 60,
          "velocity": 0,
          "kind": "off",
          "statusStored": true
        },
        {
          "tick": 240,
          "status": 144,
          "channel": 1,
          "key": 64,
          "velocity": 80,
          "kind": "on",
          "statusStored": true
        },
        {
          "tick": 360,
          "status": 144,
          "channel": 1,
          "key": 64,
          "velocity": 0,
          "kind": "off",
          "statusStored": true
        }
      ]
    },
    {
      "file": "running.mid",
      "events": [
        {
          "tick": 0,
          "status": 144,
          "channel": 1,
          "key": 60,
          "velocity": 80,
          "kind": "on",
          "statusStored": true
        },
        {
          "tick": 120,
          "status": 144,
          "channel": 1,
          "key": 60,
          "velocity": 0,
          "kind": "off",
          "statusStored": false
        },
        {
          "tick": 240,
          "status": 144,
          "channel": 1,
          "key": 64,
          "velocity": 80,
          "kind": "on",
          "statusStored": false
        },
        {
          "tick": 360,
          "status": 144,
          "channel": 1,
          "key": 64,
          "velocity": 0,
          "kind": "off",
          "statusStored": false
        }
      ]
    },
    {
      "file": "channel-change.mid",
      "events": [
        {
          "tick": 0,
          "status": 144,
          "channel": 1,
          "key": 60,
          "velocity": 80,
          "kind": "on",
          "statusStored": true
        },
        {
          "tick": 120,
          "status": 144,
          "channel": 1,
          "key": 60,
          "velocity": 0,
          "kind": "off",
          "statusStored": false
        },
        {
          "tick": 240,
          "status": 145,
          "channel": 2,
          "key": 64,
          "velocity": 80,
          "kind": "on",
          "statusStored": true
        },
        {
          "tick": 360,
          "status": 145,
          "channel": 2,
          "key": 64,
          "velocity": 0,
          "kind": "off",
          "statusStored": false
        }
      ]
    },
    {
      "file": "missing-first-status.mid",
      "error": "No prior channel status"
    }
  ]
}
