Отправка сообщений 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-midi
package, хотя раньше я использовал пакет 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);