¡Comenzaré admitiendo que soy algo nuevo en C#, ya que he estado atascado en VB6 durante muchos años!
Estoy tratando de descubrir cómo hacer una aplicación Winform simple que envíe un mensaje SysEx MIDI cuando hago clic en un botón para que el botón 1 envíe:
F0 7F 22 02 50 01 31 00 31 00 31 F7
El botón 2 envía
F0 7F 22 02 50 01 32 00 31 00 31 F7
y así...
Parece que puedo encontrar mucha información sobre el envío de notas y datos de instrumentos, pero nada realmente sobre sysex. He jugado con la referencia de Sanford que parecía acercarme, pero aún no hay nada sobre el uso de Sysex.
Gracias de antemano por cualquier sugerencia
Solución del problema
Hay varias bibliotecas MIDI disponibles y la mayoría admite SysEx de una forma u otra. Principalmente he usado el managed-midi
paquete, aunque antes he usado el paquete Sanford.
Al menos en midi administrado, enviar un mensaje SysEx es tan simple como obtener un IMidiOutput
(generalmente de un MidiAccessManager
) y luego llamar al Send
método. Por ejemplo:
// 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);
No hay comentarios.:
Publicar un comentario