Message structure of the CopperLan protocol
The messaging structure is based on a typical opcode/data format with some improvements: the overall message is made of mutiple opcode/data pairs; the message length is variable and is known beforehand by a length declaration. This simplifies the parsing and merging of messages.
Variable geometry allows the creation of agglutinating commands (e.g. modifying a setting together with a note event message). This provides an implicit timing relation to all information within a single message.
Moreover, messages have a set of predefined variations; these are used to adjust/extend the meaning of a basic message (e.g. a preset call message can become a preload message; eventually followed by a single broadcast triggering for all to apply)
