public Task SendAsync(byte [] mevent, int offset, int length, long timestamp) { if (mevent == null) { throw new ArgumentNullException("mevent"); } if (mevent.Length == 0) { return(completed_task); // do nothing } var events = MidiStream.Convert(mevent, 0, length); if (events.Any()) { var first = events.First(); first.Timestamp = (int)timestamp; impl.Write(first); foreach (var evt in events.Skip(1)) { impl.Write(evt); } } return(completed_task); }
void SendMidiMessage(SmfEvent m) { if ((m.Value & 0xFF) == 0xF0) { WriteSysEx(0xF0, m.Data); } else if ((m.Value & 0xFF) == 0xF7) { WriteSysEx(0xF7, m.Data); } else if ((m.Value & 0xFF) == 0xFF) { return; // meta. Nothing to send. } else { output.Write(0, new MidiMessage(m.StatusByte, m.Msb, m.Lsb)); } }