midi-dot-net


A library for MIDI programming in C# / .NET.

Overview

This .NET library provides convenient, threadsafe access to MIDI devices. It does this by binding to the Win32 API with P/Invoke and then wrapping that in an object-oriented API which feels right at home in C# / .NET.

For a taste of what the API offers, check out the example snippets.

Features

  • MIDI
  • Scheduling
    • A powerful scheduler that lets you schedule MIDI messages, pause, unpause, and adjust beats-per-minute while it runs.
    • Support for callback messages, so you can schedule call-outs to your own code at specific instants. Callback messages are scheduled just like MIDI messages, so they are subject to pause, unpause, and beats-per-minute as well.
    • Callback messages can schedule additional messages when triggered (self-propagating messages), which allows for a flexible continuation-passing style of control.
    • Built-in NoteOnOffMessage schedules the Off message when the On message triggers.
  • Music Theory
    • Octave-independent Note class which differentiates among enharmonic variants (eg, D♯; and E♭). Notes can be resolved to specific pitches as needed.
    • Scale class built from tonic note and ascent pattern. Includes built-in patterns (Major, Melodic Minor Ascending, Chromatic, etc).
    • Chord class built from tonic note, ascent pattern, and inversion. Includes built-in chord patterns (Major, Seventh, Diminished, etc).
  • Documentation

Not-Yet-Features

  • No support for extended MIDI messages such as System Exclusive ("sysex") messages.
  • No MIDI file I/O.

Requirements

  • .NET Framework 3.5.
  • Visual Studio C# 2008 (Express or Professional) or later.
  • winmm.dll, the Win32 multimedia API which is standard on all modern Windows installs.

Downloads

Source and binary distributions are available in the Downloads section.

Copyright © 2009 Tom Lokovic

Project Information

Labels:
c sharp csharp dot net .net midi music