MIDI Programming

The purpose of this document is to provide information on the software programming environments for MIDI software. This page is a summary, and there will be links to more detailed information.

Return to main page for the BRossTools project.

Apple Systems

The bulk of the programming effort for Apple Operating Systems (macOS, tvOS, iOS, watchOS) is done using Xcode. The software can be downloaded for free and the resulting code is freely redistributable, but XCode is not freely redistributable. (The normal license requires a separate copy to be downloaded for each programmer.)

The following are some of the relevant pages that I have found on the Apple website.

I have not been able to find example programs for MIDI on Apple's website, and most of the pages that I have seen on other websites are several years old and need a lot of updating. I have some example programs in the BRossTools project in the bradleyross/ObjectiveC-Examples repository on GitHub, with a documentation page on GitHub.


The Java SDK (Software Development Kit) can be downloaded for free from Oracle's website. Although it contains a compiler and other utilities, most people use an IDE such as Eclipse or NetBeans to develop Java software.

The following is some documentation for MIDI using Java.

The following are some attempts to provide links between Java and the CoreMIDI framework in macOS.

I had some examples of Java code but they were from years ago and it looks like they will need to revised..


UNIX is available as a set of individual distributions, with each distribution normally obtained from a different source, although some sources may support multiple distributions. UNIX is designed for source code compatibility rather than the interchangability of executable code.

I have found a list of Sound and MIDI software for Linux, I am not sure how they can be combined into a unified system. The problem is that the backbone of the MIDI system is not defined as part of the Linux standard. However, there appears to be an ALSA specification for a MIDI server. If ALSA really is the standard, it will make things somewhat easier.

I have very little experience with MIDI on Linus or other flavors of UNIX. If you want to work in this area, you will have to find somebody a lot more familiar with the subject than myself.


The most commonly used IDE for Microsoft operating systems is Visual Studio. There is a free version, Microsoft Virtual Studio 1999, Community Edition. There are few limitations for development of Open Source software or by organizations with under 250 employees. However. some component libraries may have a separate fee.

Microsoft has some samples of MIDI programs.

VirtualMIDISynth: a Windows MIDI Synth that doesn't suck