Отправка сообщений Midi Sysex в C#

Я пытаюсь понять, как сделать простое приложение Winform, которое отправляет MIDI-сообщение SysEx, когда я нажимаю кнопку, поэтому кнопка 1 отправляет: -

      F0 7F 22 02 50 01 31 00 31 00 31 F7

Кнопка 2 отправляет:

      F0 7F 22 02 50 01 32 00 31 00 31 F7

и так далее...

Мне удалось найти много информации об отправке заметок и данных инструментов, но ничего о sysex. Я играл со ссылкой на Сэнфорд, которая, казалось, приближала меня, но все еще ничего об использовании Sysex.

1 ответ

Доступны различные MIDI-библиотеки, и большинство из них в той или иной форме поддерживают SysEx. Я в основном использовалmanaged-midipackage, хотя раньше я использовал пакет Sanford.

По крайней мере, в управляемом миди отправить сообщение SysEx так же просто, как получить IMidiOutput(обычно из MidiAccessManager), а затем вызов Sendметод. Например:

      // You'd do this part just once, of course...
var accessManager = MidiAccessManager.Default;
var portId = access.Outputs.First().Id;
var port = await access.OpenOutputAsync(portId);

// You'd port this part in your button click handler.
// The data is copied from the question, so I'm assuming it's okay...
var message = new byte[] {
    0xF0, 0x7F, 0x22, 0x02, 0x50, 0x01,
    0x31, 0x00, 0x31, 0x00, 0x31, 0xF7 };

port.Send(message, 0, message.Length, timestamp: 0);
Другие вопросы по тегам