lock (midi_output)
{
if (!midi_output.disposed)
midi_output.Send(MidiMessage.StartNote(number, volume, channel).RawData);
Timer t = new Timer(_ =>
{
lock (midi_output)
{
if(!midi_output.disposed)
midi_output.Send(MidiMessage.StopNote(number, 0, channel).RawData);
}
},
null, duration, Timeout.Infinite);