- pattern
- bars[]
- bar
- sequences[]
- array of steps
- step
- length (calculated by sequencer)
- action
- name
- options
- {anything - depends on the action's requirements}
- array of steps
- sequences[]
- bar
- bars[]
The pattern format should be interpreted into a control format, which flattens the parallel sequences into 'frames' based on starting step. For excample, 4 bar patterns of 16 steps would compile into 64 frames.
- sequence
- frames[]
- frame
- channelId
- action
- channelId
- frame
- frames[]