Use Cases
The purposes of Analog 3 data bus are:
- To share performance control data (performance signal)
I start with translating MIDI to “Analog 3 Voice Driving Protocol”. - To exchange module control signals, such as LFO and envelopes (modifier)
This takes the same role with control voltage. The design should be flexible for types of signal. - To control and manage modules (module management message)
- change a parameter (values, wires)
- read a parameter
- list parameters
- manage IDs
- To synchronize modules (trigger)
CAN ID Addressing
Analog3 mainly uses two types of CAN frames — standard data frame and extended data frame that are described as follows.
struct standard_data_frame = { uint11 id; uint4 data_length; uint8 data[]; }; struct extended_data_frame = { uint29 id; uint4 data_length; uint8 data[]; };
A single component has one or more IDs for:
- The module ID in extended address space
- Zero or more output ID in standard address space
An output port falls into one of following ranks according to its signal priority, listed with priority in descending order
- trigger
- modifier
- performance signal
CAN IDs are dynamically assigned with respect to modules’ ranks.
We use extended address space for component IDs, but their 11-bit MSBs must be all 1. On the other hand, any signal frame ID must avoid address 0x7ff. Thus, any output signal is guaranteed to win any module management messages.