Bus Data

Wikis > Analog3 > Bus Data

Use Cases

The purposes of Analog 3 data bus are:

  1. To share performance control data (performance signal)
    I start with translating MIDI to “Analog 3 Voice Driving Protocol”.
  2. 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.
  3. To control and manage modules (module management message)
    • change a parameter (values, wires)
    • read a parameter
    • list parameters
    • manage IDs
  4. 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.