MIDI.NET allows any .NET developer to access the power of MIDI without doing P/Invokes.
MIDI.NET provide .NET developers with an easy an robust way to employ MIDI in their applications. It handles all unmanaged code for you and interfaces with the Windows Multimedia API. It consists of two major parts: the MidiPorts and the Midi Messages.Come visit MIDI.NET on Facebook.https://www.facebook.com/midi4net
The "Chain of Responsibilities" pattern is used to move MIDI data to and from the MidiPorts. ChainManager classes allow you to easily buildup these chains of processing and provide an excellent extension point for you to customize Midi data handling.
Buffers to handle Midi Streams (out) and System Exclusive Midi messages (in/out) are also handled by the library. These buffers are implemented as Streams and allow easy access of the Midi data contained within.
The wide range of Midi messages are broken down into a group of Midi Message classes that each represent a specific type of Midi message. Also the Meta messages found in Midi Files are present.
The "Factory" pattern is used to allow you to easily create these instances and even pool them for more efficient use of memory (this is also known as the "flyweight" pattern).
MIDI.NET runs on any Windows version except WinRT (it will run on the Windows 8 desktop) that has .NET 4.0 installed. It is build using Visual Studio 2010.
MIDI Spec http://home.roadrunner.com/~jgglatt/tech/midispec.htm Canned Bytes
The namespace of the MIDI.NET assemblies starts with CannedBytes. This is the name of the company I have started a couple of years ago.