C# MIDI file player.
This class will Load and play a standard MIDI file in c#.
* The deliverables do not have to be pure c# (allowing for the use of pre-existing MIDI dlls) but all p/invoke calls must be hidden by the c# class. It would be best if the deliverables did not rely on DirectX
* File loading must be fast.
* Recording support is NOT necessary
* The MIDI Player will support standard MIDI files types 0 and 1.
- Invalid files should fail to load gracefully.
* The MIDI Player will allow for selection of the MIDI output device.
* The MIDI Player will have the ability to enumerate each channel once a file is loaded. It will provide at least:
- The names of the track
- The instrument (patch)
* The MIDI Player will allow each MIDI channel to be muted before and while the file is playing.
- Muted channels should stop sounding notes.
* The MIDI Player will support Play, Pause, Continue and Stop
- All notes should stop sounding when Paused
- The the file should begin playing properly updated with all channel events.
* The MIDI Player will support GetPosition SetPosition and GetLength functions
- The the file should begin playing properly updated with all channel events.
* The MIDI Player will allow global Tempo changes before and while the file is playing.
* The MIDI Player will allow Transposing before and while the file is playing
- Except (obviously) the drum channel
* Channel messages such as note on / note off should throw an event that carries specific data such as the note, channel and velocity
Basically I want the ability to play a MIDI file. I want to be able to adjust the tempo, solo and mute each track, and get notification on whats' being sent out to the MIDI port via event callbacks.
## Deliverables
Please do not bid on this if you have no experience with C# .NET, MIDI and especially, writing .NET assemblies (dlls) or desktop applications.