CoreMIDI/MIKMIDI Mapping

When writing code, there is always a temptation to skimp on documentation and people will find ways to justify it. However, when you are selling software, you are selling the usability of the software, and the usability is limited without adequate documentation. However, by the time you realize this, the people who know enough to write the documetation are no longer available. The question then arises as to how you will do the impossible and comprehend and document the incomprehensible. Documentation requires the writing of understandable examples, which would be a lot easier if the examples you had were understandable.

Fortunately, mankind has developed ways of extracting information from hostile enemy forces. I know they aren't the enemy, but it sure feels that way when they don't document. The first thing to do is to find examples of code that uses the undocumented material. You take the API and create a list of the various functions, named structs, classes, constants, and other items. (In this case CoreMIDI.html represents a work in progress. You then get whatever information you can from existing documentation and autodocumentation tools such as HeaderDocs and Doxygen. It's a little bit like solving a murder mystery or cracking a cipher.

Xcode allows you to locate all occurences of a character string in a project or a set of files. So if I want to know how to use MIDIDestinationCreate ( along with MIDIDestinationCreateWithBlock and MIDIDestinationCreateWithProtocol) I can look for all of the occurences of these strings in a sample project, preferably open source where I can access all of the code. For studying CoreMIDI, I chose MIKMIDI to aid in my attack upon the forces of chaos. I found the locations of names from the CoreMIDI API, and this page represents a listing of the appearances that I have found up to now.

I like to write my notes in the form of HTML documents because it allows me to create documents that link all of the information together. Think of it as the scene in the police shows where they put all of the facts on a big corkboard and then stretch colored strings to connect the related pieces of information. I can also link the information on the Apple developer website. I find it upsetting that understanding many software packages these days seems to resemble criminal investigations, but the quality of software documentation these days really is a crime.

Return to main page for BRossTools project

MIDIDestinationCreate

This is referenced in the file DeviceSupport/MIKMIDIClientDestinationEndpoint(.h and .m)

MIDIDestinationCreateWithBlock

Not used in MIKMIDI (TBR)

MIDIReadProc

This maps to MIKMIDIDestinationReadProc (used and implemented in DeviceSupport/MIKMIDIClientDestinationEndpoint) and MIKMIDIPortReadCallback (referenced and implemented in DeviceSupport/MIKMIDIInputPort.m)

MIDISend

This is referenced in the file DeviceSupport/MIKMIDIOutputPort.h

MIDISourceCreate

This is referenced in DeviceSupport/ClientSourceEndpoint(.h and .m)