static void TestSysex() { // select the LoopBE device using (var dev = MidiDevice.Outputs[1]) { dev.Open(); var buf = new byte[650]; Console.Error.WriteLine("Press any key to exit..."); var b = 0; while (true) { if (0xF7 != b) { for (var i = 0; i < buf.Length - 1; ++i) { buf[i] = (byte)((b + i) & 0x7F); } buf[buf.Length - 1] = 0xF7; var sysex = new MidiMessageSysex(buf); // send sysex message if (Console.KeyAvailable) { return; } dev.Send(sysex); Thread.Sleep(50); } ++b; if (0x80 == b) { b = 0; } } } }
static void TestSysexStream() { var b = 0; var buf = new byte[650]; // select the LoopBE device using (var stm = MidiDevice.Streams[1]) { stm.SendComplete += delegate(object o, EventArgs e) { if (0xF7 != b) { for (var i = 0; i < buf.Length - 1; ++i) { buf[i] = (byte)((b + i) & 0x7F); } ++b; buf[buf.Length - 1] = 0xF7; var sysex = new MidiMessageSysex(buf); Thread.Sleep(100); // send sysex message stm.Send(new MidiEvent(0, sysex)); } if (0x80 == b) { b = 0; } }; stm.Open(); stm.TimeBase = 480; stm.Start(); Console.Error.WriteLine("Press any key to exit..."); if (0xF7 != b) { for (var i = 0; i < buf.Length - 1; ++i) { buf[i] = (byte)((b + i) & 0x7F); } ++b; buf[buf.Length - 1] = 0xF7; var sysex = new MidiMessageSysex(buf); // send sysex message stm.Send(new MidiEvent(0, sysex)); } Console.ReadKey(); } }