This is a prototype MIDI transport with support for MIDI 2.0. These specifications may not be final.
This project contains:
USB module - Currently not complete. Will act as a USB host or device. In device mode it transfers MIDI messages between the CAN bus and USB, and will also provide stereo audio in and out over USB. In host mode it will only connect to MIDI devices.
DIN module - Is feature complete. Transfers MIDI messages between the CAN bus and the old DIN transport.
Tangle module - Is feature complete (missing some MIDI 2.0 features). Is an analog multiplexer with 8 inputs and 8 outputs which can save mappings to MIDI program change messages.
CV16 module - Currently not complete. Has 16 general purpose analog outputs.
Hardware specs:
- 4-wire flat ribbon-cable
- MicroMatch or WR-MM connector
- Outermost pins of the connector are connected to an RC filter to reduce EMI/EMR
- Selectable end-termination on every module
- CAN FD controller and transceiver
End termination can be enabled on a module with a DPDT switch, or with jumpers. And the terminated position should be clearly marked on the PCB. Split termination is preferred to minimize EMR.
Communication specs:
- Nominal bus speed is 1Mbps: TSEG1 = 700ns, TSEG2 = 200ns, Sync = 100ns.
- Data bus speed can be 4Mbps: TSEG1 = 100ns, TSEG2 = 100ns, Sync = 50ns.
- Payloads over 8 bytes should use the datarate switch, this is optional for smaller payloads.
- 11-bit standard ID where the 4 MSb are the MIDI message type, the remaining bits should be an ID unique for every device on the bus.
- MIDI messages are sent over the bus using the UMP format
- Large sysex messages can transmit multiple MIDI packets in the same CAN frame, up to 64 byte.
The ID field of the CAN frame contains the ID of the transmitting device for arbitration purposes. These IDs should be randomly generated. Also, the device should generate a new ID if it receives a frame with its own ID.