Borrar filtros
Borrar filtros

How to extract MIDI data from mxarray in simulink ?

3 visualizaciones (últimos 30 días)
Guillaume
Guillaume el 2 de Mzo. de 2023
Respondida: Swaraj el 9 de Mzo. de 2023
Hello,
For a project, I need to use a MIDI controller that sends MIDI files for the keys pressed (so the MIDI message is a 'NoteOn' or 'NoteOff'). To do so, I chose to use a matlab function block and inside it, i wrote a code using midireceive('MidiInput') function (In order to do that, i used coder.extrinsic('midireceive'). Unfortunately, the results from that is that I got the data from my MIDI controller in a mxarray and I don't know how to extract the data correctly (I juste have to know when a key is pressed and which one it is).

Respuesta aceptada

Swaraj
Swaraj el 9 de Mzo. de 2023
To extract the MIDI data correctly from the “mxarray” received by the “midireceive()” function in Simulink, you can use the following steps:
  1. Add a MATLAB Function block to your Simulink model.
  2. Inside the MATLAB Function block, use the “coder.extrinsic()” function to declare the “midireceive()” function as an extrinsic function.
  3. To receive MIDI data from the MIDI controller, use the “midireceive()” function.
  4. Use the “cell()” function to transform the “mxarray” into a cell array.
  5. Loop over the elements of the cell array and extract the MIDI message using the “midimsg()” function.
  6. To detect whether a MIDI message is a "NoteOn" or "NoteOff" message, look at the message's status byte.
  7. Similarly you can extract other details like “channel”, “note”,” velocity” etc.
For more details you can go through the following Documentations.
Documentation for “midireceive”.
Documentation for “mxArrays”.
Documentation for Cell Arrays.

Más respuestas (0)

Categorías

Más información sobre Musical Instrument Digital Interface (MIDI) en Help Center y File Exchange.

Productos


Versión

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by