CoreMIDI, BRossTools, and Related Items
A few related pages are listed below.
I also used Doxygen to document some of the software libraries.
- Core MIDI header files (*.h) Please note that these header files
were designed to be used with HeaderDocs rather than Doxygen. This will make some of the documentation look a little strange
because of differences in keywords.
The project BRossTools is part of the GitHub repository
and keeps a number of samples of Objective-C code. The Doxygen documentation for this project can be found
When the BRossTools.app executable is run, it displays a menu whose options are listed below. There are in the
order they appear in the window together with the caption for each menu item. The item before the caption
is the internal code for the menu item. After the caption, some of the classes, methods, and functions
that are used in the case are listed. The code for creating the button and their actions can be found
in the class mainMenu.
- m3:"Listen for keystrokes using CoreMIDI Ver 2 (original version)" The system listens to the
first source returned by MIDIGetNumberOfSources, presumably a MIDI keyboard.
- m4:"Kill CoreMIDI Client (ver 2)" -- This halts the MIDI client software that was started with
button m3 and the software will no longer listen for keystrokes.
- m5:"Read a dummy MIDIPacketList" After creating the dummy list, it then parses it.
- m6:"Send a dummy MIDIPacketList" The client sends the contents of the list to the first
destination returned by MIDIGetNumberOfDestinations. This should be some form of MIDI
- b5:"CoreMIDI - Show configuration" A list is displayed of the MIDI devices, entities, and
endpoints together with their endpoints.
- b6:"CoreMIDI - Show sources/destinations" List MIDI sources and destinations. This list may
differ from the soures and destinations shown by button b5.
- b1:"This will trigger the e2 test which opens a window, colors it, and inserts
a few text fields and buttons.
- b2:"Run test1 new window plus fields"
- b3:"Run test2 text handling window"
- b4:"Run test3"
- b7:"Run test5 - CFDictionary, CFArray, etc."
- b8:"Run test4 - Playing with pointers"
The software libraries from Apple are divided into frameworks. In many of the frameworks, there is an identifying prefix at
the beginning of the names, however this is not consistent. Some frameworks do not have an identifying
prefix, and many related frameworks share a prefix.
I ran the C header file for the CoreMIDI framework through Doxygen and posted the results
here. I have been comparing the information with the
Developer Documentation for Core MIDI. This needs to be examined further.
An annotated list
of some of the CoreMIDI data structures can be found here.
CoreMIDI Examples from Internet
I have been searching the internet for examples of Objective-C code using the CoreMIDI library. Unfortunately,
I have had a problem finding examples newer that ten years old. It appears that many of these
examples use API's that are deprecated and it appears that I will have to review all of the samples that I
- "Reading from external controllers with CoreMIDI", Yet Another Learn Cocoa With Me Blog, 21-August-2011,
- jemmons/Create Input with Block.swift, GitHub Gist.
Using (OSX) Core MIDI in a c++ project,
- RieszecleCoreMIDI-example, GitHub.
DerekCook/CoreMidi4J - Core MIDI Service provider Interface (SPI)
for Java 1.7 and abov on OS X - This package uses JNI (Java Native Interface) to allow CoreMidi C code
to be used by Java in place of its default libraries. Reading the code
should enable a better understanding of CoreMIDI.
"XCode 12 & iOS 14 getting crash and not able to know exact reason",
https://developer.apple.com/forums/thread/666546?login=true&page=1#669056022 Apple Developer Forum
volter9/CoreMIDI-Wrapper GitHub project
- "Roadmap for a MIDI Cocoa app", Apple Developer Forums,
- "CoreMIDI CFRunLoop Question", Apple Developer Forums,
The Doxygen documentation for the MIKMIDI library can be found
here. In addition,
this page gives information on how to
map CoreMIDI to the code in other packages, using MIKMIDI as an example.
Some general information about MIDI can be found at the following locations.