The first part of this learning project is comprised of a managed code assembly employing Platform Invoke to call the unmanaged MME interfaces within Windows.
Memory buffers are passed back and forth from unmanaged code using marshalling attributes. Delegates defined in managed code allow function callbacks to take place from the unmanaged API supporting MIDI input and output.
The final function of this interface assembly is to define an event raising mechanism for building a series of linked MIDI nodes that can be used to create wiring diagrams of MIDI messages. These nodes mainly serve the second assembly
The second assembly consumes the services and objects of the first to provide management and control elements. These include the device browser control (right), DrumView control and a variety of controllers such as sliders to send MIDI messages.
The user interface assembly is intended for creating control surfaces and management tools for programming and customising outboard synthesisers.
Updated to run with Visual C# Express 2005.
Outstanding development topics include receiving System Exclusive messages from bulk data dumps.