Skip to content
This repository was archived by the owner on Apr 8, 2024. It is now read-only.

MIDI CI

Andrew Mee edited this page Nov 17, 2021 · 4 revisions

MIDI-CI

midi2Processor handles MIDI-CI messages and tries to abstract some of the complexity in creating and processing messages. It does not attempt to solve the logic and handling of that data. It is up to the application to send responses to queries from an Initiator.

void sendDiscoveryRequest(uint8_t group, uint32_t srcMUID, uint8_t* sysexId, uint8_t* famId, uint8_t* modelId, uint8_t* ver, uint8_t ciSupport, uint16_t sysExMax)

This will generate the SysEx data that is then set to the function provided by setRawSysEx, which is then sent based on how the applications wishes to send out data.

Please note the sysExId field is a 3 byte field as defined by the MIDI-CI Documentation. SysEx Id's are provided by the MIDI Association and permission must be obtained before using a SysEx Id. You are able to use the Research Id for testing purposes uint8_t sysexId[3] = {0x7D , 0, 0};

void sendDiscoveryReply(uint8_t group, uint32_t srcMUID, uint32_t destMuid, uint8_t* sysexId, uint8_t* famId, uint8_t* modelId, uint8_t* ver, uint8_t ciSupport, uint16_t sysExMax)

void sendNAK(uint8_t group, uint32_t srcMUID, uint32_t destMuid)

This will generate the SysEx data that is then set to the function provided by setRawSysEx, which is then sent based on how the applications wishes to send out data.

void sendInvalidateMUID(uint8_t group, uint32_t srcMUID, uint32_t terminateMuid);

This will generate the SysEx data that is then set to the function provided by setRawSysEx, which is then sent based on how the applications wishes to send out data.

The application should at this point remove this invalidated MUID from it's internal stores (if any)

###void createCIHeader(uint8_t* sysexHeader, MIDICI midiCiHeader); Used to create the first 13 bytes of a MIDI-CI header. Useful in in conjunction with setRecvUnknownMIDICI

inline void setCheckMUID(bool (*fptr)(uint8_t group, uint32_t muid))

Used to check if an incoming MIDI-CI Message is meany for this Device.

inline void setRecvDiscoveryReply(void (fptr)(uint8_t group, MIDICI ciDetails, uint8_t sysExId, uint8_t* famId, uint8_t* modelId, uint8_t *verId, uint8_t ciSupport, uint16_t maxSysex))

Process Incoming Reply to Discovery Device details. When the class recieves a Discovery Message it will automatically reply with a Reply to Discovery Message. This is sent to the function set by setRawSysEx.

After triggering off a sendDiscoveryRequest replies will be sent here.

###inline void setRecvDiscovery(void (fptr)(uint8_t group, MIDICI ciDetails, uint8_t sysExId, uint8_t* famId, uint8_t* modelId, uint8_t *verId, uint8_t ciSupport, uint16_t maxSysex)) Process Incoming Discovery Request Device details. A response should be sent in return using sendDiscoveryReply

inline void setRecvNAK(void (*fptr)(uint8_t group, MIDICI ciDetails))

inline void setRecvInvalidateMUID(void (*fptr)(uint8_t group, MIDICI ciDetails, uint32_t terminateMuid))

inline void setRecvUnknownMIDICI(void (*fptr)(uint8_t group, umpSysex7Internal * syExMess, MIDICI ciDetails, uint8_t s7Byte))

Used when testing new MIDI-CI messages.

Clone this wiki locally