GOOGLE ADS

viernes, 29 de abril de 2022

Envío de mensajes Midi Sysex en C#

¡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-midipaquete, 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 Sendmé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

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...